## Name

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.

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; `NULL` only if `row` or `rowdesc` is `NULL`