Wiki / Plan Nodes / Control
ProjectSet
ProjectSet
Evaluates set-returning expressions in the target list for rows from its child.
Reading PostgreSQL 18.6.
Description
Evaluates set-returning expressions in the target list for rows from its child.
- Core node tag
- T_ProjectSet
- Structured EXPLAIN Node Type
- ProjectSet
- Inputs
- One child plan
- Output
- Expanded result tuples
- Executor initializer
- ExecInitProjectSet
- Memory mechanism
- unclassified
EXPLAIN names and attributes
Structured formats use the Node Type above. Text-format spellings can also include operation, strategy, join type, scan direction or aggregation-stage attributes.
Text names recorded by this source: ProjectSet.
Parallel-aware and parallel-safe are different plan properties. A node running inside a parallel worker is not necessarily a parallel-aware node.
Memory and temporary storage
This extraction does not assign a universal memory limit or spill policy to this node. Inspect the same-build implementation and its expressions or provider.
Parallel execution and instrumentation
The source callbacks below can coordinate execution or collect worker instrumentation. Their presence is not a blanket claim that this node supports a shared parallel scan or shared state.
Callbacks in this build: none extracted from this node implementation.
Executor implementation notes
nodeProjectSet.c support for evaluating targetlists containing set-returning functions
ProjectSet nodes are inserted by the planner to evaluate set-returning functions in the targetlist. It's guaranteed that all set-returning functions are directly at the top level of the targetlist, i.e. they can't be inside more-complex expressions. If that'd otherwise be the case, the planner adds additional ProjectSet nodes.
Return tuples after evaluating the targetlist (which contains set returning functions).
Reset per-tuple context to free expression-evaluation storage allocated for a potentially previously returned tuple. Note that the SRF argument context has a different lifetime and is reset below.
Check to see if we're still projecting out tuples from a previous scan tuple (because there is a function-returning-set in the projection expressions). If so, try to project another one.
EXPLAIN identity in core source
case T_ProjectSet:
pname = sname = "ProjectSet";
break;EXPLAIN labels in this source build
| Text-format label | Structured node identity |
|---|---|
| ProjectSet | ProjectSet |
Related entries
Documentation and source
- src/backend/commands/explain.c:1382
- src/backend/executor/execProcnode.c:171
- src/backend/executor/nodeProjectSet.c
- src/include/nodes/plannodes.h
Source build
- Version
- 18.6
- Build
- PostgreSQL 18.6 source archive
- Source fingerprint
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f
Compare versions
PostgreSQL 17 → 18: unchanged.
Compares recorded interfaces and attributes. Source fingerprints and build metadata are excluded; an absent sample is not proof of the introduction or removal release.
Related entries
Export JSON · Back to Plan Nodes · Recorded in PostgreSQL 10 through 20; the first sample is not necessarily its introduction.