aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2017-04-07 12:54:17 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2017-04-07 12:54:23 -0400
commitdbb2a931478a397a2b655eb77e8be8c1ca136f63 (patch)
tree485a1b3502d1c272405a4e120f45457f72b7dae0 /src/backend/executor
parent0c732850d22a2dddb8a2ef64aed3c23731488caa (diff)
downloadpostgresql-dbb2a931478a397a2b655eb77e8be8c1ca136f63.tar.gz
postgresql-dbb2a931478a397a2b655eb77e8be8c1ca136f63.zip
Ensure that ExecPrepareExprList's result is all in one memory context.
Noted by Amit Langote. Discussion: https://postgr.es/m/aad31672-4983-d95d-d24e-6b42fee9b985@lab.ntt.co.jp
Diffstat (limited to 'src/backend/executor')
-rw-r--r--src/backend/executor/execExpr.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/backend/executor/execExpr.c b/src/backend/executor/execExpr.c
index cd0dce150d6..97ec8fb033b 100644
--- a/src/backend/executor/execExpr.c
+++ b/src/backend/executor/execExpr.c
@@ -511,8 +511,12 @@ List *
ExecPrepareExprList(List *nodes, EState *estate)
{
List *result = NIL;
+ MemoryContext oldcontext;
ListCell *lc;
+ /* Ensure that the list cell nodes are in the right context too */
+ oldcontext = MemoryContextSwitchTo(estate->es_query_cxt);
+
foreach(lc, nodes)
{
Expr *e = (Expr *) lfirst(lc);
@@ -520,6 +524,8 @@ ExecPrepareExprList(List *nodes, EState *estate)
result = lappend(result, ExecPrepareExpr(e, estate));
}
+ MemoryContextSwitchTo(oldcontext);
+
return result;
}