unknown
コマンドPL/Tclでは、使用時に自動的にTclのコードを読み込む機能があります。 これは、Tclコードのモジュールを含むと仮定されるpltcl_modulesという特殊なテーブルを認識します。 このテーブルが存在する場合、そのテーブルからunknownモジュールが取り出され、Tclインタプリタの生成後即座に、そのインタプリタに読み込まれます。
実際、unknownモジュールには必要な任意の初期化コードを含めることができますが、通常は、そこにTcl "unknown"プロシージャを定義します。 このプロシージャはTclが呼び出されたプロシージャ名を認識できなかった場合に常に呼び出されます。 このプロシージャのPL/Tcl標準バージョンでは、必要なプロシージャを定義しているpltcl_modulesからのモジュール検索を試みます。 プロシージャが検出された場合、インタプリタに読み込まれ、その後、元々試みられたプロシージャ呼び出しを実行することが許されます。 二次的なpltcl_modfuncsテーブルは、どの関数がどのモジュールで定義されているかに関するインデックスを提供します。 これにより検索がかなり高速になります。
PostgreSQLの配布には、これらのテーブル管理用のサポートスクリプト、pltcl_loadmod、pltcl_listmodおよびpltcl_delmodが含まれています。 同様に標準のunknownモジュールのソースがshare/unknown.pltclに含まれています。 自動読み込み機構をサポートさせるためには、あらかじめ各データベースにこのモジュールを読み込ませる必要があります。
pltcl_modulesおよびpltcl_modfuncsテーブルは全ユーザから読み取り可能でなければなりません。 しかし、その所有者をデータベース管理者とし、データベース管理者のみが書き込み可能とする方が良いでしょう。