mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
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.
This commit is contained in:
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user