aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2018-04-09 10:54:28 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2018-04-09 10:54:28 -0300
commit7ba6ee815dc90d4fab7226d343bf72aa28c9aa5c (patch)
tree4843b76976bbe3386849c890236efbcc448ac3ad
parent2c19ea863a27303f462485c4046a850864e638b8 (diff)
downloadpostgresql-7ba6ee815dc90d4fab7226d343bf72aa28c9aa5c.tar.gz
postgresql-7ba6ee815dc90d4fab7226d343bf72aa28c9aa5c.zip
Add missed bms_copy() in perform_pruning_combine_step
We were initializing a BMS to merely reference an existing one, which would cause a double-free (and a crash) when the recursive algorithm tried to intersect it with an empty one. Fix it by creating a copy at initialization time. Reported-by: sqlsmith (by way of Andreas Seltenreich) Author: Amit Langote Discussion: https://postgr.es/m/87in923lyw.fsf@ansel.ydns.eu
-rw-r--r--src/backend/partitioning/partprune.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/backend/partitioning/partprune.c b/src/backend/partitioning/partprune.c
index 417e1fee815..7666c6c412d 100644
--- a/src/backend/partitioning/partprune.c
+++ b/src/backend/partitioning/partprune.c
@@ -2923,7 +2923,8 @@ perform_pruning_combine_step(PartitionPruneContext *context,
if (firststep)
{
/* Copy step's result the first time. */
- result->bound_offsets = step_result->bound_offsets;
+ result->bound_offsets =
+ bms_copy(step_result->bound_offsets);
result->scan_null = step_result->scan_null;
result->scan_default = step_result->scan_default;
firststep = false;