SPI_modifytuple#

SPI_modifytuple

SPI_modifytuple

SPI_modifytuple — создание строки путем замены выбранных полей заданной строки

Синтаксис

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

Описание

SPI_modifytuple создает новую строку, заменяя новыми значениями выбранные столбцы и копируя столбцы исходной строки на другие позиции. Входная строка не изменяется. Новая строка возвращается в контексте верхнего исполнителя.

Эта функция может быть использована только при подключении к SPI. В противном случае она возвращает NULL и устанавливает SPI_result в SPI_ERROR_UNCONNECTED.

Аргументы

Relation rel

Используется только в качестве исходного дескриптора строки для строки. (Передача отношения вместо дескриптора строки является недоработкой).

HeapTuple row

строка для изменения

int ncols

количество столбцов, которые нужно изменить

int * colnum

массив длиной ncols, содержащий номера столбцов, которые должны быть изменены (номера столбцов начинаются с 1)

Datum * values

массив длиной ncols, содержащий новые значения для указанных столбцов

const char * nulls

массив длиной ncols, описывающий, какие новые значения являются нулевыми

Если параметр nulls равен NULL, то функция SPI_modifytuple предполагает, что новые значения не являются NULL. В противном случае, каждый элемент массива nulls должен быть равен ' ', если соответствующее новое значение не является NULL, или 'n', если соответствующее новое значение является NULL. (В последнем случае фактическое значение в соответствующей записи values не имеет значения). Обратите внимание, что nulls не является текстовой строкой, а только массивом: он не требует завершающего символа '\0'.

Возвращаемое значение

новая строка с изменениями, выделенная в верхнем контексте исполнителя или NULL в случае ошибки (см. SPI_result для указания ошибки)

При возникновении ошибки, SPI_result устанавливается следующим образом:

SPI_ERROR_ARGUMENT

Если rel равно NULL, или если row равно NULL, или если ncols меньше или равно 0, или если colnum равно NULL, или если values равно NULL.

SPI_ERROR_NOATTRIBUTE

Если colnum содержит недопустимый номер столбца (меньше или равный 0 или больше количества столбцов в row)

SPI_ERROR_UNCONNECTED

если SPI не активен