모든 연산자는 해당 작업을 하는 함수를 호출 하는 “간편 구문, syntactic sugar”이다; 즉 새로운 어떤 연산자를 만들고자 한다면, 먼저 그 일을 하는 함수부터 만들어야 한다. 하지만, 하나의 연산자가 그저 구문을 간편하게 하는 역할만 하지는 않는다. 쿼리 실행 계획기는 그 연산자를 보고 최적화된 실행 계획을 짜기 때문이다. 이것에 대한 설명은 다음 장에서 추가로 설명한다.
PostgreSQL에서는 왼쪽, 오른쪽 단항 연산자와 이항 연산자를 지원한다. 연산자는 오버로드될 수 있다; 같은 연산자인데, 항 개수가 다르거나, 자료형이 다른 여러 연산자가 함께 있을 수 있다. 쿼리가 실행 될 때, 그 연산자와 관계된 항과 자료형에 따라서 해당 연산자가 사용된다.
아래는 두 복소수를 서로 더하는 연산자를 만드는 예제다. 여기서는
이미 complex
자료형이 만들어져 있다고 간주했다(37.13절 참조). 먼저 그 연산을 할 함수를 만들고,
다음 연산자를 만든다:
CREATE FUNCTION complex_add(complex, complex)
RETURNS complex
AS 'filename
', 'complex_add'
LANGUAGE C IMMUTABLE STRICT;
CREATE OPERATOR + (
leftarg = complex,
rightarg = complex,
function = complex_add,
commutator = +
);
만들어진 연산자는 다음과 같이 사용할 수 있다:
SELECT (a + b) AS c FROM test_complex; c ----------------- (5.2,6.05) (133.42,144.95)
윗 예제는 이항 연산자를 만들고 사용한 것이다. 단항
연산자를 만들려면 필요 없는 각 항을 생략하면
된다. 왼쪽 단항이면 leftarg
인자를,
오른쪽 단항이면 rightarg
인자를
생략한다. function
절과 인자를 지정하는
절이 CREATE OPERATOR
명령에서 필요한
기본 옵션이다. 윗 예제에 있는 commutator
절은
쿼리 최적화기가 최적의 실행 계획을 만드는데 사용된다. 이런
commutator
와 같은 쿼리 최적화 여러 옵션들에
대해서는 다음 장에서 다룬다.