Todo operador é um “açúcar sintático” [118] para a chamada de uma função subjacente que faz o trabalho real; portanto, primeiro deve ser criada a função subjacente antes de criar o operador. Entretanto, o operador não é apenas um açúcar sintático, porque carrega informações adicionais que ajudam o planejador de consultas a otimizar as consultas que usam o operador. A próxima seção será dedicada a explicar essas informações adicionais.
O PostgreSQL oferece suporte a operadores de prefixo e infixo. Os operadores podem ser sobrecarregados; ou seja, o mesmo nome de operador pode ser usado para diferentes operadores que possuem diferentes números e tipos de dados de operandos. Quando uma consulta é executada, o sistema determina o operador a ser chamado a partir do número e tipos de dados dos operandos fornecidos.
A seguir está um exemplo de criação de um operador para adicionar
dois números complexos.
Assumimos que já foi criada a definição do tipo de dados
complex (veja Tipos de dados definidos pelo usuário).
Primeiro é necessária uma função que faça o trabalho, para então
o operador poder ser definido:
CREATE FUNCTION complex_add(complex, complex)
RETURNS complex
AS 'nome_do_arquivo', 'complex_add'
LANGUAGE C IMMUTABLE STRICT;
CREATE OPERATOR + (
leftarg = complex,
rightarg = complex,
function = complex_add,
commutator = +
);
Finalmente, pode ser executada uma consulta como essa:
SELECT (a + b) AS c FROM test_complex;
c
-----------------
(5.2,6.05)
(133.42,144.95)
Aqui foi mostrado como criar um operador binário.
Para criar um operador de prefixo, basta omitir leftarg.
A cláusula function e as cláusulas de argumento
são os únicos itens obrigatórios no comando
CREATE OPERATOR.
A cláusula commutator mostrada no exemplo é uma
dica opcional para o otimizador de consulta.
Detalhes adicionais sobre o commutator e outras
dicas para o otimizador são mostrados na próxima seção.
[118] Syntactic sugar: Em ciência da computação, “açúcar sintático” é a sintaxe interna de uma linguagem de programação projetada para tornar as coisas mais fáceis de ler ou expressar. Isso torna a linguagem "mais doce" para o uso humano: as coisas podem ser expressas de forma mais clara, mais concisa, ou em um estilo alternativo que alguns podem preferir. (N. T.)