fmgr

fmgr

Function ManaGeRのこと。

PostgreSQL内部ではデータ型抽象化のためDatumが利用されており、この値引数に処理を行いDatumを返すような関数の機構を提供し管理するのがFunction Managerである。

PostgreSQLのエグゼキュータ処理の根幹をなすこともあり関係ファイルは多岐にわたるが、

あたりを見ると大枠をつかむ事ができる。


SQLから呼び出し可能な関数はC言語では、

Datum (*PGFunction)(FunctionCallInfo fcinfo);

として定義されており、この型の関数ポインタであればどのようなものでも呼び出すことができる。SQLレベルでの関数の定義はCREATE FUNCTION構文を使い、ここで引数などを定義する。この引数の値は呼び出し時にfcinfo->argsに格納されているため、同一関数で様々な数や型の引数を受け取り処理を分岐することも可能である。


メモリ管理機構は、mmgr(Memory ManaGeR)と呼ぶ。