SPI_connect

SPI_connect, SPI_connect_ext — подключить функцию на C к менеджеру SPI

Синтаксис

int SPI_connect(void)
int SPI_connect_ext(int options)

Описание

SPI_connect устанавливает подключение вызова функции на C к менеджеру SPI. Данную функцию необходимо использовать, если вы хотите выполнять команды через SPI. Некоторые вспомогательные функции SPI могут вызываться из неподключённых функций.

SPI_connect_ext делает то же самое, но принимает один аргумент, через который можно передать дополнительные флаги. В настоящее время поддерживаются следующие флаги:

SPI_OPT_NONATOMIC

Переводит подключение SPI в неатомарный режим, в котором разрешаются вызовы функций управления транзакциями (SPI_commit, SPI_rollback). В обычном режиме вызов этих функций приводит к немедленной ошибке.

Вызов SPI_connect() равнозначен SPI_connect_ext(0).

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

SPI_OK_CONNECT

при успехе

Эти функции возвращают тип int, а не void по историческим причинам. Все ошибки выводятся через ereport или elog. (В версиях PostgreSQL до 10 некоторые ошибки могли выводиться как значение результата SPI_ERROR_CONNECT.)

SPI_connect

SPI_connect, SPI_connect_ext — connect a C function to the SPI manager

Synopsis

int SPI_connect(void)
int SPI_connect_ext(int options)

Description

SPI_connect opens a connection from a C function invocation to the SPI manager. You must call this function if you want to execute commands through SPI. Some utility SPI functions can be called from unconnected C functions.

SPI_connect_ext does the same but has an argument that allows passing option flags. Currently, the following option values are available:

SPI_OPT_NONATOMIC

Sets the SPI connection to be nonatomic, which means that transaction control calls (SPI_commit, SPI_rollback) are allowed. Otherwise, calling those functions will result in an immediate error.

SPI_connect() is equivalent to SPI_connect_ext(0).

Return Value

SPI_OK_CONNECT

on success

The fact that these functions return int not void is historical. All failure cases are reported via ereport or elog. (In versions before PostgreSQL v10, some but not all failures would be reported with a result value of SPI_ERROR_CONNECT.)

FAQ