9.4. 内部関数

内部関数とは、C で作成された、 PostgreSQL に静的にリンクされた関数です。関数定義の "本体" は、関数の C 言語における名前であり、SQL での使用と同じ名前で宣言する必要はありません。(後方互換性のため、C 言語関数名が SQL 名と同じであるという意味として、空の本体も受け付けられます。

通常、バックエンドに存在する全ての内部関数は、データベースクラスタの初期化(initdb) の際に宣言されますが、ユーザはCREATE FUNCTION を使用して、内部関数の別名を更に作成することができます。内部関数は internal という言語名を付けた CREATE FUNCTION によって宣言されます。例えば、sqrt 関数の別名を作成するには以下のようにします。

CREATE FUNCTION square_root(double precision) RETURNS double precision
    AS 'dsqrt'
    LANGUAGE INTERNAL
    WITH (isStrict);

(ほとんどの内部関数は "strict" として宣言されることを想定しています。

Note: "組み込み済み" 関数の全てが上の意味での "内部" ではありません。SQL で作成された組み込み済み関数もあります。