From d25d45e4d9221948e6b0d80ce22ce559e99c2f48 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Mon, 30 Jul 2018 17:03:19 -0400 Subject: 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 Discussion: https://postgr.es/m/3437ccf8-a144-55ff-1e2f-fc16b437823b@lab.ntt.co.jp --- src/backend/executor/nodeMergeAppend.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/backend/executor/nodeMergeAppend.c') diff --git a/src/backend/executor/nodeMergeAppend.c b/src/backend/executor/nodeMergeAppend.c index 64025733de5..be43014cb89 100644 --- a/src/backend/executor/nodeMergeAppend.c +++ b/src/backend/executor/nodeMergeAppend.c @@ -131,6 +131,7 @@ ExecInitMergeAppend(MergeAppend *node, EState *estate, int eflags) { /* We'll need to initialize all subplans */ nplans = list_length(node->mergeplans); + Assert(nplans > 0); validsubplans = bms_add_range(NULL, 0, nplans - 1); } @@ -139,7 +140,10 @@ ExecInitMergeAppend(MergeAppend *node, EState *estate, int eflags) * immediately, preventing later calls to ExecFindMatchingSubPlans. */ if (!prunestate->do_exec_prune) + { + Assert(nplans > 0); mergestate->ms_valid_subplans = bms_add_range(NULL, 0, nplans - 1); + } } else { @@ -149,6 +153,7 @@ ExecInitMergeAppend(MergeAppend *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); mergestate->ms_valid_subplans = validsubplans = bms_add_range(NULL, 0, nplans - 1); mergestate->ms_prune_state = NULL; -- cgit v1.2.3