[HACKERS] ExecPrepareExprList and per-query context - Mailing list pgsql-hackers

From Amit Langote
Subject [HACKERS] ExecPrepareExprList and per-query context
Date
Msg-id aad31672-4983-d95d-d24e-6b42fee9b985@lab.ntt.co.jp
Whole thread Raw
Responses Re: [HACKERS] ExecPrepareExprList and per-query context  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
As of b8d7f053c5c, ExecPrepareExprList is (must be?) used instead of
ExecPrepareExpr when the caller wants to initialize expressions in a list,
for example, FormIndexDatum.  ExecPrepareExpr doesn't require the caller
to have switched to per-query context, because it itself will.  Same is
not however true for the new ExecPrepareExprList.  That means the List
node that it creates might be in a context that is not necessarily
per-query context, where it previously would be.  That breaks third-party
users of FormIndexDatum that rely on the list to have been created in
per-query context (pg_bulkload was broken by this).

Should ExecPrepareExprList also switch to estate->es_query_cxt?  Or maybe
ExecPrepareExpr could itself detect that passed-in node is a List and
create the list of ExprState nodes by itself.  I guess the reason to
separate list case is because ExecInitExpr() does not take Lists anymore.

Thanks,
Amit





pgsql-hackers by date:

Previous
From: Etsuro Fujita
Date:
Subject: Re: [HACKERS] Declarative partitioning - another take
Next
From: Prakash Itnal
Date:
Subject: [HACKERS] Performance issue with postgres9.6