Re: [HACKERS] May cause infinite loop when initializing rel-cachecontains partitioned table

Поиск
Список
Период
Сортировка
От Amit Langote
Тема Re: [HACKERS] May cause infinite loop when initializing rel-cachecontains partitioned table
Дата
Msg-id 57e3c5e2-454f-72c0-c568-46deae7e3091@lab.ntt.co.jp
обсуждение исходный текст
Ответ на [HACKERS] May cause infinite loop when initializing rel-cache containspartitioned table  (甄明洋 <18612389267@yeah.net>)
Ответы Re: [HACKERS] May cause infinite loop when initializing rel-cachecontains partitioned table  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers
Hi,

On 2017/05/05 17:26, 甄明洋 wrote:
> The function of  initializing rel-cache is RelationCacheInitializePhase3 and in src/backend/utils/cache/relcache.c
file.
> When initializing the partition description information, we forget to check if partition key or descriptor is NULL. 
> Therefore, after the loop restarts, the partition information will be initialized again, resulting in an infinite
loop.
> Code:
> /*
> * Reload partition key and descriptor for a partitioned table.
> */
> if (relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)
> {
> RelationBuildPartitionKey(relation);
> Assert(relation->rd_partkey != NULL);
> 
> 
> RelationBuildPartitionDesc(relation);
> Assert(relation->rd_partdesc != NULL);
> 
> 
> restart = true;
> }

Thanks for bringing it to the notice.  The above code should follow what's
done for other fields that are initialized by
RelationCacheInitializePhase3().  Although, since none of the entries in
the relcache init file are partitioned tables, infinite loop won't occur
in practice, but it's a good idea to fix the code anyway.

Attached patch does that.

Thanks,
Amit

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Tsunakawa, Takayuki"
Дата:
Сообщение: Re: [HACKERS] [PATCH v1] Add and report the new "in_hot_standby"GUC pseudo-variable.
Следующее
От: Masahiko Sawada
Дата:
Сообщение: [HACKERS] Get stuck when dropping a subscription during synchronizing table