aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/utils/cache/relcache.c11
1 files changed, 9 insertions, 2 deletions
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);