Шифрование и секретность в Linux


CREATE LANGUAGE



CREATE LANGUAGE

Определение нового языка, используемого при создании функций.

Синтаксис

CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE 'язык'

HANDLER обработчик

LANCOMPILER 'комментарий'

Параметры

  • TRUSTED. Ключевое слово TRUSTED означает, что PostgreSQL разрешает непривилегированным пользователям обходить ограничения, связанные с наличием прав доступа к языку'. Если в процессе определения языка этот параметр не указывался, то использование языка для создания новых функций будет разрешено лишь суперпользователям.
  • PROCEDURAL. Необязательное ключевое слово PROCEDURAL. Делает команду CREATE LANGUAGE более наглядной, но не влияет на ее работу.
  • язык. Имя нового процедурного языка (без учета регистра символов). Переопределение имен существующих, встроенных языков PostgreSQL не допускается.
  • HANDLER обработчик. Имя заранее определенной функции, вызываемой при выполнении процедур PL.
  • комментарий. Строка, сохраняемая в поле lancompiler системной таблицы pg_language. Секция LANCOMPILER оставлена для обеспечения совместимости, не имеет практического смысла и может быть удалена в следующих версиях PostgreSQL. Тем не менее в версии 7.1.x ее присутствие остается обязательным.


Результаты

  • CREATE. Сообщение выдается при успешном определении нового языка.
  • ERROR: PL handler function обработчик() doesn't exist. Ошибка—функция, указанная в параметре HANDLER, не существует.

Описание

Команда CREATE LANGUAGE загружает новый процедурный язык в подключенную базу данных. Она используется с процедурными языками, указанными с ключом - -with-язык при первоначальной установке PostgreSQL. Например, для включения поддержки pltcl следует передать ключ - -with-tcl в процессе конфигурирования PostgreSQL.

После выполнения этой команды вы сможете создавать новые функции на добавленном языке. Команда CREATE LANGUAGE может выполняться только суперпользователем.

В PostgreSQL 7.1.x (последней версии на момент написания книги) модификация созданных языков не поддерживается. Чтобы изменить определение процедурного языка, необходимо удалить его из базы данных командой DROP LANGUAGE и создать заново.

Примечание 1
Примечание 1

Если команда CREATE LANGUAGE создает язык в базе данных templatel, поддержка этого языка будет автоматически включаться во все базы данных, созданные на основе этого шаблона (используемого по умолчанию).

Чтобы процедурный язык мог использоваться в PostgreSQL, для него должен быть написан специальный обработчик вызовов, откомпилированный в двоичный формат. Следовательно, для написания обработчиков требуются только компилируемые языки (такие, как С и C++).

Обработчик вызовов также должен быть отдельно определен в PostgreSQL как функция, вызываемая без аргументов и возвращающая тип opaque. Подобное определение обработчика предотвращает непосредственный вызов функции в командах SQL.



Содержание раздела