## 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 rowtype 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`