Commit 37e0a016 authored by Tom Lane's avatar Tom Lane

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.
parent 8ce22dd4
...@@ -4577,10 +4577,11 @@ exec_eval_simple_expr(PLpgSQL_execstate *estate, ...@@ -4577,10 +4577,11 @@ exec_eval_simple_expr(PLpgSQL_execstate *estate,
*/ */
if (expr->expr_simple_lxid != curlxid) if (expr->expr_simple_lxid != curlxid)
{ {
expr->expr_simple_state = ExecPrepareExpr(expr->expr_simple_expr, oldcontext = MemoryContextSwitchTo(simple_eval_estate->es_query_cxt);
simple_eval_estate); expr->expr_simple_state = ExecInitExpr(expr->expr_simple_expr, NULL);
expr->expr_simple_in_use = false; expr->expr_simple_in_use = false;
expr->expr_simple_lxid = curlxid; expr->expr_simple_lxid = curlxid;
MemoryContextSwitchTo(oldcontext);
} }
/* /*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment