aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/execCurrent.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/execCurrent.c')
-rw-r--r--src/backend/executor/execCurrent.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/backend/executor/execCurrent.c b/src/backend/executor/execCurrent.c
index 79a1425a974..cf552a016a5 100644
--- a/src/backend/executor/execCurrent.c
+++ b/src/backend/executor/execCurrent.c
@@ -296,6 +296,29 @@ search_plan_tree(PlanState *node, Oid table_oid)
}
/*
+ * Similarly for MergeAppend
+ */
+ case T_MergeAppendState:
+ {
+ MergeAppendState *mstate = (MergeAppendState *) node;
+ ScanState *result = NULL;
+ int i;
+
+ for (i = 0; i < mstate->ms_nplans; i++)
+ {
+ ScanState *elem = search_plan_tree(mstate->mergeplans[i],
+ table_oid);
+
+ if (!elem)
+ continue;
+ if (result)
+ return NULL; /* multiple matches */
+ result = elem;
+ }
+ return result;
+ }
+
+ /*
* Result and Limit can be descended through (these are safe
* because they always return their input's current row)
*/