内部関数とは、Cで作成された、PostgreSQLサーバに静的にリンクされた関数です。 関数定義の「本体」では関数のC言語における名前を指定します。 この名前をSQLでの使用のために宣言される名前と同じにする必要はありません。 (後方互換性のため、C言語関数名がSQL名と同じであるという意味として、空の本体も受け付けられます。)
通常、サーバに存在するすべての内部関数は、データベースクラスタの初期化(18.2. データベースクラスタの作成参照)の際に宣言されますが、ユーザはCREATE FUNCTION
を使用して、内部関数の別名をさらに作成することができます。
内部関数はinternal
という言語名を付けたCREATE FUNCTION
によって宣言されます。
例えば、sqrt
関数の別名を作成するには以下のようにします。
CREATE FUNCTION square_root(double precision) RETURNS double precision AS 'dsqrt' LANGUAGE internal STRICT;
(ほとんどの内部関数は「strict」として宣言されることを想定しています。)
「定義済みの」関数のすべてが上の意味での「内部」ではありません。 SQLで作成された定義済み関数もあります。