21.8. Функции администрирования DuckDB #
-
duckdb.install_extension(extension_name TEXT, repository TEXT DEFAULT 'core') returns#bool Устанавливает расширение DuckDB и включает его автоматическую загрузку в каждом сеансе, который использует pgpro_axe.
Пример 21.32.
SELECT duckdb.install_extension('iceberg'); SELECT duckdb.install_extension('avro', 'community');По умолчанию эта функция может быть вызвана только суперпользователем, так как её можно использовать для загрузки и установки любых расширений. Чтобы позволить вызывать эту функцию другим администраторам, например
my_admin, ему можно выдать следующие права:Пример 21.33.
GRANT ALL ON FUNCTION duckdb.install_extension(TEXT, TEXT) TO my_admin;
Обязательные параметры:
Имя
Тип
Описание
extension_nametextИмя расширения, которое необходимо установить
-
duckdb.load_extension(extension_name TEXT) returns#void Загружает расширение DuckDB только для текущего сеанса. В отличие от функции
duckdb.install_extension, это не настраивает автоматическую загрузку расширения в будущих сеансах.Пример 21.34.
SELECT duckdb.load_extension('iceberg');Обязательные параметры:
Имя
Тип
Описание
extension_nametextИмя загружаемого расширения
-
duckdb.autoload_extension(extension_name TEXT, autoload BOOLEAN) returns#void Указывает, выполняется ли автоматическая загрузка установленного расширения в новых сеансах.
Пример 21.35.
-- Отключить автозагрузку расширения SELECT duckdb.autoload_extension('iceberg', false); -- Включить автозагрузку расширения SELECT duckdb.autoload_extension('iceberg', true);Обязательные параметры:
Имя
Тип
Описание
extension_nametextИмя расширения
autoloadbooleanУказывает, выполняется ли автоматическая загрузка расширения в новых сеансах
-
duckdb.query(query TEXT) returns SETOF#duckdb.row Напрямую выполняет запрос
SELECTк DuckDB. Это может потребоваться, если запрос проще составить в синтаксисе DuckDB или если требуется использовать функцию, которая пока не поддерживается pgpro_axe.Пример 21.36.
В этом запросе
FROMпомещён передSELECTи используется списковое включение (list comprehension). Обе эти функциональности не поддерживаются Postgres Pro.SELECT * FROM duckdb.query('FROM range(10) as a(a) SELECT [a for i in generate_series(0, a)] as arr');-
duckdb.raw_query(extension_name TEXT) returns void# Напрямую выполняет запрос к DuckDB.
В отличие от
duckdb.queryэта функция позволяет выполнять любой запрос, а не толькоSELECT. Основной недостаток заключается в том, что результат запроса записывается в журнал вместо того, чтобы вернуть строки. Рекомендуется по возможности использоватьduckdb.query.-
duckdb.recycle_ddb() returns void# pgpro_axe оставляет экземпляр DuckDB открытым между транзакциями. Это делается для того, чтобы сохранить состояние уровня сеанса, например вручную выполненные команды
SET. Чтобы очистить состояние уровня сеанса, открытый экземпляр DuckDB можно закрыть, вызвав эту функцию.Пример 21.37.
CALL duckdb.recycle_ddb();