SPI_modifytuple — создать строку путем замены выбранных полей в заданной строке
HeapTuple SPI_modifytuple(Relationrel, HeapTuplerow, intncols, 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, определяющий, какие
из новых значений имеют значение null
Если 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 не активен