11.2. 例

ここで2つの複素数を加算する演算子を作成するという例を示します。既にcomplex(複素数)型を定義しているものとします。 (Chapter 10 を参照して下さい)。まず加算を行なう関数を作成する必要があります。 その後に演算子を定義できます。

CREATE FUNCTION complex_add(complex, complex)
    RETURNS complex
    AS 'PGROOT/tutorial/complex'
    LANGUAGE C;

CREATE OPERATOR + (
    leftarg = complex,
    rightarg = complex,
    procedure = complex_add,
    commutator = +
);

これで下記の事を実行できるようになります。

SELECT (a + b) AS c FROM test_complex;

        c
-----------------
 (5.2,6.05)
 (133.42,144.95)

ここでは二項演算子をどのように作成するのかを示しました。単項演算子を作成するには、単に、左方単項の場合はleftargを、右方単項の場合はrightargを省略するだけです。procedure句とargument句の2つのみがCREATE OPERATORでの必須項目です。例で示したcommutator句はオプションで、クエリオプティマイザへのヒントとなります。commutator とその他のオプティマイザへのヒントについての詳細は後述します。