diff --git a/src/backend/partitioning/partbounds.c b/src/backend/partitioning/partbounds.c index fdfe712f917..95798f4f664 100644 --- a/src/backend/partitioning/partbounds.c +++ b/src/backend/partitioning/partbounds.c @@ -2564,6 +2564,9 @@ build_merged_partition_bounds(char strategy, List *merged_datums, merged_bounds->kind = NULL; } + /* interleaved_parts is always NULL for join relations. */ + merged_bounds->interleaved_parts = NULL; + Assert(list_length(merged_indexes) == ndatums); merged_bounds->nindexes = ndatums; merged_bounds->indexes = (int *) palloc(sizeof(int) * ndatums); diff --git a/src/include/partitioning/partbounds.h b/src/include/partitioning/partbounds.h index 9db546def6b..7138cb1f2ab 100644 --- a/src/include/partitioning/partbounds.h +++ b/src/include/partitioning/partbounds.h @@ -72,7 +72,9 @@ struct RelOptInfo; /* avoid including pathnodes.h here */ * contain any value that does not belong in another partition. This field * only serves as proof that a particular partition is not interleaved, not * proof that it is interleaved. When we're uncertain, we marked the - * partition as interleaved. + * partition as interleaved. The interleaved_parts field is only ever set for + * RELOPT_BASEREL and RELOPT_OTHER_MEMBER_REL, it is always left NULL for join + * relations. */ typedef struct PartitionBoundInfoData {