September 26, 2024: PostgreSQL 17 Released!
Unsupported versions: 7.3 / 7.2 / 7.1
This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for the current version, or one of the other supported versions listed above instead.

SPI_modifytuple

Name

SPI_modifytuple -- Creates a tuple by replacing selected fields of a given tuple

Synopsis

SPI_modifytuple(rel, tuple, nattrs, attnum, Values, Nulls)

Inputs

Relation rel

Used only as source of tuple descriptor for tuple. (Passing a relation rather than a tuple descriptor is a misfeature.)

HeapTuple tuple

Input tuple to be modified

int nattrs

Number of attribute numbers in attnum array

int * attnum

Array of numbers of the attributes that are to be changed

Datum * Values

New values for the attributes specified

char * Nulls

Which new values are NULL, if any

Outputs

HeapTuple

New tuple with modifications

non-NULL if tuple is not NULL and the modify was successful
NULL only if tuple is NULL
SPI_result
SPI_ERROR_ARGUMENT if rel is NULL or tuple is NULL or natts <= 0 or attnum is NULL or Values is NULL.
SPI_ERROR_NOATTRIBUTE if there is an invalid attribute number in attnum (attnum <= 0 or > number of attributes in tuple)

Description

SPI_modifytuple creates a new tuple by substituting new values for selected attributes, copying the original tuple's attributes at other positions. The input tuple is not modified.

Usage

If successful, a pointer to the new tuple is returned. The new tuple is allocated in upper Executor context.