aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeAppend.c
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2018-07-30 17:03:19 -0400
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2018-07-30 18:45:39 -0400
commitd25d45e4d9221948e6b0d80ce22ce559e99c2f48 (patch)
treeef84c7447dbd667e20a982ecfe2f68c05259e0ec /src/backend/executor/nodeAppend.c
parent1b68010518c9d2ede24e6c721a9c0dc82c358fb1 (diff)
downloadpostgresql-d25d45e4d9221948e6b0d80ce22ce559e99c2f48.tar.gz
postgresql-d25d45e4d9221948e6b0d80ce22ce559e99c2f48.zip
Verify range bounds to bms_add_range when necessary
Now that the bms_add_range boundary protections are gone, some alternative ones are needed in a few places. Author: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp> Discussion: https://postgr.es/m/3437ccf8-a144-55ff-1e2f-fc16b437823b@lab.ntt.co.jp
Diffstat (limited to 'src/backend/executor/nodeAppend.c')
-rw-r--r--src/backend/executor/nodeAppend.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/backend/executor/nodeAppend.c b/src/backend/executor/nodeAppend.c
index 5ce4fb43e1a..86a68d30201 100644
--- a/src/backend/executor/nodeAppend.c
+++ b/src/backend/executor/nodeAppend.c
@@ -171,6 +171,7 @@ ExecInitAppend(Append *node, EState *estate, int eflags)
{
/* We'll need to initialize all subplans */
nplans = list_length(node->appendplans);
+ Assert(nplans > 0);
validsubplans = bms_add_range(NULL, 0, nplans - 1);
}
@@ -179,7 +180,10 @@ ExecInitAppend(Append *node, EState *estate, int eflags)
* immediately, preventing later calls to ExecFindMatchingSubPlans.
*/
if (!prunestate->do_exec_prune)
+ {
+ Assert(nplans > 0);
appendstate->as_valid_subplans = bms_add_range(NULL, 0, nplans - 1);
+ }
}
else
{
@@ -189,6 +193,7 @@ ExecInitAppend(Append *node, EState *estate, int eflags)
* When run-time partition pruning is not enabled we can just mark all
* subplans as valid; they must also all be initialized.
*/
+ Assert(nplans > 0);
appendstate->as_valid_subplans = validsubplans =
bms_add_range(NULL, 0, nplans - 1);
appendstate->as_prune_state = NULL;