¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

CREATE OPERATOR

Name

CREATE OPERATOR  -- �������黻�Ҥ����

Synopsis

CREATE OPERATOR name ( PROCEDURE = func_name
     [, LEFTARG = lefttype
     ] [, RIGHTARG = righttype ]
     [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]
     [, RESTRICT = res_proc ] [, JOIN = join_proc ]
     [, HASHES ] [, MERGES ]
     [, SORT1 = left_sort_op ] [, SORT2 = right_sort_op ]
     [, LTCMP = less_than_op ] [, GTCMP = greater_than_op ] )
  

����

name

��������黻�ҤǤ������ѤǤ���ʸ���ϲ����򻲾Ȥ��Ƥ��������� ����̾���ϡ��������ޤǽ�������Ƥ����礬����ޤ����� CREATE OPERATOR myschema.+ (...)

func_name

���α黻�Ҥ�������뤿��˻Ȥ���ؿ��Ǥ���

lefttype

�⤷������ϡ��黻�Ҥκ��դΰ����η��Ǥ������Υ��ץ����Ϻ�ñ��黻�ҤǤϾ�ά����ޤ���

righttype

�⤷������ϡ��黻�Ҥα��դΰ����η��Ǥ������Υ��ץ����ϱ�ñ��黻�ҤǤϾ�ά����ޤ���

com_op

���α黻�Ҥθ���黻�ҤǤ���

neg_op

���α黻�Ҥ�����ҤǤ���

res_proc

���α黻�Ҥ���������ɾ���ؿ��Ǥ���

join_proc

���α黻�Ҥη������ɾ���ؿ��Ǥ���

HASHES

���α黻�Ҥ��ϥå�����򥵥ݡ��ȤǤ��뤳�Ȥ򼨤��ޤ���

MERGES

���α黻�Ҥ��ޡ������򥵥ݡ��ȤǤ��뤳�Ȥ򼨤��ޤ���

left_sort_op

���α黻�Ҥ��ޡ������򥵥ݡ��ȤǤ����硢���α黻�Ҥκ��եǡ������򥽡��Ȥ��뾮�ʤ�黻�ҤǤ���

right_sort_op

���α黻�Ҥ��ޡ������򥵥ݡ��ȤǤ����硢���α黻�Ҥα��եǡ������򥽡��Ȥ��뾮�ʤ�黻�ҤǤ���

less_than_op

���α黻�Ҥ��ޡ������򥵥ݡ��ȤǤ����硢���α黻�Ҥ����ϥǡ���������Ӥ��뾮�ʤ�黻�ҤǤ���

greater_than_op

���α黻�Ҥ��ޡ������򥵥ݡ��ȤǤ����硢���α黻�Ҥ����ϥǡ���������Ӥ�����ʤ�黻�ҤǤ���

����

CREATE OPERATOR

�黻�Ҥκ������������������֤�����å������Ǥ���

����

CREATE OPERATOR�ϡ��������黻�� name��������ޤ����黻�Ҥ���������桼�������ν�ͭ�ԤȤʤ�ޤ���

��������̾��Ϳ�����Ƥ����硢���α黻�Ҥϻ��ꤵ�줿�������ޤǺ�������ޤ��� ��������̾���ʤ���С��黻�Ҥϸ��ߤΥ������� (�����ѥ������ˤ��륹�����ޡ�CURRENT_SCHEMA() ����) �Ǻ�������ޤ���

�ۤʤ�ǡ������α黻�򤹤���Ǥ���С�Ʊ������������� 2 �Ĥα黻�Ҥ���Ʊ��̾���Ǥ⹽���ޤ��� ����ϡ������С��������ȸƤФ���ΤǤ��� �黻��̾�������ޤ��ʾ�硢�����ƥ�Ǥϡ��ºݤ����ϥǡ������˴�Ť����оݤȤʤ�黻�Ҥ����򤷤褦�Ȥ��ޤ���

�黻��name�ϡ��ʲ��˼���ʸ���ǡ�NAMEDATALEN-1�ʥǥե���ȤǤ�63��ʸ�����ޤǤ�ʸ����Ǥ���

+ - * / < > = ~ ! @ # % ^ & | ` ? $
   

̾��������ˤϰʲ��˼��������Ĥ������󤬤���ޤ���

Note: ��SQLɸ��α黻��̾��Ȥäƺ�Ȥ����硢�̾�Ϥ����ޤ������򤱤뤿������ܤ���黻�Ҥ򥹥ڡ����Ƕ��ڤ�ɬ�פ�����ޤ������Ȥ��С�@�Ȥ���̾���κ�ñ��黻�Ҥ����������硢X*@Y�Ƚ񤯤��ȤϤǤ��ޤ��� PostgreSQL��1�ĤǤϤʤ��μ¤�2�Ĥα黻�ҤȤ��Ʋ�᤹�뤿��ˤ�X* @Y�Ƚ񤫤ʤ���Фʤ�ޤ���

�黻��!=�����ϤǤ�<>�˼��������Τǡ�������2�Ĥ�̾���Ͼ�������Ǥ���

���ʤ��Ȥ� LEFTARG �� RIGHTARG �Τɤ��餫���������ʤ���Фʤ�ޤ������黻�ҤǤ�ξ�����������ʤ���Фʤ�ޤ��� ��ñ��黻�ҤǤ� LEFTARG �Τߤ��������ʤ���Фʤ餺����ñ��黻�ҤǤ� RIGHTARG �Τߤ��������ʤ���Фʤ�ޤ���

func_name�ץ���������ϡ�CREATE FUNCTION��Ȥäƻ������������Ƥ��ʤ���Фʤ餺�����ꤵ�줿�������������ΰ�����1�Ĥ�2�ġˤ�����դ���褦���������Ƥ��ʤ���Фʤ�ޤ���

¸�ߤ����硢����黻�Ҥϡ�PostgreSQL��ɬ�פ˱����Ʊ黻���ܤν����ȿž�Ǥ���褦��ǧ�������Ƥ����٤��Ǥ������Ȥ��С��ΰ���Ф���֤�꾮�����פ�Ƚ�ꤹ��黻�ҡ�<<<�פϤ����餯���ΰ���Ф���֤���礭���פ�Ƚ�ꤹ��黻�ҡ�>>>�פ����黻�ҤȤ��ƻ��ĤǤ��礦�� ���Τ��ᡢ�䤤��碌���ץƥ��ޥ����Ǥϰʲ��Τ褦�˼�ͳ���Ѵ����뤳�Ȥ��Ǥ��ޤ���

box '((0,0), (1,1))'  >>> MYBOXES.description
   

�嵭�μ��򡢰ʲ��Τ褦���Ѵ����ޤ���

MYBOXES.description <<< box '((0,0), (1,1))'
   

����ˤ��¹ԥ����ɤ���˸�Ԥ�ɽ����Ȥ��褦�ˤǤ����䤤��碌���ץƥ��ޥ����򤤤��餫ñ��ˤ��뤳�Ȥ��Ǥ��ޤ���

Ʊ�ͤˡ��⤷����Ҥ�������ϡ������ǧ������Ƥ����٤��Ǥ������Ȥ��С��ΰ�Ρ��������פ�Ƚ�ꤹ��黻�ҡ�===�פ��ΰ�Ρ��������ʤ��פ�Ƚ�ꤹ��黻�ҡ�!==�פȰ���¸�ߤ����Ȥ��ޤ��� ����Ҥδط��ˤ�ꡢ�䤤��碌���ץƥ��ޥ����Ǥϰʲ��Τ褦�˼���ñ�㲽���뤳�Ȥ��Ǥ��ޤ���

NOT MYBOXES.description === box '((0,0), (1,1))'
   

�嵭�μ��򡢰ʲ��Τ褦��ñ�㲽���ޤ���

MYBOXES.description !== box '((0,0), (1,1))'
   

����黻��̾��Ϳ����줿��硢PostgreSQL �ϥ����������椫�餽���õ���ޤ������Ф��줿����黻��̾�θ���黻�Ҥ��ޤ�¸�ߤ��ʤ���硢����黻�ҤΥ���ȥ�Ͽ��������줿�黻�Ҥ򤽤θ���黻�ҤȤ��ƻ��Ĥ褦�˹�������ޤ������������Ҥˤ�Ŭ�Ѥ���ޤ����ߤ��θ���黻�Ҥޤ�������ҤǤ���2�Ĥα黻�Ҥ��������Ĥ��뤿��Ǥ����ǽ�α黻�Ҥϸ���黻�Ҥ�����ҡʤΤɤ��餫Ŭ�ڤʤ�Ρˤʤ����������ʤ���Фʤ�ޤ���2���ܤα黻�Ҥ���������Ȥ��ˡ��ǽ�α黻�Ҥ����黻�Ҥޤ�������ҤȤ��ƻ��ꤷ�ޤ��� �����ѤȤ��ƺǽ�α黻�ҤϹ�������ޤ���PostgreSQL 6.5�ʹߤǤϡ�ξ���α黻�Ҥ����ߤ��򻲾Ȥ���褦�ˤ��뤳�Ȥ�Ǥ��ޤ��ˡ�

HASHES��MERGES��SORT1��SORT2��LTCMP������� GTCMP ���ץ����ϡ�����¹Ԥ���ݤ��䤤��碌���ץƥ��ޥ����򥵥ݡ��Ȥ��뤿���¸�ߤ��ޤ��� PostgreSQL �ϡ����ȿ���ִ� (�Ĥޤꡢboolean �ͤ��֤��黻�Ҥˤ�ä�ʬΥ���줿��2 �ĤΥ��ץ��ѿ�����Ķ�ν���) �ˤ�ꡢ����ɾ���Ǥ��ޤ��� ���Τۤ��ˡ�PostgreSQL �Ǥϡ��ϥå����祢�르�ꥺ�����Ѥ��뤳�Ȥ��Ǥ��ޤ��� �ȤϤ������ɤ������ά��Ŭ�ѤǤ��뤫�ɤ������Τ�ɬ�פ�����ޤ��� ���ߤΥϥå����祢�르�ꥺ�����������ɾ���򼨤��黻�ҤΤߤ��Ф���ͭ���Ǥ�������ˡ��ǡ��������������ϡ�����ɽ���������ӥå�ñ�̤����������Ȥ��̣���Ƥ��ʤ���Фʤ�ޤ��� (���Ȥ��С���������ɾ���˴ط��Τʤ�̤���ѤΥӥåȤ�ޤ�Ǥ���ǡ������ϥϥå����礵���뤳�Ȥ��Ǥ��ޤ���)�� HASHES �Υե饰�ϡ��䤤��碌���ץƥ��ޥ������Ф����ϥå����礬���α黻�Ҥǰ����˻��ѤǤ��뤳�Ȥ򼨤��ޤ���

Ʊ�ͤˡ�MERGES �ե饰�ϡ����α黻�Ҥǥޡ��������Ȥ������ά�Ȥ��ƻ��Ѳ�ǽ���ɤ����򼨤��ޤ��� �ޡ������Ǥϡ�2 �Ĥ����ϥǡ�����������ν�����¤�Ǥ���ɬ�פ�����ޤ����ޤ����ޡ������黻�Ҥ������ν���˽��ä������黻�ҤΤ褦�˺��Ѥ���ɬ�פ�����ޤ��� ���Ȥ��С�integer ����� float �ѿ���ξ�������Ϥ��̾�ο��ͽ�˥����Ȥ��뤳�Ȥˤ�ꡢ����Ū�˥ޡ�����礹�뤳�Ȥ���ǽ�Ǥ��� �ޡ�������¹Ԥ���ˤϡ��ޡ������������黻�Ҥ˴�Ϣ���� 4 �Ĥα黻�Ҥ򡢥����ƥब���̲�ǽ�Ǥ��뤳�Ȥ�ɬ�פǤ��� 4 �Ĥα黻�ҤȤϡ��������ϥǡ��������Ф��뾮�ʤ���ӡ��������ϥǡ��������Ф��뾮�ʤ���ӡ�2 �ĤΥǡ������֤ξ��ʤ���ӡ�2 �ĤΥǡ������֤���ʤ���ӤǤ��� �����α黻�Ҥϡ����줾�� SORT1��SORT2��LTCMP������� GTCMP ���ץ����ȡ�̾���ǻ��ꤹ�뤳�Ȥ��Ǥ��ޤ��� MERGES �����ꤵ�줿���ˤ����α黻��̾�Τ�����Ǥ��ά�����ȡ����줾�� <��<��<������� > �Ȥ����ǥե����̾�������ޤ��� �ޤ�������� 4 �Ĥα黻�ҥ��ץ����Τ����줫��¸�ߤ����硢MERGES �����ۻ��ꤵ��Ƥ����ΤȤߤʤ���ޤ���

¾�η����ά������Ū�Ǥ��ä���硢 PostgreSQL�Ϥ�����ά����Ѥ���褦�˥��ץƥ��ޥ����ȼ¹ԥ����ƥ���ѹ���������黻�Ҥ�������줿�Ȥ����ɲû��ͤ���뤳�Ȥˤʤ�ޤ��������ʤ��Ȥˡ��������Τ������������ά��ȯ�����뤳�Ȥ���¿�ˤʤ����ɲä����桼������η����ά������ʬ�ϡ�����ʣ�����ۤɤ˲��ͤ�����Ȥϻפ��ޤ���

RESTRICT �� JOIN ���ץ����ϡ��䤤��碌���ץƥ��ޥ����η�̥������ο����������ޤ��� ���Ȥ��С��ʲ��Τ褦�ʷ����ζ礬����Ȥ��ޤ���

myboxes.description <<< box '((0,0), (1,1))'

�嵭�Τ褦�ʶ礬������˵��Ҥ���Ƥ����硢PostgreSQL �Ǥϡ����ζ�������� myboxes ��Υ��󥹥��󥹤γ����¬����ɬ�פ�����ޤ���res_proc�ؿ��ϡ����Τʥǡ������ΰ�����Ȥꡢ��ư���������ͤ��֤�����Ͽ���줿�ʤ��Ǥ�CREATE FUNCTION��Ȥä�������줿�˴ؿ��Ǥʤ���Фʤ�ޤ����䤤��碌���ץƥ��ޥ�����ñ�ˤ��δؿ���((0,0), (1,1))�Ȥ����ѥ�᡼�����Ϥ��ƸƤӽФ������η�̤˥�졼�����Υ�������ݤ������󥹥��󥹿��δ����ͤ����ꤷ�ޤ���

Ʊ�ͤˡ��黻�Ҥα黻���ܤ�2�ĤȤ⥤�󥹥����ѿ�����äƤ����硢�䤤��碌���ץƥ��ޥ����Ϸ��η�̤Υ��������¬���ʤ���Фʤ�ޤ��� �ؿ� join_proc �ϡ���̥������δ����ͤ�׻����뤿��ˡ��ط����� 2 �ĤΥơ��֥�����ǿ��ˤ�äƾ軻���줿�̤���ư���������ͤ��֤��ޤ���

�ʲ��Τ褦�ʴؿ�������Ȥ��ޤ���

my_procedure_1 (MYBOXES.description, box '((0,0), (1,1))')
   

�����ơ��ʲ��Τ褦�ʱ黻�Ҥ�����Ȥ��ޤ���

MYBOXES.description === box '((0,0), (1,1))'
   

�嵭�δؿ��ȱ黻�ҤȤΰ㤤�ϡ�PostgreSQL ���黻�Ҥκ�Ŭ����ޤꡢ�黻�Ҥ��ƤӽФ��줿�Ȥ��ˡ��������֤����¤��뤿��˥���ǥå�������Ѥ��뤫�ɤ��������Ǥ��뤳�ȤǤ����������ʤ��顢�ؿ����Ŭ�����뤳�ȤϤ�������Ǥ���˽�������ޤ�������ˡ��黻�Ҥ�1�Ĥޤ���2�ĤޤǤȰ����ο������¤���Ƥ���Τ��Ф��ơ��ؿ��Ϥɤ�ʿ��ΰ����Ǥ��뤳�Ȥ��Ǥ��ޤ���

����

�ܺ٤ˤĤ��Ƥ�PostgreSQL �桼���������α黻�Ҥξ� �򻲾Ȥ��Ƥ����������桼������α黻�Ҥ�ǡ����١���������������� DROP OPERATOR�򻲾Ȥ��Ƥ���������

�������޽������줿�黻��̾�� com_op �ޤ���¾�Υ��ץ���������Ϳ����ˤϡ��ʲ�����Τ褦�� OPERATOR() ��ʸ����Ѥ��Ƥ���������

   COMMUTATOR = OPERATOR(myschema.===) ,

������ˡ

�ʲ��Υ��ޥ�ɤϡ�BOX�ǡ��������Ф����ΰ���������Ƚ�ꤹ�뿷�����黻�Ҥ�������ޤ���

CREATE OPERATOR === (
   LEFTARG = box,
   RIGHTARG = box,
   PROCEDURE = area_equal_procedure,
   COMMUTATOR = ===,
   NEGATOR = !==,
   RESTRICT = area_restriction_procedure,
   JOIN = area_join_procedure,
   HASHES,
   SORT1 = <<<,
   SORT2 = <<<
   -- �����ȱ黻�Ҥ�Ϳ�����Ƥ��뤿�ᡢMERGES �����ۻ��ꤵ��Ƥ��ޤ���
   -- LTCMP ����� GTCMP �ϡ����줾�� < ����� > �Ȥߤʤ���ޤ���
);
  

�ߴ���

SQL92

CREATE OPERATOR��PostgreSQL �γ�ĥ�Ǥ���SQL92�ˤ�CREATE OPERATORʸ�Ϥ���ޤ���