CREATE OPERATOR

Name

CREATE OPERATOR -- »õ·Î¿î ¿¬»êÀÚ Å¬·¡½º¸¦ Á¤ÀÇÇÑ´Ù

Synopsis

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°³ÀÇ À̸§Àº Ç×»ó »óÀÀÇÕ´Ï´Ù.

Àû¾îµµ LEFTARG ¹× RIGHTARGÁßÀÇ Çϳª´Â Á¤ÀÇ µÇ¾î¾ß ÇÕ´Ï´Ù. ¹ÙÀ̳ʸ® ¿¬»êÀÚ¿¡¼­´Â µÑ ´Ù Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. ¿ìÇ× ´ÜÀÏ ¿¬»êÀÚ¿¡´Â LEFTARG¸¦ Á¤ÀÇÇϰí, ÁÂÇ× ´ÜÀÏ ¿¬»êÀÚ¿¡´Â RIGHTARG¸¸ Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù.

funcname ÇÁ·Î½ÃÀú´Â CREATE FUNCTION¸¦ »ç¿ëÇÏ¿©, »çÀü¿¡ Á¤ÀÇÇØ µÎ¾î¾ß ÇÕ´Ï´Ù. Á¦½ÃµÈ ÇüÀÇ ÀûÇÕÇÑ ÀμöÀÇ °³¼ö(ÇÑ °³ ¶Ç´Â µÎ°³)¸¦ Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù.

´Ù¸¥ ÀýÀº ¿¬»êÀÚ ÃÖÀûÈ­ ÀýÀ» ÁöÁ¤ÇÕ´Ï´Ù. À̰ÍÀÇ Àǹ̴ Section 33.13·Î »ó¼¼ÇÏ°Ô ¼³¸íµË´Ï´Ù.

¸Å°³º¯¼ö

name

Á¤ÀÇÇÏ´Â ¿¬»êÀÚÀÇ À̸§ÀÔ´Ï´Ù. »ç¿ë°¡´ÉÇÑ ¹®ÀÚ´Â »ó´ÜÀ» ÂüÁ¶Çϼ¼¿ä. À̸§Àº °ËÁõÀ» °ÅÄ£ ½ºÅ°¸¶¸íÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦µé¸é, CREATE OPERATOR myschema.+ (...)ÀÔ´Ï´Ù. °ËÁõÀ» °ÅÄ£ ½ºÅ°¸¶¸íÀÌ ¾Æ´Ñ °æ¿ì, ¿¬»êÀÚ´Â ÇöÀçÀÇ ½ºÅ°¸¶¿¡¼­ »ý¼ºµË´Ï´Ù. µ¿ÀÏ ½ºÅ°¸¶³»¿¡¼­ µÎ °³ÀÇ ¿¬»êÀÚ´Â, ±×µéÀÌ ´Ù¸¥ µ¥ÀÌÅÍ ÇüÀ» ¿¬»êÇÒ °æ¿ì, µ¿ÀÏÇÑ À̸§À» °®À» ¼ö ÀÖ½À´Ï´Ù. À̸¦ overloading¶ó ÇÕ´Ï´Ù.

funcname

ÀÌ ¿¬»êÀÚ¸¦ ½ÇÇàÇϱâ À§ÇØ »ç¿ëÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.

lefttype

¿¬»êÀÚÀÇ ÁÂÇ×ÀÇ µ¥ÀÌÅÍ ÇüÀÔ´Ï´Ù. ÀÌ ¿É¼ÇÀº ÁÂÇ× ´ÜÀÏ ¿¬»êÀÚÀÏ °æ¿ì, »ý·«µÉ ¼ö ÀÖ½À´Ï´Ù.

righttype

¿¬»êÀÚÀÇ ¿ìÇ×ÀÇ µ¥ÀÌÅÍ ÇüÀÔ´Ï´Ù. ÀÌ ¿É¼ÇÀº ¿ìÇ× ´ÜÀÏ ¿¬»êÀÚÀÏ °æ¿ì, »ý·«µÉ ¼ö ÀÖ½À´Ï´Ù.

com_op

ÀÌ ¿¬»êÀÚÀÇ ±³È¯ÀÚÀÔ´Ï´Ù.

neg_op

ÀÌ ¿¬»êÀÚÀÇ ºÎÁ¤ÀÚÀÔ´Ï´Ù.

res_proc

ÀÌ ¿¬»êÀÚÀÇ Á¦ÇÑ ¼±ÅõµÀÇ ºñ¿ë»êÁ¤±â ÇÔ¼ö ÀÔ´Ï´Ù.

join_proc

ÀÌ ¿¬»êÀÚÀÇ Á¶ÀÎ ¼±ÅõµÀÇ ºñ¿ë»êÁ¤±â ÇÔ¼ö ÀÔ´Ï´Ù.

HASHES

ÀÌ ¿¬»êÀÚ°¡ ÇØ½¬Á¶ÀÎÀ» Áö¿øÇÒ ¼ö ÀÖÀ½À» ³ªÅ¸³À´Ï´Ù.

MERGES

ÀÌ ¿¬»êÀÚ°¡ º´ÇÕÁ¶ÀÎÀ» Áö¿øÇÒ ¼ö ÀÖÀ½À» ³ªÅ¸³À´Ï´Ù.

left_sort_op

ÀÌ ¿¬»êÀÚ°¡ º´ÇÕÁ¶ÀÎÀ» Áö¿øÇÏ´Â °æ¿ì, ÀÌ ¿¬»êÀÚÀÇ ÁÂÇ× µ¥ÀÌÅÍÇüÀ» Á¤·ÄÇÏ´Â ¿¬»êÀÚ´Â ÀÛ´Ù ¿¬»êÀÚ(<)ÀÔ´Ï´Ù.

right_sort_op

ÀÌ ¿¬»êÀÚ°¡ º´ÇÕÁ¶ÀÎÀ» Áö¿øÇÏ´Â °æ¿ì, ÀÌ ¿¬»êÀÚÀÇ ¿ìÇ× µ¥ÀÌÅÍÇüÀ» Á¤·ÄÇÏ´Â ¿¬»êÀÚ´Â ÀÛ´Ù ¿¬»êÀÚ(<)ÀÔ´Ï´Ù.

less_than_op

ÀÌ ¿¬»êÀÚ°¡ º´ÇÕÁ¶ÀÎÀ» Áö¿øÇÏ´Â °æ¿ì, ÀÌ ¿¬»êÀÚÀÇ ÀÔ·Â µ¥ÀÌÅÍÇüÀ» ºñ±³ÇÏ´Â ¿¬»êÀÚ´Â ÀÛ´Ù ¿¬»êÀÚ(<)ÀÔ´Ï´Ù.

greater_than_op

ÀÌ ¿¬»êÀÚ°¡ º´ÇÕÁ¶ÀÎÀ» Áö¿øÇÏ´Â °æ¿ì, ÀÌ ¿¬»êÀÚÀÇ ÀÔ·Â µ¥ÀÌÅÍÇüÀ» ºñ±³ÇÏ´Â ¿¬»êÀÚ´Â Å©´Ù ¿¬»êÀÚ(>)ÀÔ´Ï´Ù.

°ËÁõÀ» °ÅÄ£ ½ºÅ°¸¶ ¿¬»êÀÚ¸í ¶Ç´Â ´Ù¸¥ Àμö¸¦ Á¦½ÃÇÏ·Á¸é, 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
);

ȣȯ¼º

CREATE OPERATOR´Â PostgreSQL ÀÇ È®ÀåÀÔ´Ï´Ù. SQLÇ¥ÁØ¿¡´Â »ç¿ëÀÚ Á¤ÀÇ ¿¬»êÀÚ¿¡ ´ëÇÑ ±ÔÁ¤ÀÌ ¾ø½À´Ï´Ù.

°ü·Ã Ç׸ñ

ALTER OPERATOR , CREATE OPERATOR CLASS , DROP OPERATOR