×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

5.5.1. Установка процедурных языков

Процедурный язык должен быть «установлен» в каждую базу данных, где он будет использоваться. Но процедурные языки, установленные в базе данных template1, автоматически доступны во всех последующих созданных базах данных, поскольку их записи в template1 будут скопированы командой CREATE DATABASE. Таким образом, администратор базы данных может решать, какие языки доступны в каких базах данных, и может сделать некоторые языки доступными по умолчанию, если это необходимо.

Для языков, поставляемых со стандартной дистрибуцией, достаточно выполнить CREATE EXTENSION имя_языка, чтобы установить язык в текущую базу данных. Ручная процедура, описанная ниже, рекомендуется только для установки языков, которые не упакованы как расширения.

Ручная установка процедурного языка

Процедурный язык устанавливается в базу данных в пять шагов, которые должны быть выполнены суперпользователем базы данных. В большинстве случаев необходимые SQL-команды должны быть упакованы в скрипт установки «расширения», чтобы CREATE EXTENSION можно было использовать для их выполнения.

  1. Разделяемый объект для обработчика языка должен быть скомпилирован и установлен в соответствующий каталог библиотек. Это работает так же, как сборка и установка модулей с обычными пользовательскими функциями C; см. Раздел 5.1.10.5. Часто обработчик языка зависит от внешней библиотеки, которая предоставляет сам движок языка программирования; если это так, она также должна быть установлена.

  2. Обработчик должен быть объявлен командой

    CREATE FUNCTION имя_функции_обработчика()
        RETURNS language_handler
        AS 'путь_к_разделяемому_объекту'
        LANGUAGE C;
    

    Специальный возвращаемый тип language_handler сообщает системе баз данных, что эта функция не возвращает один из определённых типов данных SQL и не может использоваться напрямую в операторах SQL.

  3. Опционально, обработчик языка может предоставлять «встроенную» функцию обработчика, которая выполняет анонимные блоки кода (команды DO), написанные на этом языке. Если встроенная функция обработчика предоставляется языком, объявите её командой наподобие:

    CREATE FUNCTION имя_встроенной_функции(internal)
        RETURNS void
        AS 'путь_к_разделяемому_объекту'
        LANGUAGE C;
    

  4. Опционально, обработчик языка может предоставлять «валидатор» — функцию, которая проверяет определение функции на корректность без фактического выполнения. Функция-валидатор вызывается командой CREATE FUNCTION, если она существует. Если функция-валидатор предоставляется языком, объявите её командой наподобие:

    CREATE FUNCTION имя_функции_валидатора(oid)
        RETURNS void
        AS 'путь_к_разделяемому_объекту'
        LANGUAGE C STRICT;
    

  5. Наконец, процедурный язык должен быть объявлен командой

    CREATE [TRUSTED] LANGUAGE имя_языка
        HANDLER имя_функции_обработчика
        [INLINE имя_встроенной_функции]
        [VALIDATOR имя_функции_валидатора] ;
    

    Опциональное ключевое слово TRUSTED указывает, что язык не предоставляет доступ к данным, к которым пользователь не имеет доступа иным способом. Доверенные языки предназначены для обычных пользователей базы данных (не суперпользователей) и позволяют им безопасно создавать функции и процедуры. Поскольку функции процедурных языков выполняются внутри сервера базы данных, флаг TRUSTED должен быть указан только для языков, которые не позволяют получать доступ к внутренним данным сервера или файловой системе. Языки PL/pgSQL, PL/Tcl и PL/Perl считаются доверенными; языки PL/TclU, PL/PerlU и PL/PythonU предназначены для предоставления неограниченной функциональности и не должны быть помечены как доверенные.

Пример 5.5.1 показывает, как ручная процедура установки будет работать с языком PL/Perl.

Пример 5.5.1. Ручная установка PL/Perl

Следующая команда сообщает серверу базы данных, где найти разделяемый объект для функции обработчика вызова языка PL/Perl:

CREATE FUNCTION plperl_call_handler() RETURNS language_handler AS
    '$libdir/plperl' LANGUAGE C;

PL/Perl имеет встроенную функцию обработчика и функцию-валидатор, поэтому мы объявляем и их:

CREATE FUNCTION plperl_inline_handler(internal) RETURNS void AS
    '$libdir/plperl' LANGUAGE C STRICT;

CREATE FUNCTION plperl_validator(oid) RETURNS void AS
    '$libdir/plperl' LANGUAGE C STRICT;

Команда:

CREATE TRUSTED LANGUAGE plperl
    HANDLER plperl_call_handler
    INLINE plperl_inline_handler
    VALIDATOR plperl_validator;

затем определяет, что ранее объявленные функции должны вызываться для функций и процедур, где атрибут языка равен plperl.


В установке Digital Q.DataBase по умолчанию обработчик для языка PL/pgSQL собирается и устанавливается в «библиотечный» каталог; более того, сам язык PL/pgSQL установлен во всех базах данных. Если поддержка Tcl настроена, обработчики для PL/Tcl и PL/TclU собираются и устанавливаются в библиотечный каталог, но сам язык по умолчанию не устанавливается ни в одну базу данных. Аналогично, обработчики PL/Perl и PL/PerlU собираются и устанавливаются, если настроена поддержка Perl, и обработчик PL/PythonU устанавливается, если настроена поддержка Python, но эти языки по умолчанию не устанавливаются.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению