Skip to content

Commit 37e0a01

Browse files
committed
Save a few cycles in plpgsql simple-expression initialization.
Instead of using ExecPrepareExpr, call ExecInitExpr. The net change here is that we don't apply expression_planner() to the expression tree. There is no need to do so, because that tree is extracted from a fully planned plancache entry, so all the needed work is already done. This reduces the setup costs by about a factor of 2 according to some simple tests. Oversight noted while fooling around with the simple-expression code for previous fix.
1 parent 8ce22dd commit 37e0a01

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/pl/plpgsql/src/pl_exec.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4577,10 +4577,11 @@ exec_eval_simple_expr(PLpgSQL_execstate *estate,
45774577
*/
45784578
if (expr->expr_simple_lxid != curlxid)
45794579
{
4580-
expr->expr_simple_state = ExecPrepareExpr(expr->expr_simple_expr,
4581-
simple_eval_estate);
4580+
oldcontext = MemoryContextSwitchTo(simple_eval_estate->es_query_cxt);
4581+
expr->expr_simple_state = ExecInitExpr(expr->expr_simple_expr, NULL);
45824582
expr->expr_simple_in_use = false;
45834583
expr->expr_simple_lxid = curlxid;
4584+
MemoryContextSwitchTo(oldcontext);
45844585
}
45854586

45864587
/*

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy