41.3. ¸Þ¸ð¸® °ü¸®

Table of Contents
SPI_palloc -- »óÀ§ ÁýÇàÀÚ ÄÁÅØ½ºÆ®³»¿¡ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ´Ù
SPI_repalloc -- »óÀ§ ÁýÇàÀÚÄÁÅØ½ºÆ®³»¿¡ ¸Þ¸ð¸®¸¦ ÀçÇÒ´çÇÑ´Ù
SPI_pfree -- »óÀ§ ÁýÇàÀÚÄÁÅØ½ºÆ®³»ÀÇ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÑ´Ù
SPI_copytuple -- »óÀ§ ÁýÇàÀÚ³»¿¡ ÇàÀÇ º¹»ç¸¦ ÀÛ¼ºÇÑ´Ù
SPI_returntuple -- Datum·Î¼­ Æ©ÇÃÀ» µ¹·ÁÁÙ Áغñ¸¦ ÇÑ´Ù
SPI_modifytuple -- ÁÖ¾îÁø ÇàÀÇ ¼±Åà Çʵ带 ¿Å°Ü³õÀº ÇàÀ» ÀÛ¼ºÇÑ´Ù
SPI_freetuple -- »óÀ§ ÇàÀ§ÀÚÄÁÅØ½ºÆ®³»¿¡ ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø ÇàÀ» ÇØÁ¦ÇÑ´Ù
SPI_freetuptable -- SPI_execute³ª À¯»çÇÑ ÇÔ¼ö¿¡ ÀÇÇØ »ý¼ºµÈ Çà ¼¼Æ®¸¦ ÇØÁ¦ÇÑ´Ù
SPI_freeplan -- ÀÌÀü¿¡ º¸Á¸ÇÑ °èȹÀ» ÇØÁ¦ÇÑ´Ù

PostgreSQL´Â, ¸Þ¸ð¸® ÄÁÅØ½ºÆ® Áß¿¡ ¸Þ¸ð¸®¸¦ È®º¸ÇÕ´Ï´Ù. À̰ÍÀº, ¿©·¯ Àå¼Ò¿¡¼­, ÇÊ¿äÇÑ À¯È¿±â°£ÀÌ °¢°¢ ´Ù¸¥ ÇÒ´çÀ» °ü¸®ÇÏ´Â Æí¸®ÇÑ ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù. ¹®¸ÆÀ» ÆÄ±«ÇÏ´Â °ÍÀ¸·Î, °Å±â¼­ ÇÒ´çÇÒ ¼ö ÀÖ´ø ¸ðµç ¸Þ¸ð¸®¸¦ ÇØ¹æÇÕ´Ï´Ù. µû¶ó¼­, ¸Þ¸ð¸® ´©¼ö¸¦ ¸·±â À§ÇÑ °³°³ÀÇ °´Ã¼ÀÇ ÃßÀûÀ» À¯ÁöÇÏ´Â °ÍÀº ºÒÇÊ¿äÇÕ´Ï´Ù. ±× ´ë½Å, »ó´ëÀûÀ¸·Î ¼Ò·®ÀÇ ¹®¸ÆÀ» °ü¸®ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. palloc¿Í °ü·ÃÇÏ´Â ÇÔ¼ö´Â "ÇöÀçÀÇ"¹®¸ÆÀ¸·ÎºÎÅÍ ¸Þ¸ð¸®¸¦ È®º¸ÇÕ´Ï´Ù.

SPI_connect´Â »õ·Ó°Ô ¸Þ¸ð¸®ÄÁÅØ½ºÆ®¸¦ ÀÛ¼ºÇØ, ±×°ÍÀ» ÇöÀçÀÇ ¹®¸ÆÀ¸·Î ÇÕ´Ï´Ù. SPI_finish´Â Á÷ÀüÀÇ ÇöÀçÀÇ ¸Þ¸ð¸®ÄÁÅØ½ºÆ®¸¦ µÇµ¹·Á, SPI_connect·Î ÀÛ¼ºµÈ ¹®¸ÆÀ» ÆÄ±«ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ µ¿ÀÛ¿¡ ÀÇÇØ, ÇÁ·Î½ÃÀú³»¿¡¼­ ÇÒ´çÀ» ÇÏ´Â ÀϽÃÀûÀÎ ¸Þ¸ð¸®°¡ ÇÁ·Î½ÃÀúÀÇ Á¾·á½Ã¿¡ ȸ¼öµÇ¾î ¸Þ¸ð¸® ´©¼ö°¡ ¹æÁöµÇ´Â °ÍÀÌ º¸ÁõµË´Ï´Ù.

±×·¯³ª, (ÂüÁ¶ ÀεµÀÇ µ¥ÀÌÅÍÇüÀÇ °ªÀ̶ó°í ÇÏ´Â) ÇÁ·Î½ÃÀú¸¦ ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø ¸Þ¸ð¸® ³»ÀÇ °´Ã¼¸¦ µ¹·ÁÁÙ Çʿ䰡 ÀÖ´Â °æ¿ì, Àû¾îµµ SPI¿¡ Á¢¼ÓÇϰí ÀÖÁö ¾Ê´Â µ¿¾ÈÀº, palloc¸¦ »ç¿ëÇØ ¸Þ¸ð¸®¸¦ È®º¸ÇÒ ¼ö°¡ ¾ø½À´Ï´Ù. À̰ÍÀ» ½ÃÇàÇϸé, ±× °´Ã¼´Â SPI_finish·Î ÇØÁ¦µÇ¾î ¹ö·Á, ÇÁ·Î½ÃÀú°¡ ¿Ã¹Ù¸£°Ô µ¿ÀÛÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é, SPI_palloc¸¦ »ç¿ëÇØ, ¹Ýȯ°ªÀÌ µÇ´Â °´Ã¼¿ëÀÇ ¸Þ¸ð¸®¸¦ È®º¸ÇØ ÁÖ¼¼¿ä. SPI_palloc´Â "»óÀ§ ÁýÇàÀÚ ÄÁÅØ½ºÆ®"³»¿¡ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÕ´Ï´Ù. ÀÌ ¸Þ¸ð¸®ÄÁÅØ½ºÆ®´Â, SPI_connect°¡ ºÒ·Á °£ ½ÃÁ¡¿¡ µÎ¾î ÇöÀçÀÇ ¹®¸ÆÀ̾ú´ø °ÍÀ̸ç, ÇÁ·Î½ÃÀúÀÇ ¹Ýȯ°ª¿ëÀÇ ¹®¸ÆÀ¸·Î ÇØ È®½ÇÈ÷ ¿Ã¹Ù¸¥ °ÍÀÔ´Ï´Ù.

ÇÁ·Î½ÃÀú°¡ SPI¿¡ ¹ÌÁ¢¼ÓÀÎ »óÅ·ΠSPI_palloc °¡ ºÒ·Á °¡¸é, º¸Åë palloc¿Í °°ÀÌ µ¿ÀÛÇÕ´Ï´Ù. ÇÁ·Î½ÃÀú°¡ SPI ¸Å´ÏÀú¿¡ Á¢¼ÓÇϱâ Àü¿¡¼­´Â, ÇöÀçÀÇ ¸Þ¸ð¸®ÄÜÅ×Ű½ºÆ®´Â »óÀ§ ÁýÇàÀÚ ÄÁÅØ½ºÆ®À̸ç, ±× ¶§¹®¿¡, ÇÁ·Î½ÃÀú·ÎºÎÅÍ palloc³ª SPI À¯Æ¿¸®Æ¼ ÇÔ¼ö °æÀ¯·Î µÈ ÇÒ´çÀº ÀÌ ¹®¸ÆÀ¸·Î ÀÛ¼ºµË´Ï´Ù.

SPI_connect°¡ ºÒ·Á °¡¸é, SPI_connect¿¡ ÀÇÇØ ÀÛ¼ºµÇ´Â ÇÁ·Î½ÃÀú °íÀ¯ÀÇ ¹®¸ÆÀÌ ÇöÀçÀÇ ¹®¸Æ¿¡ ÀÛ¼ºµË´Ï´Ù. palloc,repalloc, SPI À¯Æ¿¸®Æ¼ ÇÔ¼ö(SPI_copytuple, SPI_returntuple, SPI_modifytuple, SPI_paÁ¦loc´Â Á¦¿ÜÇÕ´Ï´Ù)¿¡ ÀÇÇØ ÀÛ¼ºµÇ´Â ÇÒ´çÀº ¸ðµÎ, ÀÌ ¹®¸Æ³»¿¡ ÀÛ¼ºµË´Ï´Ù. ÇÁ·Î½ÃÀú°¡ SPI ¸Å´ÏÀú·ÎºÎÅÍ(SPI_finish°æÀ¯·Î) Áß´ÜÇßÀ» ¶§, ÇöÀçÀÇ ¹®¸ÆÀº »óÀ§ ÁýÇàÀÚ ÄÁÅØ½ºÆ®¿¡ µÇµ¹·ÁÁ® ÇÁ·Î½ÃÁ®¸Þ¸ð¸®ÄÁÅØ½ºÆ®³»¿¡¼­ ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø ¸Þ¸ð¸®´Â ¸ðµÎ ÇØÁ¦µÇ¾î µÎ ¹ø ´Ù½Ã »ç¿ëÇÒ ¼ö°¡ ¾ø½À´Ï´Ù.

º»Àý¿¡¼­ ¼³¸íÇÏ´Â ÇÔ¼ö´Â ¸ðµÎ, Á¢¼Ó »óÅÂ, ¹ÌÁ¢¼Ó »óÅÂÀÇ ¾î´À ÂÊÀÇ ÇÁ·Î½ÃÀú·ÎºÎÅÍµç »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¹ÌÁ¢¼ÓÀÇ ÇÁ·Î½ÃÀú¿¡¼­´Â, ¹èÈÄ¿¡ ÀÖ´Â Åë»óÀÇ ¼­¹ö ÇÔ¼ö(pallocµî)¿Í °°°Ô µ¿ÀÛÇÕ´Ï´Ù.