内部関数とは、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 で作成された組み込み済み関数もあります。