diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 30789c1edc5..c3721d9e431 100644 --- a/src/backend/utils/cache/relcache.c +++ b/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);