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.
*/
if (expr->expr_simple_lxid != curlxid)
{
- expr->expr_simple_state = ExecPrepareExpr(expr->expr_simple_expr,
- simple_eval_estate);
+ oldcontext = MemoryContextSwitchTo(simple_eval_estate->es_query_cxt);
+ expr->expr_simple_state = ExecInitExpr(expr->expr_simple_expr, NULL);
expr->expr_simple_in_use = false;
expr->expr_simple_lxid = curlxid;
+ MemoryContextSwitchTo(oldcontext);
}
/*