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_name

text

Имя расширения, которое необходимо установить

duckdb.load_extension(extension_name TEXT) returns void #

Загружает расширение DuckDB только для текущего сеанса. В отличие от функции duckdb.install_extension, это не настраивает автоматическую загрузку расширения в будущих сеансах.

Пример 21.34.

SELECT duckdb.load_extension('iceberg');

Обязательные параметры:

Имя

Тип

Описание

extension_name

text

Имя загружаемого расширения

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

Имя расширения

autoload

boolean

Указывает, выполняется ли автоматическая загрузка расширения в новых сеансах

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();