41.8. Модули и команда unknown

PL/Tcl поддерживает автозагрузку кода Tcl. Для этого он задействует специальную таблицу, pltcl_modules, предназначенную для размещения модулей кода Tcl. Если эта таблица существует, из таблицы выбирается модуль unknown и загружается в интерпретатор Tcl непосредственно перед первым выполнением функции PL/Tcl в сеансе базы данных. (Это происходит независимо для каждого интерпретатора Tcl, если их несколько в одном сеансе; см. Раздел 41.4.)

Хотя модуль unknown может на самом деле содержать любой нужный вам скрипт инициализации, обычно в нём определяется процедура unknown языка Tcl, которая вызывается всякий раз, когда Tcl не распознаёт имя вызываемой процедуры. Принятая в PL/Tcl версия этой процедуры пытается найти в pltcl_modules модуль, в котором будет определена требуемая процедура. Если такой модуль находится, он загружается в интерпретатор и затем выполнение изначального вызова процедуры может быть продолжено. Дополнительная таблица pltcl_modfuncs содержит индекс, связывающий функции с модулями, в которых они определены, так что поиск выполняется довольно быстро.

В составе Postgres Pro поставляются вспомогательные скрипты для обслуживания этих таблиц: pltcl_loadmod, pltcl_listmod, pltcl_delmod, а также исходный код стандартного модуля unknown в share/unknown.pltcl. Для поддержки механизма автозагрузки этот модуль должен изначально загружаться в каждую базу данных.

Таблицы pltcl_modules и pltcl_modfuncs должны быть доступны на чтение всем, но разрешать запись в них разумно только администратору базы данных (и только он должен быть их владельцем). В качестве меры предосторожности PL/Tcl будет игнорировать таблицу pltcl_modules (и таким образом, не будет пытаться загрузить модуль unknown), если она принадлежит не суперпользователю. Но право на изменение данных в ней можно дать и другим пользователям, если они заслуживают такого доверия.

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