v1-0001-set eval targetrange in per-output-tuple context.patch
text/x-patch
Filename: v1-0001-set eval targetrange in per-output-tuple context.patch
Type: text/x-patch
Part: 0
Message:
Re: SQL:2011 application time
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v1-0001
Subject: set eval targetrange in per-output-tuple exprcontext
| File | + | − |
|---|---|---|
| src/backend/executor/nodeModifyTable.c | 1 | 4 |
From 8c97db9391900d766db99834c23c5e4b60cadf01 Mon Sep 17 00:00:00 2001 From: pgaddict <jian.universality@gmail.com> Date: Tue, 5 Dec 2023 17:59:43 +0800 Subject: [PATCH v1 1/1] set eval targetrange in per-output-tuple exprcontext --- src/backend/executor/nodeModifyTable.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c index 88eda012..fe57e592 100644 --- a/src/backend/executor/nodeModifyTable.c +++ b/src/backend/executor/nodeModifyTable.c @@ -3780,7 +3780,6 @@ ExecModifyTable(PlanState *pstate) * Reset per-tuple memory context used for processing on conflict and * returning clauses, to free any expression evaluation storage * allocated in the previous cycle. - * TODO: It sounds like FOR PORTION OF might need to do something here too? */ if (pstate->ps_ExprContext) ResetExprContext(pstate->ps_ExprContext); @@ -4472,9 +4471,7 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags) forPortionOf = (ForPortionOfExpr *) node->forPortionOf; /* Eval the FOR PORTION OF target */ - if (mtstate->ps.ps_ExprContext == NULL) - ExecAssignExprContext(estate, &mtstate->ps); - econtext = mtstate->ps.ps_ExprContext; + econtext = GetPerTupleExprContext(estate); exprState = ExecPrepareExpr((Expr *) forPortionOf->targetRange, estate); targetRange = ExecEvalExpr(exprState, econtext, &isNull); -- 2.34.1