PL/Tcl предоставляет разработчику функций большинство возможностей языка C, за некоторыми ограничениями, и дополняет их мощными библиотеками обработки строк, доступными в Tcl.
Одним из важных полезных ограничений является то, что весь код выполняется в безопасном контексте интерпретатора Tcl. В дополнение к ограниченному набору команд безопасного Tcl (Safe Tcl), доступно лишь несколько команд для обращения к базе данных через SPI и вывода сообщений с помощью elog(). PL/Tcl не предоставляет средств для доступа к внутренним механизмам сервера баз данных или получения доступа на уровне операционной системы с правами пользователя
Digital Q.DataBase процесса сервера, как это может делать функция на языке C. Таким образом, обычным пользователям базы данных можно доверить использование этого языка; он не наделяет их неограниченными полномочиями.
Еще одним существенным ограничением реализации является то, что функции Tcl нельзя использовать для создания функций ввода-вывода для новых типов данных.
Иногда возникает необходимость в написании функций Tcl, которые не ограничиваются рамками «безопасного» Tcl. Например, может потребоваться функция Tcl для отправки электронной почты. Для таких случаев предусмотрен вариант PL/Tcl под названием PL/TclU
(сокращение от untrusted Tcl — недоверенный Tcl). Это тот же самый язык, но с тем отличием, что в нем используется полнофункциональный интерпретатор Tcl. Если PL/TclU используется, он должен быть установлен как недоверенный процедурный язык, чтобы только
суперпользователи базы данных могли создавать в нем функции. Разработчик PL/TclU
функции должен позаботиться о том, чтобы ее нельзя было использовать для выполнения каких-либо нежелательных действий, так как она сможет делать все то же самое, что и пользователь, вошедший в систему в качестве администратора базы данных.
Код разделяемых объектов для PL/Tcl и
PL/TclU обработчиков вызовов автоматически собирается и
устанавливается в Digital Q.DataBase каталог библиотек,
если поддержка Tcl была указана на этапе конфигурации
процедуры установки. Для установки PL/Tcl
и/или PL/TclU в конкретной базе данных используйте команду
CREATE EXTENSION , например:
CREATE EXTENSION pltcl или
CREATE EXTENSION pltclu.