11.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)子句 是 CREATE OPERATOR 里需要的条目。 例子里演示的 commutator 子句是一个给查询优化器的可选的暗示。 关于 commutator 和其它优化器提示的详细信息在下面给出。