SPI_modifytuple
SPI_modifytuple — создать строку, заменяя отдельные поля в данной
Синтаксис
HeapTuple SPI_modifytuple(Relationrel, HeapTuplerow, intncols, int *colnum, Datum *values, const char *nulls)
Описание
SPI_modifytuple создаёт новую строку, подставляя новые значения для указанных столбцов и копируя исходное содержимое остальных столбцов. Исходная строка не изменяется.
Аргументы
RelationrelИспользуется только в качестве дескриптора строки. (Передача отношения вместо собственно дескриптора строки — нехорошая особенность.)
HeapTuplerowстрока, подлежащая изменению
intncolsчисло изменяемых столбцов
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, только если row — NULL
В случае ошибки в SPI_result устанавливается:
SPI_ERROR_ARGUMENTесли
rel—NULL, либоrow—NULL, либоncolsменьше или равно 0, либоcolnum—NULL, либоvalues—NULLSPI_ERROR_NOATTRIBUTEесли
colnumсодержит недопустимый номер столбца (меньше или равен 0, либо больше числа столбцов в строкеrow)