mirror of
https://github.com/postgres/postgres.git
synced 2026-02-15 08:37:56 -05:00
Until now we generated an ExprState for each parameter to a SubPlan and evaluated them one-by-one ExecScanSubPlan. That's sub-optimal as creating lots of small ExprStates a) makes JIT compilation more expensive b) wastes memory c) is a bit slower to execute This commit arranges to evaluate parameters to a SubPlan as part of the ExprState referencing a SubPlan, using the new EEOP_PARAM_SET expression step. We emit one EEOP_PARAM_SET for each argument to a subplan, just before the EEOP_SUBPLAN step. It likely is worth using EEOP_PARAM_SET in other places as well, e.g. for SubPlan outputs, nestloop parameters and - more ambitiously - to get rid of ExprContext->domainValue/caseValue/ecxt_agg*. But that's for later. Author: Andres Freund <andres@anarazel.de> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Reviewed-by: Alena Rybakina <lena.ribackina@yandex.ru> Discussion: https://postgr.es/m/20230225214401.346ancgjqc3zmvek@awork3.anarazel.de |
||
|---|---|---|
| .. | ||
| .gitignore | ||
| bitmapset.h | ||
| execnodes.h | ||
| extensible.h | ||
| lockoptions.h | ||
| makefuncs.h | ||
| memnodes.h | ||
| meson.build | ||
| miscnodes.h | ||
| multibitmapset.h | ||
| nodeFuncs.h | ||
| nodes.h | ||
| params.h | ||
| parsenodes.h | ||
| pathnodes.h | ||
| pg_list.h | ||
| plannodes.h | ||
| primnodes.h | ||
| print.h | ||
| queryjumble.h | ||
| readfuncs.h | ||
| replnodes.h | ||
| subscripting.h | ||
| supportnodes.h | ||
| tidbitmap.h | ||
| value.h | ||