SPI_modifytuple

SPI_modifytuple — crea una fila reemplazando campos seleccionados de una fila dada

Synopsis

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

Descripción

SPI_modifytuple crea una nueva fila sustituyendo nuevos valores para las columnas seleccionadas, copiando las columnas de la fila original en las demás posiciones. La fila de entrada no se modifica. La nueva fila se devuelve en el contexto superior del ejecutor.

Esta función solo se puede usar mientras se está conectado a SPI. De lo contrario, devuelve NULL y establece SPI_result en SPI_ERROR_UNCONNECTED.

Argumentos

Relation rel

se usa solo como origen del descriptor de fila para la fila (pasar una relación en lugar de un descriptor de fila es una mala práctica).

HeapTuple row

fila a modificar

int ncols

número de columnas a cambiar

int * colnum

un array de longitud ncols, que contiene los números de las columnas que se van a cambiar (los números de columna comienzan en 1)

Datum * values

un array de longitud ncols, que contiene los nuevos valores para las columnas especificadas

const char * nulls

un array de longitud ncols, que describe qué nuevos valores son nulos

Si nulls es NULL, entonces SPI_modifytuple asume que ningún valor nuevo es nulo. De lo contrario, cada entrada del array nulls debe ser ' ' si el nuevo valor correspondiente no es nulo, o 'n' si el nuevo valor correspondiente es nulo. (En este último caso, el valor real en la entrada correspondiente de values no importa). Tenga en cuenta que nulls no es una cadena de texto, solo un array: no necesita un terminador '\0'.

Valor de retorno

nueva fila con las modificaciones, asignada en el contexto superior del ejecutor, o NULL en caso de error (consulte SPI_result para una indicación de error)

En caso de error, SPI_result se establece de la siguiente manera:

SPI_ERROR_ARGUMENT

si rel es NULL, o si row es NULL, o si ncols es menor o igual a 0, o si colnum es NULL, o si values es NULL.

SPI_ERROR_NOATTRIBUTE

si colnum contiene un número de columna no válido (menor o igual a 0 o mayor que el número de columnas en row)

SPI_ERROR_UNCONNECTED

si SPI no está activo