Содержание
- 5.10.1. Функции интерфейса
- 5.10.1.1. SPI_connect — подключить функцию на языке C к менеджеру SPI
- 5.10.1.2. SPI_finish — отключить функцию на языке C от менеджера SPI
- 5.10.1.3. SPI_execute — выполнить команду
- 5.10.1.4. SPI_exec — выполнить команду чтения/записи
- 5.10.1.5. SPI_execute_extended — выполнить команду с внешними параметрами
- 5.10.1.6. SPI_execute_with_args — выполнить команду с внешними параметрами
- 5.10.1.7. SPI_prepare — подготовить выражение без его немедленного выполнения
- 5.10.1.8. SPI_prepare_cursor — подготовить выражение без его немедленного выполнения
- 5.10.1.9. SPI_prepare_extended — подготовить выражение без его немедленного выполнения
- 5.10.1.10. SPI_prepare_params — подготовить выражение без его немедленного выполнения
- 5.10.1.11. SPI_getargcount — возвращает количество аргументов, необходимых для оператора, подготовленного функцией
SPI_prepare - 5.10.1.12. SPI_getargtypeid — возвращает OID типа данных для аргумента
выражения, подготовленного функцией
SPI_prepare - 5.10.1.13. SPI_is_cursor_plan — возвращает
true если оператор,
подготовленный SPI_prepare может использоваться с
SPI_cursor_open - 5.10.1.14. SPI_execute_plan — выполнить оператор, подготовленный функцией
SPI_prepare - 5.10.1.15. SPI_execute_plan_extended — выполнить оператор, подготовленный функцией
SPI_prepare - 5.10.1.16. SPI_execute_plan_with_paramlist — выполнить оператор, подготовленный функцией
SPI_prepare - 5.10.1.17. SPI_execp — выполнить оператор в режиме чтения/записи
- 5.10.1.18. SPI_cursor_open — создать курсор с помощью оператора, подготовленного с помощью
SPI_prepare - 5.10.1.19. SPI_cursor_open_with_args — создать курсор, используя запрос и параметры
- 5.10.1.20. SPI_cursor_open_with_paramlist — создать курсор, используя параметры
- 5.10.1.21. SPI_cursor_parse_open — создаёт курсор, используя строку запроса и параметры
- 5.10.1.22. SPI_cursor_find — поиск существующего курсора по имени
- 5.10.1.23. SPI_cursor_fetch — выбрать несколько строк из курсора
- 5.10.1.24. SPI_cursor_move — переместить курсор
- 5.10.1.25. SPI_scroll_cursor_fetch — выбрать несколько строк из курсора
- 5.10.1.26. SPI_scroll_cursor_move — переместить курсор
- 5.10.1.27. SPI_cursor_close — закрытие курсора
- 5.10.1.28. SPI_keepplan — сохранить подготовленное выражение
- 5.10.1.29. SPI_saveplan — сохранить подготовленное выражение
- 5.10.1.30. SPI_register_relation — сделать эфемерное именованное отношение доступным по имени в запросах SPI
- 5.10.1.31. SPI_unregister_relation — удаление эфемерного именованного отношения из реестра
- 5.10.1.32. SPI_register_trigger_data — предоставление доступа к эфемерным данным триггера в запросах SPI
- 5.10.2. Вспомогательные функции интерфейса
- 5.10.2.1. SPI_fname — определяет имя столбца по заданному номеру столбца
- 5.10.2.2. SPI_fnumber — определяет номер столбца по заданному имени столбца
- 5.10.2.3. SPI_getvalue — возвращает строковое значение указанного столбца
- 5.10.2.4. SPI_getbinval — возвращает двоичное значение указанного столбца
- 5.10.2.5. SPI_gettype — возвращает имя типа данных указанного столбца
- 5.10.2.6. SPI_gettypeid — возвращает тип данных OID указанного столбца
- 5.10.2.7. SPI_getrelname — возвращает имя указанного отношения
- 5.10.2.8. SPI_getnspname — возвращает пространство имен указанного отношения
- 5.10.2.9. SPI_result_code_string — возвращает код ошибки в виде строки
- 5.10.3. Управление памятью
- 5.10.3.1. SPI_palloc — выделить память в вышестоящем контексте исполнителя
- 5.10.3.2. SPI_repalloc — перераспределить память в вышестоящем контексте исполнителя
- 5.10.3.3. SPI_pfree — освобождение памяти в верхнем контексте исполнителя
- 5.10.3.4. SPI_copytuple — создание копии строки в верхнем контексте исполнителя
- 5.10.3.5. SPI_returntuple — подготовка к возврату кортежа в виде Datum
- 5.10.3.6. SPI_modifytuple — создать строку путем замены выбранных полей в заданной строке
- 5.10.3.7. SPI_freetuple — освободить строку, выделенную в верхнем контексте исполнителя
- 5.10.3.8. SPI_freetuptable — освободить набор строк, созданный
SPI_execute или аналогичной
функцией - 5.10.3.9. SPI_freeplan — освободить ранее сохраненное подготовленное выражение
- 5.10.4. Управление транзакциями
- 5.10.4.1. SPI_commit — зафиксировать текущую транзакцию
- 5.10.4.2. SPI_rollback — прервать текущую транзакцию
- 5.10.4.3. SPI_start_transaction — устаревшая функция
- 5.10.5. Видимость изменений данных
- 5.10.6. Примеры
Интерфейс Интерфейс программирования сервера
(SPI) предоставляет разработчикам пользовательских
C функций возможность выполнять
SQL команды внутри своих функций или процедур.
SPI представляет собой набор
интерфейсных функций для упрощения доступа к парсеру, планировщику
и исполнителю. SPI также выполняет некоторое
управление памятью.
Примечание
Доступные процедурные языки предоставляют различные средства для выполнения SQL-команд из функций. Большинство этих средств основаны на SPI, поэтому данная документация может быть полезна и пользователям этих языков.
Обратите внимание: если команда, вызванная через SPI, завершается ошибкой, управление не будет возвращено в вашу функцию на языке C. Вместо этого транзакция или подтранзакция, в которой выполняется ваша функция на языке C, будет откачена. (Это может показаться неожиданным, учитывая, что для функций SPI в основном описаны соглашения о возврате ошибок. Однако эти соглашения применяются только к ошибкам, обнаруженным внутри самих функций SPI.) Можно восстановить управление после ошибки, создав собственную подтранзакцию для вызовов SPI, которые могут завершиться сбоем.
SPI функции возвращают неотрицательный результат в случае успешного завершения (либо в виде возвращаемого целочисленного значения, либо в глобальной переменной SPI_result, как описано ниже). В случае ошибки будет возвращен отрицательный результат или NULL will be returned.
Файлы исходного кода, использующие SPI, должны включать заголовочный файл
executor/spi.h.