aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/execPartition.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2018-01-24 16:34:51 -0500
committerRobert Haas <rhaas@postgresql.org>2018-01-24 16:34:51 -0500
commit945f71db845262e7491b5fe4403b01147027576b (patch)
tree341d3e9391c0182f588718c66881aa680e71f46f /src/backend/executor/execPartition.c
parentd6ab7203607a3f43fe41d384f46c15bdac68d745 (diff)
downloadpostgresql-945f71db845262e7491b5fe4403b01147027576b.tar.gz
postgresql-945f71db845262e7491b5fe4403b01147027576b.zip
Avoid referencing off the end of subplan_partition_offsets.
Report by buildfarm member skink and Tom Lane. Analysis by me. Patch by Amit Khandekar. Discussion: http://postgr.es/m/CAJ3gD9fVA1iXQYhfqHP5n_TEd4U9=V8TL_cc-oKRnRmxgdvJrQ@mail.gmail.com
Diffstat (limited to 'src/backend/executor/execPartition.c')
-rw-r--r--src/backend/executor/execPartition.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/backend/executor/execPartition.c b/src/backend/executor/execPartition.c
index 89b7bb4c608..106a96d9103 100644
--- a/src/backend/executor/execPartition.c
+++ b/src/backend/executor/execPartition.c
@@ -87,6 +87,7 @@ ExecSetupPartitionTupleRouting(ModifyTableState *mtstate,
num_update_rri = list_length(node->plans);
proute->subplan_partition_offsets =
palloc(num_update_rri * sizeof(int));
+ proute->num_subplan_partition_offsets = num_update_rri;
/*
* We need an additional tuple slot for storing transient tuples that
@@ -481,6 +482,7 @@ ExecCleanupTupleRouting(PartitionTupleRouting *proute)
* result rels are present in the UPDATE subplans.
*/
if (proute->subplan_partition_offsets &&
+ subplan_index < proute->num_subplan_partition_offsets &&
proute->subplan_partition_offsets[subplan_index] == i)
{
subplan_index++;