Avoid theoretical infinite loop loading relcache partition key.

Amit Langote, per report from 甄明洋

Discussion: http://postgr.es/m/57bd1e1.1886.15bd7b79cee.Coremail.18612389267@yeah.net
pull/18/merge
Robert Haas 9 years ago
parent e17628145a
commit 622c82279d
  1. 11
      src/backend/utils/cache/relcache.c

@ -3858,13 +3858,20 @@ RelationCacheInitializePhase3(void)
}
/*
* Reload partition key and descriptor for a partitioned table.
* Reload the partition key and descriptor for a partitioned table.
*/
if (relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)
if (relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE &&
relation->rd_partkey == NULL)
{
RelationBuildPartitionKey(relation);
Assert(relation->rd_partkey != NULL);
restart = true;
}
if (relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE &&
relation->rd_partdesc == NULL)
{
RelationBuildPartitionDesc(relation);
Assert(relation->rd_partdesc != NULL);

Loading…
Cancel
Save