ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß ¾È³»¼­


UDF µð¹ö±ë

µ¥ÀÌÅͺ£À̽º¿¡ ¼Õ»óÀ» ÀÔÈ÷Áö ¾ÊÀ» ¼ö Àִ ȯ°æ¿¡¼­ UDF¸¦ µð¹ö±×ÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. »ç¿ëÀÚÀÇ UDF°¡ Àý´ëÀûÀ¸·Î ¿À·ù°¡ ¾øÀ½À» È®½ÅÇÒ ¶§±îÁö´Â Å×½ºÆ® µ¥ÀÌÅͺ£À̽º ÀνºÅϽº¿¡ ´ëÇÏ¿© Å×½ºÆ®¸¦ ½ÇÇàÇØ¾ß ÇÕ´Ï´Ù. FENCED¿Í NOT FENCED UDF¿¡ ´ëÇØ ¾çÂÊ À¯ÇüÀÌ Á¦´ë·Î ÀÛ¼ºµÇÁö ¾ÊÀ¸¸é DB2ÀÇ ¿ÀÀÛµ¿À» ÀÏÀ¸Å³ ¼ö ÀÖ½À´Ï´Ù. UDF¸¦ FENCED·Î Á¤ÀÇÇϸé NOT FENCEDº¸´Ù ¹«°á¼º ¹× º¸¾È ³ëÃâ¿¡ À־ ´õ ¸¹Àº º¸È£¸¦ Á¦°øÇÏÁö¸¸ À̸¦ º¸ÀåÇÒ ¼ö´Â ¾ø½À´Ï´Ù. °ËÅä ¹× Å×½ºÆ®°¡ Æ÷ÇÔµÈ ÁÁÀº ÄÚµù ½À°üÀº ±× ¾î´À °æ¿ì¿¡µµ Àû¿ëµÇ¾î¾ß ÇÕ´Ï´Ù.

DB2´Â ÀúÀ念¿ªÀ» À߸ø ¼öÁ¤Çϴ ƯÁ¤ À¯ÇüÀÇ Á¦ÇÑ Á¶Ä¡¸¦ Á¡°ËÇÕ´Ï´Ù. ¿¹¸¦ µé¾î UDF°¡ ½ºÅ©·¡Ä¡ ÆÐµå³ª °á°ú ¹öÆÛ·Î ³Ê¹« ¸¹Àº ¹®ÀÚµéÀ» À̵¿½ÃŲ °æ¿ì°¡ ÀÌ¿¡ ÇØ´çµË´Ï´Ù. ÀÌ·¸°Ô À߸øµÈ ±â´ÉÀ» ¹ß°ßÇÏ°Ô µÇ¸é DB2´Â ¿À·ù, SQLCODE -450(SQLSTATE 39501)À» ¸®ÅÏÇÕ´Ï´Ù. DB2 ¿ª½Ã UDF¿¡ ºñÁ¤»ó Á¾·á°¡ ¹ß»ýÇÏ¿© SQLCODE -430(SQLSTATE 38503)À» ¸®ÅÏÇÏ´Â °æ¿ì ¶Ç´Â UDF 󸮸¦ »ç¿ëÀÚ°¡ ÀÎÅÍ·´Æ® ÇÏ¿© SQLCODE -431(SQLSTATE 38504)À» ¸®ÅÏÇÏ´Â °æ¿ì Ä¡¸íÀûÀÎ Àå¾Ö°¡ µÇÁö ¾Êµµ·Ï ¼³°èµÇ¾î ÀÖ½À´Ï´Ù.

FENCED UDF¿¡¼­µµ ¸®ÅÏ °ª ¹öÆÛ°¡ ´ë·®À¸·Î °ãÃľ²¿©Áö¸é UDF¿Í DB2°¡ ºñÁ¤»óÀûÀ¸·Î Á¾·áµË´Ï´Ù. ¹ÙÀÌÆ®¸¦ ¸®ÅÏ °ª ¹öÆÛ·Î À̵¿½ÃŰ´Â ¸ðµç UDF¸¦ ¼³°è, ÄÚµù ±×¸®°í °ËÅäÇÒ ¶§ ƯÈ÷ ÁÖÀÇÇϽʽÿÀ. ¿¹¸¦ µé¾î, ¹ÙÀÌÆ®¸¦ À̵¿½Ã۱â Àü¿¡ ¾ó¸¶¸¸Å­ÀÇ ¹ÙÀÌÆ®¸¦ À̵¿½ÃÄÑ¾ß ÇÏ´ÂÁö °è»êÇÏ´Â UDF¿¡ ´ëÇØ¼­´Â Á¶½ÉÇϽʽÿÀ. C¿¡¼­ memcpy´Â ÀÌ ÇÔ¼ö¿¡ ´ëÇØ Á¾Á¾ »ç¿ëµË´Ï´Ù. ¹ÙÀÌÆ®¸¦ ¸®ÅÏ °ª ¹öÆÛ·Î À̵¿½ÃŰ´Â UDF¿¡ ´ëÇØ °æ°è °æ¿ì(ƯÈ÷ ª°Å³ª ±ä °ª)¸¦ ÀÚ¼¼ÇÏ »ìÆì º¸½Ê½Ã¿À.

º¸¾È ¹× µ¥ÀÌÅͺ£À̽º ¹«°á¼ºÀ» ÀÌÀ¯·Î, »ç¿ëÀÚÀÇ UDF°¡ ÀÏ´Ü µð¹ö±×µÇ°í DB2¿¡ Á¤ÀÇµÈ °æ¿ì, UDFÀÇ ³»¿ëÀ» º¸È£ÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. À̰ÍÀº »ç¿ëÀÚÀÇ UDF°¡ NOT FENCED·Î Á¤ÀǵǾî ÀÖ´Â °æ¿ì ´õ¿í ±×·¸½À´Ï´Ù. ½Ç¼öµç ÀǵµÀûÀ̵ç, »ç¿ëÀÚ ÀÚ½ÅÀ» Æ÷ÇÔÇÏ¿© ´©±º°¡°¡ µð¹ö±×µÇÁö ¾ÊÀº ÄÚµå·Î ÀÛµ¿°¡´ÉÇÑ UDF¸¦ °ãÃľ²±â ÇÏ¿´À» °æ¿ì, À̰ÍÀÌ NOT FENCED·Î Á¤ÀǵǾî ÀÖ´Ù¸é µ¥ÀÌÅͺ£À̽º¸¦ ¼Õ»ó½Ãų °¡´É¼ºÀÌ ÃæºÐÇϰųª º¸¾È »óŸ¦ À§ÇùÇÒ ¼ö ÀÖ½À´Ï´Ù.

¾ÈŸ±õ°Ôµµ ¼Ò½º ·¹º§ µð¹ö°Å¸¦ UDF¿¡¼­ ½±°Ô ¼öÇà½Ãų ¹æ¹ýÀº ¾ø½À´Ï´Ù. ±× ÀÌÀ¯´Â ´ÙÀ½°ú °°½À´Ï´Ù.

UDF´Â º¸Åë stdoutÀÌ Àǹ̰¡ ¾ø´Â ¹é±×¶ó¿îµå ÇÁ·Î¼¼½º¿¡¼­ ¼öÇàµÇ±â ¶§¹®¿¡, printf()¿Í °°Àº À¯¿ëÇÑ µð¹ö±ë µµ±¸°¡ UDF¿¡¼­´Â ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. printf()ÀÇ ´ë¾ÈÀ¸·Î UDF¿¡ ÆÄÀÏ Ãâ·Â ³í¸®¸¦ ÁöÁ¤Çϰí, µð¹ö±ëÀ» ¸ñÀûÀ¸·Î Ç¥½Ã µ¥ÀÌÅÍ¿Í Á¦¾î Á¤º¸¸¦ ÆÄÀÏ¿¡ ±â·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù.

UDF¸¦ µð¹ö±×ÇÏ´Â ¶Ç ´Ù¸¥ ±â¹ýÀ¸·Î µ¥ÀÌÅͺ£À̽º ȯ°æ ¹Û¿¡¼­ UDF¸¦ È£ÃâÇÏ´Â µå¶óÀ̹ö ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ±â¹ýÀ» »ç¿ëÇÏ¿© »ç¿ëÀÚ´Â ¸¹Àº Á¾·ùÀÇ °æ°è °ª ¹× ¿À·ù °ªÀ» ÀÔ·Â Àμö·Î ÁöÁ¤ÇÏ¿© UDF¸¦ È£ÃâÇÔÀ¸·Î½á, UDF ¿À·ù¸¦ À¯µµÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ È¯°æ¿¡¼­´Â printf()³ª ¼Ò½º ·¹º§ µð¹ö°Å¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù.


[ ÆäÀÌÁöÀÇ ¸Ç À§ | ÀÌÀü ÆäÀÌÁö | ´ÙÀ½ ÆäÀÌÁö | ¸ñÂ÷ | »öÀÎ ]