29.4. Расширяемость #

29.4.1. Поддержка встраивания кода для расширений #

Если вы хотите компилировать расширения Postgres Pro с поддержкой встраивания JIT, настройте окружение для разработки как описано в Подразделе 16.1.5.

Механизм JIT в Postgres Pro может встраивать в код реализации функций (типа C и internal), а также операторов, использующих эти функции. Чтобы это встраивание выполнялось для функций в расширениях, должно быть доступно определение этих функций. При сборке с использованием PGXS расширения для сервера, скомпилированного с JIT-поддержкой LLVM, соответствующие файлы будут собираться и устанавливаться автоматически.

Соответствующие файлы должны устанавливаться в $pkglibdir/bitcode/$extension/, а информация о них должна вноситься в $pkglibdir/bitcode/$extension.index.bc, где $pkglibdir — каталог, который выдаёт команда pg_config --pkglibdir, а $extension — базовое имя разделяемой библиотеки данного расширения.

Примечание

Для функций, встроенных в Postgres Pro, двоичный код устанавливается в $pkglibdir/bitcode/postgres.

29.4.2. Подключаемые провайдеры JIT #

Postgres Pro предоставляет реализацию JIT на базе LLVM. Интерфейс JIT предусматривает динамическое подключение провайдера и позволяет менять провайдер без перекомпиляции (хотя в настоящее время при сборке предоставляется поддержка встраивания только для LLVM). Провайдер выбирается параметром jit_provider.

29.4.2.1. Интерфейс провайдера JIT #

Провайдер JIT загружается путём динамической загрузки заданной разделяемой библиотеки. Для поиска её используется обычный путь поиска библиотек. Чтобы предоставить требуемые функции-обработчики провайдера JIT и показать, что библиотека является реализацией провайдера JIT, она должна содержать функцию, имеющую в C имя _PG_jit_provider_init. Этой функции передаётся структура, которую нужно заполнить указателями на функции-обработчики определённых действий.

struct JitProviderCallbacks
{
    JitProviderResetAfterErrorCB reset_after_error;
    JitProviderReleaseContextCB release_context;
    JitProviderCompileExprCB compile_expr;
};

extern void _PG_jit_provider_init(JitProviderCallbacks *cb);
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy