---
name: "SPI_returntuple"
section: "3"
platform: "linux"
package: "postgresql"
version: "18.6-4"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SPI_returntuple"
---

# SPI\_returntuple(3)

prepare to return a tuple as a Datum

## 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.

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)
