PostgreSQL 9.1.24 Documentation
Prev | Up |  | Next

# SPI_modifytuple

## Name

SPI_modifytuple -- create a row by replacing selected fields of a given row

## Synopsis

    HeapTuple SPI_modifytuple(Relation rel, HeapTuple row, int ncols,
                              int * colnum, Datum * values, const char * nulls)

## Description

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

## Arguments

`Relation `rel``

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

`HeapTuple `row``

  row to be modified

`int `ncols``

  number of column numbers in the array `colnum`

`int * `colnum``

  array of the numbers of the columns that are to be changed (column numbers start at 1)

`Datum * `values``

  new values for the specified columns

`const char * `Nulls``

  which new values are null, if any (see `SPI_execute_plan` for the format)

## Return Value

new row with modifications, allocated in the upper executor context; `NULL` only if `row` is `NULL`

On error, `SPI_result` is set as follows:

`SPI_ERROR_ARGUMENT`

  if `rel` is `NULL`, or if `row` is `NULL`, or if `ncols` is less than or equal to 0, or if `colnum` is `NULL`, or if `values` is `NULL`.

`SPI_ERROR_NOATTRIBUTE`

  if `colnum` contains an invalid column number (less than or equal to 0 or greater than the number of column in `row`)

Prev | Home | Next
SPI_returntuple | Up | SPI_freetuple