PostgreSQL 9.6.2 문서 | |||
---|---|---|---|
이전 | 위로 | 장 36. Extending SQL | 다음 |
모든 연산자는 해당 작업을 하는 함수를 호출 하는 "간편 구문, syntactic sugar"이다; 즉 새로운 어떤 연산자를 만들고자 한다면, 먼저 그 일을 하는 함수부터 만들어야 한다. 하지만, 하나의 연산자가 그저 구문을 간편하게 하는 역할만 하지는 않는다. 쿼리 실행 계획기는 그 연산자를 보고 최적화된 실행 계획을 짜기 때문이다. 이것에 대한 설명은 다음 장에서 추가로 설명한다.
PostgreSQL에서는 왼쪽, 오른쪽 단항 연산자와 이항 연산자를 지원한다. 연산자는 오버로드될 수 있다; 같은 연산자인데, 항 개수가 다르거나, 자료형이 다른 여러 연산자가 함께 있을 수 있다. 쿼리가 실행 될 때, 그 연산자와 관계된 항과 자료형에 따라서 해당 연산자가 사용된다.
아래는 두 복소수를 서로 더하는 연산자를 만드는 예제다. 여기서는 이미 complex 자료형이 만들어져 있다고 간주했다(36.11절 참조). 먼저 그 연산을 할 함수를 만들고, 다음 연산자를 만든다:
CREATE FUNCTION complex_add(complex, complex) RETURNS complex AS 'filename', 'complex_add' LANGUAGE C IMMUTABLE STRICT; 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 절과 인자를 지정하는 절이 CREATE OPERATOR 명령에서 필요한 기본 옵션이다. 윗 예제에 있는 commutator 절은 쿼리 최적화기가 최적의 실행 계획을 만드는데 사용된다. 이런 commutator와 같은 쿼리 최적화 여러 옵션들에 대해서는 다음 장에서 다룬다.