SPI_modifytuple
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 неактивен
DISCARD
DISCARD — discard session state
Synopsis
DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP }
Description
DISCARD
releases internal resources associated with a database session. This command is useful for partially or fully resetting the session's state. There are several subcommands to release different types of resources; the DISCARD ALL
variant subsumes all the others, and also resets additional state.
Parameters
PLANS
Releases all cached query plans, forcing re-planning to occur the next time the associated prepared statement is used.
SEQUENCES
Discards all cached sequence-related state, including
currval()
/lastval()
information and any preallocated sequence values that have not yet been returned bynextval()
. (See CREATE SEQUENCE for a description of preallocated sequence values.)TEMPORARY
orTEMP
Drops all temporary tables created in the current session.
ALL
Releases all temporary resources associated with the current session and resets the session to its initial state. Currently, this has the same effect as executing the following sequence of statements:
CLOSE ALL; SET SESSION AUTHORIZATION DEFAULT; RESET ALL; DEALLOCATE ALL; UNLISTEN *; SELECT pg_advisory_unlock_all(); DISCARD PLANS; DISCARD TEMP; DISCARD SEQUENCES;
Notes
DISCARD ALL
cannot be executed inside a transaction block.
Compatibility
DISCARD
is a PostgreSQL extension.