--- title: "SPI_returntuple" id: spi-spi-returntuple pg_version: "20devel" --- # SPI_returntuple — prepare to return a tuple as a Datum ## Synopsis ``` HeapTupleHeader SPI_returntuple(HeapTuple row, TupleDesc rowdesc) ``` ## Description `SPI_returntuple` makes a copy of a row in the upper executor context, returning it in the form of a row type `Datum`. The returned pointer need only be converted to `Datum` via `PointerGetDatum` before returning. This function can only be used while connected to SPI. Otherwise, it returns NULL and sets `SPI_result` to `SPI_ERROR_UNCONNECTED`. Note that this should be used for functions that are declared to return composite types. It is not used for triggers; use `SPI_copytuple` for returning a modified row in a trigger. ## Arguments **`HeapTuple row`** row to be copied **`TupleDesc rowdesc`** descriptor for row (pass the same descriptor each time for most effective caching) ## Return Value `HeapTupleHeader` pointing to copied row, or `NULL` on error (see `SPI_result` for an error indication)