PostgreSQL 7.2.1 Documentation
Prev | Chapter 14. Extending SQL: Operators | Next

# 14.2. Example

Here is an example of creating an operator for adding two complex numbers. We assume we've already created the definition of type `complex` (see Chapter 13). First we need a function that does the work, then we can define the operator:

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

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

Now we can do:

    SELECT (a + b) AS c FROM test_complex;

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

We've shown how to create a binary operator here. To create unary operators, just omit one of `leftarg` (for left unary) or `rightarg` (for right unary). The `procedure` clause and the argument clauses are the only required items in CREATE OPERATOR. The `commutator` clause shown in the example is an optional hint to the query optimizer. Further details about `commutator` and other optimizer hints appear below.

Prev | Home | Next
Extending SQL: Operators | Up | Operator Optimization Information