SPI_IS_CURSOR_PLAN(3)
π NAME π
okay so bestie, this is the SPI_IS_CURSOR_PLAN(3) page from the PostgreSQL 17.11 docs β¨ β the actual name is SPI_is_cursor_plan, and it returns true if a statement prepared by SPI_prepare can be used with SPI_cursor_open. π
πΈ SYNOPSIS πΈ
bool SPI_is_cursor_plan(SPIPlanPtr plan)
π¦ DESCRIPTION π¦
okay so here's the tea: SPI_is_cursor_plan returns true if a statement prepared by SPI_prepare can be passed as an argument to SPI_cursor_open, or false if that is not the case. π
the criteria are literally:
- the plan represents one single command, and
- that command returns tuples to the caller.
for example, SELECT is allowed unless it contains an INTO clause, and UPDATE is allowed only if it contains a RETURNING clause. no cap. π
π§ ARGUMENTS π§
SPIPlanPtr planβ the prepared statement (returned bySPI_prepare). π«Ά
β RETURN VALUE β
true or false to indicate if the plan can produce a cursor or not, with SPI_result set to zero. β
if it is not possible to determine the answer (for example, if the plan is NULL or invalid, or if called when not connected to SPI), then SPI_result is set to a suitable error code and false is returned. π
lowkey important: thatNULL/invalid/not-connected-to-SPI case is the "can't even tell" vibe, and it still comes backfalseβ withSPI_resultcarrying the error code. π
okay bestie, that's the whole page β from the PostgreSQL 17.11 docs, dated 2026, manual page SPI_IS_CURSOR_PLAN(3). slay, go open some cursors responsibly π
β¨
π¦ where this page comes from
- opensuse-leap 16.0: postgresql17-docs 17.11-160000.1.1 Β· PostgreSQL
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms