aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/util/relnode.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2018-02-05 17:31:57 -0500
committerRobert Haas <rhaas@postgresql.org>2018-02-05 17:31:57 -0500
commitf069c91a5793ff6b7884120de748b2005ee7756f (patch)
tree2b5125e6ba39362e8eafa0f34e6b3f023432f801 /src/backend/optimizer/util/relnode.c
parent1eb5d43beed9d8cdc61377867f0a53eb2cfba0c4 (diff)
downloadpostgresql-f069c91a5793ff6b7884120de748b2005ee7756f.tar.gz
postgresql-f069c91a5793ff6b7884120de748b2005ee7756f.zip
Fix possible crash in partition-wise join.
The previous code assumed that we'd always succeed in creating child-joins for a joinrel for which partition-wise join was considered, but that's not guaranteed, at least in the case where dummy rels are involved. Ashutosh Bapat, with some wordsmithing by me. Discussion: http://postgr.es/m/CAFjFpRf8=uyMYYfeTBjWDMs1tR5t--FgOe2vKZPULxxdYQ4RNw@mail.gmail.com
Diffstat (limited to 'src/backend/optimizer/util/relnode.c')
-rw-r--r--src/backend/optimizer/util/relnode.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c
index ac5a7c9553d..5c368321e6e 100644
--- a/src/backend/optimizer/util/relnode.c
+++ b/src/backend/optimizer/util/relnode.c
@@ -1662,11 +1662,14 @@ build_joinrel_partition_info(RelOptInfo *joinrel, RelOptInfo *outer_rel,
*/
joinrel->part_scheme = part_scheme;
joinrel->boundinfo = outer_rel->boundinfo;
- joinrel->nparts = outer_rel->nparts;
partnatts = joinrel->part_scheme->partnatts;
joinrel->partexprs = (List **) palloc0(sizeof(List *) * partnatts);
joinrel->nullable_partexprs =
(List **) palloc0(sizeof(List *) * partnatts);
+ joinrel->nparts = outer_rel->nparts;
+ joinrel->part_rels =
+ (RelOptInfo **) palloc0(sizeof(RelOptInfo *) * joinrel->nparts);
+
/*
* Construct partition keys for the join.