| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
CREATE OPERATOR
name
(
PROCEDURE =
funcname
[, 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
]
)
CREATE OPERATOR´Â »õ·Î¿î ¿¬»êÀÚÀÎ name ¸¦ Á¤ÀÇÇÕ´Ï´Ù. ¿¬»êÀÚ¸¦ Á¤ÀÇÇÏ´Â »ç¿ëÀÚ´Â ¿¬»êÀÚÀÇ ¼ÒÀ¯ÀÚ°¡ µË´Ï´Ù. ½ºÅ°¸¶¸íÀÌ Á¦½ÃµÈ °æ¿ì, ¿¬»êÀÚ´Â ÁöÁ¤µÈ ½ºÅ°¸¶¿¡¼ »ý¼ºµË´Ï´Ù. ½ºÅ°¸¶¸íÀÌ Á¦½ÃµÇÁö ¾ÊÀº °æ¿ì, ¿¬»êÀÚ´Â ÇöÀçÀÇ ½ºÅ°¸¶¿¡¼ »ý¼ºµË´Ï´Ù.
¿¬»êÀÚ¸íÀº, ´ÙÀ½ÀÇ Ç׸ñÀ¸·ÎºÎÅÍ NAMEDATALEN-1 ¹®ÀÚ±îÁöÀÇ ½ÃÄö½ºÀÔ´Ï´Ù.(µðÆúÆ®´Â 63)
+ - * / < > = ~ ! @ # % ^ & | ` ?
À̸§ÀÇ ¼±Åÿ¡ ¸î °¡Áö Á¦ÇÑ»çÇ×ÀÌ ÀÖ½À´Ï´Ù.
-- ¹× /*Àº ÄÚ¸àÆ®ÀÇ ½ÃÀÛ¿¡ »ç¿ëµÇ±â ¶§¹®¿¡, ¿¬»êÀÚ À̸§³»¿¡¼ Ç¥ÇöÇÒ ¼ö ¾ø½À´Ï´Ù.
2¹®ÀÚ ÀÌ»óÀ¸·Î ±¸¼ºµÈ ¿¬»êÀÚÀÇ À̸§Àº, ¾Æ·¡ÀÇ ¹®ÀÚ¿¡¼ Àû¾îµµ ÇÑ °³¸¦ Æ÷ÇÔÇÏÁö ¾Ê´Â ÇÑ, + ¶Ç´Â -·Î ³¡³¯ ¼ö ¾ø½À´Ï´Ù.
~ ! @ # % ^ & | ` ?
¿¹¸¦µé¸é, @-Àº Çã¿ëµÈ ¿¬»êÀÚ¸íÀÌÁö¸¸, *-´Â Çã¿ëµÇÁö ¾Ê´Â ¿¬»êÀÚ¸íÀÔ´Ï´Ù. ÀÌ·¯ÇÑ Á¦ÇÑÀº, ÅäÅ« »çÀÌ¿¡ ÇÊ¿äÇÑ ½ºÆäÀ̽º ¾øÀÌ SQL-ȣȯ Ä¿¸àµå¸¦ ÆÄ½ºÇϴµ¥ PostgreSQL¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
!=¿¬»êÀÚ´Â, ÀԷ»󿡼 <>¿¡ ¸ÅÇε˴ϴÙ. À̵é 2°³ÀÇ À̸§Àº Ç×»ó »óÀÀÇÕ´Ï´Ù.
Àû¾îµµ LEFTARG ¹× RIGHTARGÁßÀÇ Çϳª´Â Á¤ÀÇ µÇ¾î¾ß ÇÕ´Ï´Ù. ¹ÙÀ̳ʸ® ¿¬»êÀÚ¿¡¼´Â µÑ ´Ù Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. ¿ìÇ× ´ÜÀÏ ¿¬»êÀÚ¿¡´Â LEFTARG¸¦ Á¤ÀÇÇϰí, ÁÂÇ× ´ÜÀÏ ¿¬»êÀÚ¿¡´Â RIGHTARG¸¸ Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù.
funcname ÇÁ·Î½ÃÀú´Â CREATE FUNCTION¸¦ »ç¿ëÇÏ¿©, »çÀü¿¡ Á¤ÀÇÇØ µÎ¾î¾ß ÇÕ´Ï´Ù. Á¦½ÃµÈ ÇüÀÇ ÀûÇÕÇÑ ÀμöÀÇ °³¼ö(ÇÑ °³ ¶Ç´Â µÎ°³)¸¦ Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù.
´Ù¸¥ ÀýÀº ¿¬»êÀÚ ÃÖÀûÈ ÀýÀ» ÁöÁ¤ÇÕ´Ï´Ù. À̰ÍÀÇ Àǹ̴ Section 33.13·Î »ó¼¼ÇÏ°Ô ¼³¸íµË´Ï´Ù.
Á¤ÀÇÇÏ´Â ¿¬»êÀÚÀÇ À̸§ÀÔ´Ï´Ù. »ç¿ë°¡´ÉÇÑ ¹®ÀÚ´Â »ó´ÜÀ» ÂüÁ¶Çϼ¼¿ä. À̸§Àº °ËÁõÀ» °ÅÄ£ ½ºÅ°¸¶¸íÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦µé¸é, CREATE OPERATOR myschema.+ (...)ÀÔ´Ï´Ù. °ËÁõÀ» °ÅÄ£ ½ºÅ°¸¶¸íÀÌ ¾Æ´Ñ °æ¿ì, ¿¬»êÀÚ´Â ÇöÀçÀÇ ½ºÅ°¸¶¿¡¼ »ý¼ºµË´Ï´Ù. µ¿ÀÏ ½ºÅ°¸¶³»¿¡¼ µÎ °³ÀÇ ¿¬»êÀÚ´Â, ±×µéÀÌ ´Ù¸¥ µ¥ÀÌÅÍ ÇüÀ» ¿¬»êÇÒ °æ¿ì, µ¿ÀÏÇÑ À̸§À» °®À» ¼ö ÀÖ½À´Ï´Ù. À̸¦ overloading¶ó ÇÕ´Ï´Ù.
ÀÌ ¿¬»êÀÚ¸¦ ½ÇÇàÇϱâ À§ÇØ »ç¿ëÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.
¿¬»êÀÚÀÇ ÁÂÇ×ÀÇ µ¥ÀÌÅÍ ÇüÀÔ´Ï´Ù. ÀÌ ¿É¼ÇÀº ÁÂÇ× ´ÜÀÏ ¿¬»êÀÚÀÏ °æ¿ì, »ý·«µÉ ¼ö ÀÖ½À´Ï´Ù.
¿¬»êÀÚÀÇ ¿ìÇ×ÀÇ µ¥ÀÌÅÍ ÇüÀÔ´Ï´Ù. ÀÌ ¿É¼ÇÀº ¿ìÇ× ´ÜÀÏ ¿¬»êÀÚÀÏ °æ¿ì, »ý·«µÉ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ¿¬»êÀÚÀÇ ±³È¯ÀÚÀÔ´Ï´Ù.
ÀÌ ¿¬»êÀÚÀÇ ºÎÁ¤ÀÚÀÔ´Ï´Ù.
ÀÌ ¿¬»êÀÚÀÇ Á¦ÇÑ ¼±ÅõµÀÇ ºñ¿ë»êÁ¤±â ÇÔ¼ö ÀÔ´Ï´Ù.
ÀÌ ¿¬»êÀÚÀÇ Á¶ÀÎ ¼±ÅõµÀÇ ºñ¿ë»êÁ¤±â ÇÔ¼ö ÀÔ´Ï´Ù.
ÀÌ ¿¬»êÀÚ°¡ ÇØ½¬Á¶ÀÎÀ» Áö¿øÇÒ ¼ö ÀÖÀ½À» ³ªÅ¸³À´Ï´Ù.
ÀÌ ¿¬»êÀÚ°¡ º´ÇÕÁ¶ÀÎÀ» Áö¿øÇÒ ¼ö ÀÖÀ½À» ³ªÅ¸³À´Ï´Ù.
ÀÌ ¿¬»êÀÚ°¡ º´ÇÕÁ¶ÀÎÀ» Áö¿øÇÏ´Â °æ¿ì, ÀÌ ¿¬»êÀÚÀÇ ÁÂÇ× µ¥ÀÌÅÍÇüÀ» Á¤·ÄÇÏ´Â ¿¬»êÀÚ´Â ÀÛ´Ù ¿¬»êÀÚ(<)ÀÔ´Ï´Ù.
ÀÌ ¿¬»êÀÚ°¡ º´ÇÕÁ¶ÀÎÀ» Áö¿øÇÏ´Â °æ¿ì, ÀÌ ¿¬»êÀÚÀÇ ¿ìÇ× µ¥ÀÌÅÍÇüÀ» Á¤·ÄÇÏ´Â ¿¬»êÀÚ´Â ÀÛ´Ù ¿¬»êÀÚ(<)ÀÔ´Ï´Ù.
ÀÌ ¿¬»êÀÚ°¡ º´ÇÕÁ¶ÀÎÀ» Áö¿øÇÏ´Â °æ¿ì, ÀÌ ¿¬»êÀÚÀÇ ÀÔ·Â µ¥ÀÌÅÍÇüÀ» ºñ±³ÇÏ´Â ¿¬»êÀÚ´Â ÀÛ´Ù ¿¬»êÀÚ(<)ÀÔ´Ï´Ù.
ÀÌ ¿¬»êÀÚ°¡ º´ÇÕÁ¶ÀÎÀ» Áö¿øÇÏ´Â °æ¿ì, ÀÌ ¿¬»êÀÚÀÇ ÀÔ·Â µ¥ÀÌÅÍÇüÀ» ºñ±³ÇÏ´Â ¿¬»êÀÚ´Â Å©´Ù ¿¬»êÀÚ(>)ÀÔ´Ï´Ù.
°ËÁõÀ» °ÅÄ£ ½ºÅ°¸¶ ¿¬»êÀÚ¸í ¶Ç´Â ´Ù¸¥ Àμö¸¦ Á¦½ÃÇÏ·Á¸é, OPERATOR() syntax¸¦ »ç¿ëÇϼ¼¿ä. ¿¹¸¦µé¸é ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù.
COMMUTATOR = OPERATOR(myschema.===) ,
ÀÚ¼¼ÇÑ Á¤º¸¿¡ ´ëÇØ¼´Â Section 33.12¸¦ ÂüÁ¶Çϼ¼¿ä.
µ¥ÀÌÅͺ£À̽º¿¡¼ »ç¿ëÀÚ-Á¤ÀÇÀÇ ¿¬»êÀÚ¸¦ »èÁ¦ÇÏ·Á¸é, DROP OPERATOR ¸¦ »ç¿ëÇϼ¼¿ä. µ¥ÀÌÅͺ£À̽º ³»ÀÇ ¿¬»êÀÚ¸¦ ¼öÁ¤ÇÏ·Á¸é, ALTER OPERATOR ¸¦ »ç¿ëÇϼ¼¿ä.
´ÙÀ½ÀÇ Ä¿¸àµå´Â boxµ¥ÀÌÅÍ ÇüÀÇ »õ·Î¿î ¿¬»êÀÚ, ¿µ¿ª-µ¿µî¼ºÀ» Á¤ÀÇÇÕ´Ï´Ù.
CREATE OPERATOR === (
LEFTARG = box,
RIGHTARG = box,
PROCEDURE = area_equal_procedure,
COMMUTATOR = ===,
NEGATOR = !==,
RESTRICT = area_restriction_procedure,
JOIN = area_join_procedure,
HASHES,
SORT1 = <<<,
SORT2 = <<<
-- Since sort operators were given, MERGES is implied.
-- LTCMP and GTCMP are assumed to be < and > respectively
);