SPI_MODIFYTUPLE(3)
π SPI_modifytuple π
okay bestie, welcome to the SPI_modifytuple(3) page from the PostgreSQL 13.23 Documentation. This one is literally about making a new row by swapping out selected fields of an existing row β and yes, the original row stays untouched. Main character energy: the new row gets returned in the upper executor context. Periodt. β¨
π NAME π
SPI_modifytuple β create a row by replacing selected fields of a given row π
β¨ SYNOPSIS β¨
HeapTuple SPI_modifytuple(Relation rel, HeapTuple row, int ncols,
int * colnum, Datum * values, const char * nulls)
πΈ DESCRIPTION πΈ
So the way this works: SPI_modifytuple creates a brand-new row by substituting new values for selected columns, and it copies the original rowβs columns at the other positions. The input row is not modified β no cap. The new row is returned in the upper executor context. π«Ά
This function can only be used while connected to SPI. Otherwise, it returns NULL and sets SPI_result to SPI_ERROR_UNCONNECTED. Thatβs the vibe check, bestie. π
π¦ ARGUMENTS π¦
Relation relβ used only as the source of the row descriptor for the row. Passing a relation rather than a row descriptor is a misfeature. (I donβt make the rules π)HeapTuple rowβ row to be modified.int ncolsβ number of columns to be changed.int * colnumβ an array of lengthncols, containing the numbers of the columns that are to be changed (column numbers start at1).Datum * valuesβ an array of lengthncols, containing the new values for the specified columns.const char * nullsβ an array of lengthncols, describing which new values are null.
If nulls is NULL then SPI_modifytuple assumes that no new values are null. Otherwise, each entry of the nulls array should be ' ' if the corresponding new value is non-null, or 'n' if the corresponding new value is null. (In the latter case, the actual value in the corresponding values entry doesnβt matter.) Note that nulls is not a text string, just an array: it does not need a '\0' terminator. π§
π RETURN VALUE π
New row with modifications, allocated in the upper executor context, or NULL on error (see SPI_result for an error indication).
On error, SPI_result is set as follows:
SPI_ERROR_ARGUMENTβ ifrelisNULL, or ifrowisNULL, or ifncolsis less than or equal to0, or ifcolnumisNULL, or ifvaluesisNULL.SPI_ERROR_NOATTRIBUTEβ ifcolnumcontains an invalid column number (less than or equal to0or greater than the number of columns inrow).SPI_ERROR_UNCONNECTEDβ if SPI is not active.
sign-off era: brought to you by PostgreSQL 13.23, dated 2025 β this page ate, no crumbs π β¨π
π¦ where this page comes from
- opensuse-leap 16.0: postgresql13-docs 13.23-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