Chapter 41. ¼­¹ö ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º

Table of Contents
41.1. ÀÎÅÍÆäÀ̽º ÇÔ¼ö
SPI_connect -- SPI ¸Å´ÏÀú¿¡ ÇÁ·Î½ÃÀú¸¦ Á¢¼ÓÇÑ´Ù
SPI_finish -- ÇÁ·Î½ÃÀú¸¦ SPI ¸Å´ÏÀú·ÎºÎÅÍ Áß´ÜÇÑ´Ù
SPI_push -- ¹Ýº¹ÀûÀ¸·Î SPI¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï SPI ½ºÅÃÀ» Çã¿ëÇÑ´Ù
SPI_pop -- ¹Ýº¹ÀûÀÎ SPIÀÇ »ç¿ëÀ¸·ÎºÎÅÍ º¹±ÍÇÒ ¼ö ÀÖµµ·Ï SPI ½ºÅÃÀ» ÆË ÇÑ´Ù
SPI_execute -- ¸í·ÉÀ» ½ÇÇàÇÑ´Ù
SPI_exec -- ÀÐ°í ¾²±â ¸í·ÉÀ» ½ÇÇàÇÑ´Ù
SPI_prepare -- ¸í·ÉÀÇ °èȹÀ» ÁغñÇÑ´Ù. ¸í·ÉÀÇ ½ÇÇàÀº ¾ÆÁ÷ ½Ç½ÃÇÏÁö ¾Ê´Â´Ù
SPI_getargcount -- SPI_prepare¿¡ ÀÇÇØ ÁغñµÈ °èȹ¿¡ ÇÊ¿äÇÏ°Ô µÇ´Â ÀÎÀÚÀÇ ¼ö¸¦ µ¹·ÁÁØ´Ù
SPI_getargtypeid -- SPI_prepare·Î ÁغñµÈ °èȹÀ¸·Î ÁöÁ¤µÇ´Â ÀÎÀÚÀÇ µ¥ÀÌÅÍÇüÀÇ OID¸¦ µ¹·ÁÁØ´Ù.
SPI_is_cursor_plan -- SPI_prepare·Î ÁغñµÈ °èȹÀÌ SPI_cursor_open ·Î »ç¿ëµÉ ¼ö ÀÖ´Â °æ¿ì¿¡ true¸¦ µ¹·ÁÁØ´Ù.
SPI_execute_plan -- SPI_prepare·Î ÁغñµÈ °èȹÀ» ½ÇÇàÇÑ´Ù
SPI_execp -- ÀÐ°í ¾²±â ¸ðµå·Î °èȹÀ» ½ÇÇàÇÑ´Ù
SPI_cursor_open -- SPI_prepare·Î ÀÛ¼ºµÈ °èȹÀ» »ç¿ëÇÑ Ä¿¼­¸¦ ¼³Á¤ÇÑ´Ù
SPI_cursor_find -- ±âÁ¸ÀÇ Ä¿¼­¸¦ À̸§À¸·Î °Ë»öÇÑ´Ù
SPI_cursor_fetch -- Ä¿¼­·ÎºÎÅÍ ¸î ÇàÀ» ²¨³½´Ù
SPI_cursor_move -- Ä¿¼­¸¦ À̵¿ÇÑ´Ù
SPI_cursor_close -- Ä¿¼­¸¦ ´Ý´Â´Ù
SPI_saveplan -- °èȹÀ» º¸Á¸ÇÑ´Ù
41.2. ÀÎÅÍÆäÀ̽º ¼­Æ÷Æ® ÇÔ¼ö
SPI_fname -- ÁöÁ¤ÇÑ ¿­¹øÈ£¿¡ ´ëÇÑ ·Ä¸íÀ» °áÁ¤ÇÑ´Ù
SPI_fnumber -- ÁöÁ¤ÇÑ ·Ä¸íÀ¸·ÎºÎÅÍ ¿­¹øÈ£¸¦ °áÁ¤ÇÑ´Ù
SPI_getvalue -- ÁöÁ¤µÈ ¿­ÀÇ Ä³¸¯ÅÍ ¶óÀÎÄ¡¸¦ µ¹·ÁÁØ´Ù
SPI_getbinval -- ÁöÁ¤ÇÑ ¿­ÀÇ ¹ÙÀ̳ʸ®°ªÀ» µ¹·ÁÁØ´Ù
SPI_gettype -- ÁöÁ¤µÈ ¿­ÀÇ µ¥ÀÌÅÍÇü¸íÀ» µ¹·ÁÁØ´Ù
SPI_gettypeid -- ÁöÁ¤µÈ ¿­ÀÇ µ¥ÀÌÅÍÇüÀÇ OID¸¦ µ¹·ÁÁØ´Ù
SPI_getrelname -- ÁöÁ¤µÈ ¸±·¹À̼ÇÀÇ À̸§À» µ¹·ÁÁØ´Ù
SPI_getnspname -- ÁöÁ¤µÈ ¸±·¹À̼ÇÀÇ À̸§ °ø°£À» µ¹·ÁÁØ´Ù.
41.3. ¸Þ¸ð¸® °ü¸®
SPI_palloc -- »óÀ§ ÁýÇàÀÚ ÄÁÅØ½ºÆ®³»¿¡ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ´Ù
SPI_repalloc -- »óÀ§ ÁýÇàÀÚÄÁÅØ½ºÆ®³»¿¡ ¸Þ¸ð¸®¸¦ ÀçÇÒ´çÇÑ´Ù
SPI_pfree -- »óÀ§ ÁýÇàÀÚÄÁÅØ½ºÆ®³»ÀÇ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÑ´Ù
SPI_copytuple -- »óÀ§ ÁýÇàÀÚ³»¿¡ ÇàÀÇ º¹»ç¸¦ ÀÛ¼ºÇÑ´Ù
SPI_returntuple -- Datum·Î¼­ Æ©ÇÃÀ» µ¹·ÁÁÙ Áغñ¸¦ ÇÑ´Ù
SPI_modifytuple -- ÁÖ¾îÁø ÇàÀÇ ¼±Åà Çʵ带 ¿Å°Ü³õÀº ÇàÀ» ÀÛ¼ºÇÑ´Ù
SPI_freetuple -- »óÀ§ ÇàÀ§ÀÚÄÁÅØ½ºÆ®³»¿¡ ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø ÇàÀ» ÇØÁ¦ÇÑ´Ù
SPI_freetuptable -- SPI_execute³ª À¯»çÇÑ ÇÔ¼ö¿¡ ÀÇÇØ »ý¼ºµÈ Çà ¼¼Æ®¸¦ ÇØÁ¦ÇÑ´Ù
SPI_freeplan -- ÀÌÀü¿¡ º¸Á¸ÇÑ °èȹÀ» ÇØÁ¦ÇÑ´Ù
41.4. µ¥ÀÌÅÍ º¯°æÀÇ °¡½Ã¼º
41.5. ¿¹

¼­¹ö ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º(SPI)´Â, »ç¿ëÀÚ Á¤ÀÇÀÇ CÇÔ¼ö·ÎºÎÅÍ SQLÄõ¸® ½ÇÇàÇÏ´Â ±â´ÉÀ» »ç¿ëÀÚ¿¡°Ô Á¦°øÇÕ´Ï´Ù. SPI´Â ÆÄ¼­, Ç÷¡³Ê, ÁýÇàÀÚ¿¡ÀÇ Á¢¼ÓÀ» ´Ü¼øÈ­ ÇÑ ÀÎÅÍÆäÀ̽º ÇÔ¼öÀÇ ÁýÇÕÀÔ´Ï´Ù. ¶Ç, SPI´Â ¸Þ¸ð¸® °ü¸®¸¦ ½Ç½ÃÇÕ´Ï´Ù.

Note: ÀÌ¿ë °¡´ÉÇÑ ¼ö¼Ó ¾ð¾î´Â, ÇÁ·Î½ÃÀú·ÎºÎÅÍ SQL ¸í·ÉÀ» ½ÇÇàÇϱâ À§ÇÑ °¢Á¾ ¼ö´ÜÀ» Á¦°øÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ´ëºÎºÐÀº, SPI¸¦ ¹ÙÅÁÀ¸·Î Çϰí Àֱ⠶§¹®¿¡, ÀÌ ¹®¼­´Â ÀÌ·¯ÇÑ ¾ð¾îÀÇ »ç¿ëÀÚ¿¡ À־µµ À¯¿ëÇÑ °æ¿ì°¡ ÀÖ½À´Ï´Ù.

¿ÀÇØ¸¦ ¸·±â À§Çؼ­, ÀÌ ÀÌÈÄ, "ÇÔ¼ö"¸¦ SPIÀÎÅÍÆäÀ̽º ÇÔ¼öÀÇ Àǹ̷Î, "ÇÁ·Î½ÃÀú"¸¦ SPI¸¦ È£ÃâÇÏ´Â »ç¿ëÀÚ Á¤ÀÇÀÇ CÇÔ¼öÀÇ Àǹ̷Π»ç¿ëÇϱâ·Î ÇϰڽÀ´Ï´Ù.

¸í·ÉÀÌ SPIÀÇ ½ÇÆÐ¸¦ ÀÏÀ¸Ä×À» °æ¿ì, ±× Á¦¾î´Â ÇÁ·Î½ÃÀú¿¡´Â µ¹¾Æ¿ÀÁö ¾Ê´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. ±× »Ó¸¸ ¾Æ´Ï¶ó, ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇϰí ÀÖ´ø Æ®·£Àè¼Ç ȤÀº ¼­ºêÆ®·£Àè¼ÇÀº ·Ñ¹é(rollback) µË´Ï´Ù (À̰ÍÀº SPI ÇÔ¼öÀÇ ´ëºÎºÐÀ¸·Î ¿¡·¯¸¦ µ¹·ÁÁÖ´Â ±Ô¾àÀÌ ÀÖ´Â °ÍÀ¸·ÎºÎÅÍ ÀÌ»óÇÏ°Ô »ý°¢µÉÁöµµ ¸ð¸¨´Ï´Ù. ±×·¯³ª, ÀÌ·¯ÇÑ ±Ô¾àÀº SPI ÇÔ¼ö ÀÚ½ÅÀ¸·Î ¿¡·¯¸¦ °¨ÁöÇßÀ» ¶§¿¡°Ô¸¸ Àû¿ëµÇ´Â °ÍÀÔ´Ï´Ù). ½ÇÆÐÇÒ °¡´É¼ºÀÌ ÀÖ´Â SPI È£ÃâÀ» µÑ·¯½Î´Â ¼­ºêÆ®·£Àè¼ÇÀ» µ¶ÀÚÀûÀ¸·Î ÁغñÇÏ´Â °ÍÀ¸·Î, ¿¡·¯ ÈÄÀÇ Á¦¾î¸¦ µÇµ¹¸± ¼ö°¡ ÀÖ½À´Ï´Ù. ¿ä±¸µÇ´Â ±â¹ýÀÌ ¾ÆÁ÷ À¯µ¿ÀûÀ̱⠶§¹®¿¡, À̰ÍÀº ¾ÆÁ÷ ¹®¼­È­ µÇ°í ÀÖÁö ¾Ê½À´Ï´Ù.

SPIÇÔ¼ö´Â ¼º°ø½Ã¿¡ ºÎ°¡ ¾Æ´Ñ °á°ú¸¦(¹Ýȯ°ª, ȤÀº ÈļúÀÇSPI_result±Û·Î¹ú º¯¼ö¾È¿¡) µ¹·ÁÁÝ´Ï´Ù. ¿¡·¯½Ã, ºÎÀÇ °á°ú ȤÀº NULL¸¦ µ¹·ÁÁÝ´Ï´Ù.

SPI¸¦ »ç¿ëÇÏ´Â ¼Ò½º ÄÚµå ÆÄÀÏ¿¡¼­´Â executor/spi.hÇì´õ ÆÄÀÏÀ» Æ÷ÇÔÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.