PL/Tclとは、Postgresデータベースシステムに ロード可能な手続型言語で、Tcl言語を使った関数とトリガプロシージャを 作成できます。
このパッケージのオリジナルは、Jan Wieck氏によって書かれました。
PL/Tclでは、数点の制約を除いて、C言語で書かれた関数と同じような 能力のものを提供します。
全ては安全なTclインタープリタで実行されていて、それは良い制約と言えます。 安全なTclの制約付きのコマンドセットに、 SPIを使ってデータベースに接続するコマンドと、 elog()を使ってメッセージを処理するためのコマンドなどの、 わずかなコマンドが追加されています。C関数では可能ですが、 Tclでは、データベースのバックエンド内部に接続する方法や、 Postgresのユーザレベルの権限で、 OSレベルの接続を行う方法はありません。また、データベースの 権限がないユーザはこの言語を使用することはできません。
その他実装上の制約としては、Tclの手続では新しいデータ型のための 出入力関数を作成することはできません。
安全なTclに制約されないTcl関数を書くことが望ましい場合があります。 例えば、メールを送るTcl関数が必要な場合などでは、PL/TclU(安全ではないTcl) と言った、異なるPL/Tclがあります。これは、完全なTclインタプリターが 使用されているという点以外の違いはありません。PL/TclUを 使用する場合は、信用されていない手続き型言語としてインストールさせる 必要があります。そうすることによって、データベースの 管理者のみが関数を作成することができるようになります。 PL/TclU関数の作者は、データベース管理者としてログインしたユーザができる あらゆることの実行が可能となるので、その関数が意図されたこと以外のことを 行わないように細心の注意を払う必要があります。
Tcl/Tkサポートがインストールの設定の際に指定されていれば、 PL/TclとPL/TclUコールハンドラのシェアードオブジェクトは 自動的にPostgresのライブラリ ディレクトリに構築されます。PL/Tcl、またはPL/TclUを 特定のデータベースにインストールしたい場合は createlangをご利用下さい。