29.4. ºñµ¿±â Ä¿¸ÇµåÀÇ Ã³¸®

PQexecÇÔ¼ö´Â ÀϹÝÀûÀÎ µ¿±âÈ­ ¾îÇø®ÄÉÀ̼ǿ¡ À־ Ä¿¸Çµå Àü¼Û¿¡ ÀûÀýÇÑ °ÍÀÔ´Ï´Ù. ±×·¯³ª ÀϺÎÀÇ À¯Àú¿¡°Ô ÀÖ¾î Áß¿äÇÑ ¹®Á¦°¡ µÉ ¼ö ÀÖ´Â 2°³ÀÇ ¹®Á¦°¡ ÀÖ½À´Ï´Ù.

¾îÇø®ÄÉÀ̼ǿ¡°Ô ÀÌ·¯ÇÑ Á¦¾àÀÌ ¹Ù¶÷Á÷ÇÏÁö ¾ÊÀº °æ¿ì, ´ë½Å¿¡PQexec¸¦ ±¸¼ºÇÏ´Â ÇÔ¼öPQsendQuery¿Í PQgetResult¸¦ »ç¿ëÇØ Áֽʽÿä. ¶ÇÇÑ, PQsendQueryParams¿Í PQsendPrepare, PQsendQueryPrepared, PQsendDescribePrepared, PQsendDescribePortalµµ ÀÖ¾î, PQgetResult¸¦ »ç¿ëÇϰí, °¢°¢PQexecParams¿Í PQprepare, PQexecPrepared, PQdescribePrepared, PQdescribePortal¿Í µ¿ÀÏÇÑ ±â´ÉÀ» ½Ç½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

PQsendQuery

°á°ú¸¦ ±â´Ù¸®´Â ÀÏ ¾øÀÌ, ¼­¹ö¿¡ Ä¿¸Çµå¸¦ ¹ßÇàÇÕ´Ï´Ù. Ä¿¸ÇµåÀÇ µî·Ï¿¡ ¼º°øÇßÀ» °æ¿ì 1ÀÌ, ½ÇÆÐÇßÀ» °æ¿ì 0ÀÌ ¹ÝȯµË´Ï´Ù. (ÈÄÀÚÀÇ °æ¿ì, PQerrorMessage ¸¦ »ç¿ëÇØ ½ÇÆÐ¿¡ ´ëÇѺ¸´Ù ¸¹Àº Á¤º¸¸¦ È®ÀÎÇØ Áֽʽÿä. )

int PQsendQuery(PGconn *conn, const char *command);

PQsendQueryÈ£ÃâÀÌ ¼º°øÇϸé, PQgetResult¸¦ ¹Ýº¹ È£ÃâÇØ, ½ÇÇà °á°ú¸¦ ÃëµæÇÕ´Ï´Ù. PQgetResult°¡ null Æ÷ÀÎÅ͸¦ µ¹·ÁÁÖ¾î, Ä¿¸Çµå°¡ ¿Ï·á·Î ³ªÅ¸³¾ ¶§±îÁö´Â (°°Àº Á¢¼Ó¿¡¼­)PQsendQuery¸¦ ÀçÂ÷ È£ÃâÇÒ ¼ö ¾ø½À´Ï´Ù.

PQsendQueryParams

°á°ú¸¦ ±â´Ù¸®´Â ÀÏ ¾øÀÌ, ¼­¹ö¿¡ Ä¿¸Çµå¿Í ÆÄ¶ó¹ÌÅ͸¦ ³ª´©¾î ¹ßÇàÇÕ´Ï´Ù.

int PQsendQueryParams(PGconn *conn,
                      const char *command,
                      int nParams,
                      const Oid *paramTypes,
                      const char * const *paramValues,
                      const int *paramLengths,
                      const int *paramFormats,
                      int resultFormat);

ÀÌ´Â Äõ¸®ÀÇ ÆÄ¶ó¹ÌÅͰ¡ Äõ¸® ¹®ÀÚ¿­°ú ³ª´©¾î ÁöÁ¤ÇÒ ¼ö ÀÖ´Â Á¡À» Á¦¿ÜÇØ, PQsendQuery¿Í °°½À´Ï´Ù. ÀÌ ÇÔ¼öÀÇ ÆÄ¶ó¹ÌÅÍ´Â PQexecParams¿Í °°ÀÌ ´Ù·ç¾îÁý´Ï´Ù. PQexecParams°°ÀÌ, À̰ÍÀº 2.0 ÇÁ·ÎÅäÄÝ¿¡¼­´Â µ¿ÀÛÇÏÁö ¾Ê°í, Äõ¸® ¹®ÀÚ¿­¿¡´Â ÇϳªÀÇ Ä¿¸Çµå ¹Û¿¡ ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù.

PQsendPrepare

ÁöÁ¤ ÆÄ¶ó¹ÌÅ͸¦ °¡Áú ÁغñµÈ ¹®ÀåÀÇ »ý¼º ¿ä±¸¸¦ Àü¼ÛÇÕ´Ï´Ù. ±× ¿Ï·á¸¦ ±â´Ù¸®Áö ¾Ê½À´Ï´Ù.

int PQsendPrepare(PGconn *conn,
                  const char *stmtName,
                  const char *query,
                  int nParams,
                  const Oid *paramTypes);

À̰ÍÀºPQprepareÀÇ ºñµ¿±âÈ­ÀÔ´Ï´Ù. ¿ä±¸ µî·Ï¿¡ ¼º°øÇßÀ» °æ¿ì 1ÀÌ, ½ÇÆÐÇßÀ» °æ¿ì 0ÀÌ ¹ÝȯµË´Ï´Ù. È£Ãâ ¼º°ø µÚ, ¼­¹ö°¡ ÁغñµÈ ¹®ÀåÀÇ »ý¼º¿¡ ¼º°øÇß´ÂÁö È®ÀÎÇϱâ À§Çؼ­´Â PQgetResult¸¦ È£ÃâÇØ Áֽʽÿä. ÀÌ ÇÔ¼öÀÇ ÆÄ¶ó¹ÌÅÍ´Â PQprepare¿Í °°°Ô ´Ù·ç¾îÁý´Ï´Ù. PQprepare°°ÀÌ, À̰ÍÀº 2.0 ÇÁ·ÎÅäÄÝÀÇ Á¢¼Ó¿¡¼­´Â µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù.

PQsendQueryPrepared

°á°ú¸¦ ±â´Ù¸®´Â ÀÏ ¾øÀÌ, ÁöÁ¤ÇÑ ÆÄ¶ó¹ÌÅÍ·Î ÁغñµÈ ¹®ÀåÀÇ ½ÇÇà ¿ä±¸¸¦ Àü¼ÛÇÕ´Ï´Ù.

int PQsendQueryPrepared(PGconn *conn,
                        const char *stmtName,
                        int nParams,
                        const char * const *paramValues,
                        const int *paramLengths,
                        const int *paramFormats,
                        int resultFormat);

À̰ÍÀºPQsendQueryParams¿Í À¯»çÇÏÁö¸¸, ½ÇÇàµÇ´Â Ä¿¸Çµå´Â Äõ¸® ¹®ÀÚ¿­ÀÌ ¾Æ´Ï°í, »çÀü¿¡ ÁغñµÈ ¹®ÀåÀÇ À̸§À¸·Î ÁöÁ¤µË´Ï´Ù. ÀÌ ÇÔ¼öÀÇ ÆÄ¶ó¹ÌÅÍ´Â PQexecPrepared¿Í °°°Ô ´Ù·ç¾îÁý´Ï´Ù. PQexecPrepared°°ÀÌ, À̰ÍÀº 2.0 ÇÁ·ÎÅäÄÝ¿¡¼­´Â µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù.

PQsendDescribePrepared

ÁöÁ¤ÇÑ ÁغñµÈ ¹®Àå¿¡ °üÇÑ Á¤º¸ ÀÔ¼ö ¿ä±¸¸¦ º¸³À´Ï´Ù. ÀÔ¼ö ¿Ï·á±îÁö ´ë±âÇÏÁö ¾Ê½À´Ï´Ù.

int PQsendDescribePrepared(PGconn *conn, const char *stmtName);

À̰ÍÀºPQdescribePreparedÀÇ ºñµ¿±âÈ­ÀÔ´Ï´Ù. ¿ä±¸ Á¢¼ö°¡ °¡´ÉÇϸé 1ÀÌ ¹ÝȯµË´Ï´Ù. ºÒ°¡´ÉÇϸé 0ÀÌ ¹ÝȯµË´Ï´Ù. È£Ãâ¿¡ ¼º°øÇÑ ÈÄ, PQgetResult¸¦ È£ÃâÇØ °á°ú¸¦ ÀÔ¼öÇØ Áֽʽÿä. ÀÌ ÇÔ¼öÀÇ ÆÄ¶ó¹ÌÅÍ´Â PQdescribePrepared¿Í °°ÀÌ ´Ù·ç¾îÁý´Ï´Ù. PQdescribePrepared°°ÀÌ, 2.0 ÇÁ·ÎÅäÄÝ Á¢¼Ó¿¡¼­´Â µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù.

PQsendDescribePortal

ÁöÁ¤ÇÑ Æ÷Åп¡ °üÇÑ Á¤º¸ ÀÔ¼ö ¿ä±¸¸¦ Àü¼ÛÇÕ´Ï´Ù. ¿Ï·á±îÁö ´ë±âÇÏÁö ¾Ê½À´Ï´Ù.

int PQsendDescribePortal(PGconn *conn, const char *portalName);

À̰ÍÀºPQdescribePortalÀÇ ºñµ¿±âÈ­ÀÔ´Ï´Ù. ¿ä±¸ Á¢¼ö°¡ °¡´ÉÇϸé 1ÀÌ ¹ÝȯµË´Ï´Ù. ºÒ°¡´ÉÇϸé 0ÀÌ ¹ÝȯµË´Ï´Ù. È£Ãâ¿¡ ¼º°øÇÑ ÈÄ, PQgetResult¸¦ È£ÃâÇØ °á°ú¸¦ ÀÔ¼öÇØ Áֽʽÿä. ÀÌ ÇÔ¼öÀÇ ÆÄ¶ó¹ÌÅÍ´Â PQdescribePortal¿Í °°ÀÌ ´Ù·ç¾îÁý´Ï´Ù. PQdescribePortal°°ÀÌ, 2.0 ÇÁ·ÎÅäÄÝ Á¢¼Ó¿¡¼­´Â µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù.

PQgetResult

ÀÌÀü¿¡ È£ÃâÇÑPQsendQuery, PQsendQueryParams, PQsendPrepare, PQsendQueryPrepared·ÎºÎÅÍ ´ÙÀ½ÀÇ °á°ú¸¦ ±â´Ù¸®°í, ±× °á°ú¸¦ ¹ÝȯÇÕ´Ï´Ù. Ä¿¸Çµå°¡ ¿Ï·áÇØ, ´õ ÀÌ»ó °á°ú°¡ ¾ø´Â °æ¿ì´Â null Æ÷ÀÎÅͰ¡ ¹ÝȯµË´Ï´Ù.

PGresult *PQgetResult(PGconn *conn);

PQgetResult´Â Ä¿¸ÇµåÀÇ ¿Ï·á¸¦ ³ªÅ¸³»´Â null Æ÷ÀÎÅͰ¡ µ¹¾Æ°¥ ¶§±îÁö, ¹Ýº¹ÇØ È£ÃâÇØ¾ß ÇÕ´Ï´Ù. (Ä¿¸Çµå ½ÇÇà ÁßÀÌÁö ¾ÊÀ» ¶§ÀÇ È£Ãâ¿¡¼­ PQgetResult´Â ´ÜÁö null Æ÷ÀÎÅ͸¦ ¹ÝȯÇÕ´Ï´Ù. ) PQgetResultÀÇ null ÀÌ¿ÜÀÇ °á°ú´Â °¢°¢ Àü¿¡ »ìÆì º»PGresult¿¢¼¼¼­ ÇÔ¼ö¸¦ »ç¿ëÇØ ó¸®µÇ¾ß ÇÕ´Ï´Ù. °¢ °á°ú ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ Ã³¸®°¡ ³¡³ª¸é, ±× ¿ÀºêÁ§Æ®¸¦PQclear¸¦ »ç¿ëÇØ ÇØÁ¦ÇÏ´Â °ÍÀ» ÀØÁö ¸»¾Æ Áֽʽÿä. Ä¿¸Çµå°¡ Ȱµ¿ ÁßÀ̰í, ÇÊ¿äÇÑ ÀÀ´ä µ¥ÀÌÅͰ¡ ¾ÆÁ÷PQconsumeInput·Î ÀÐÈ÷Áö ¾ÊÀº °æ¿ì¸¸, PQgetResult°¡ Â÷´ÜÇÏ´Â °ÍÀ» ÁÖÀÇÇϽʽÿä.

PQsendQuery¿Í PQgetResult¸¦ »ç¿ëÇÏ´Â °ÍÀ¸·ÎPQexecÀÇ ¹®Á¦ Áß Çϳª´Â ÇØ°áµË´Ï´Ù. Áï, Ä¿¸Çµå°¡ º¹¼öÀÇSQLÄ¿¸Çµå¸¦ Æ÷ÇÔÇϰí ÀÖ´Â °æ¿ì¿¡¼­µµ, ÀÌ·¯ÇÑ Ä¿¸ÇµåÀÇ °á°ú¸¦ µ¶¸³ÀûÀ¸·Î ¾òÀ» ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù (À̰ÍÀº ´ÙÁß󸮸¦ ½ÉÇÃÇÑ ÇüÅ·Πó¸®ÇÕ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®´Â °°Àº Ä¿¸Çµå ¹®ÀÚ¿­¿¡¼­ ³ªÁß Äõ¸®°¡ ¾ÆÁ÷ ó¸® ÁßÀÎ µ¿¾È¿¡µµ ¸ÕÀú ¿Ï·áµÈ Ä¿¸ÇµåÀÇ °á°ú¸¦ ´Ù·ê ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ¼­¹ö°¡ ´ÙÀ½ÀÇSQLÄ¿¸Çµå 󸮿¡ µé¾î°¡¸é, ±×°ÍÀÌ ¿Ï·áÇÒ ¶§±îÁö ¿ª½ÃPQgetResult È£ÃâÀÌ ÇÁ·ÐÆ®¿£µå¸¦ Â÷´ÜÇØ ¹ö¸³´Ï´Ù. 2°³ ÀÌ»óÀÇ ÇÔ¼ö¸¦ Àß »ç¿ëÇØ À̰ÍÀ» ¸·À» ¼ö ÀÖ½À´Ï´Ù.

PQconsumeInput

¼­¹ö·ÎºÎÅÍ ÀÔ·ÂÀÌ °¡´ÉÇÒ °æ¿ìÇÏ°Ô µÇ¾úÀ» °æ¿ì, ±×°ÍÀ» ÆÄ±«ÇÕ´Ï´Ù.

int PQconsumeInput(PGconn *conn);

PQconsumeInput´Â º¸Åë, "¿¡·¯ ¾øÀ½"À» ³ªÅ¸³»´Â 1À» µ¹·ÁÁÖÁö¸¸, Àå¾Ö°¡ ÀÖÀ» °æ¿ì 0À» ¹ÝȯÇÕ´Ï´Ù. (ÀÌ °æ¿ì´Â PQerrorMessage¸¦ Âü°íÇØ Áֽʽÿä. ) ÀÌ °á°ú´Â ¾î¶°ÇÑ ÀÔ·Â µ¥ÀÌÅͰ¡ ½ÇÁ¦·Î ¼öÁýµÇ¾ú´ÂÁö¸¦ ³ªÅ¸³»°í ÀÖ´Â °ÍÀÌ ¾Æ´Ñ °Í¿¡ ÁÖÀÇÇϽʽÿä. PQconsumeInputÀÇ È£Ãâ ÈÄ, ¾îÇø®ÄÉÀ̼ÇÀºPQisBusy³ª ÇÊ¿äÇÒ °æ¿ìPQnotifies¸¦ È£ÃâÇØ »óÅ¿¡ º¯È­°¡ ¾ø´ÂÁö¸¦ Á¶»çÇÒ ¼ö ÀÖ½À´Ï´Ù.

PQconsumeInput´Â °á°ú³ª Å뺸¸¦ Ãë±ÞÇϵµ·Ï ¾ÆÁ÷ ÁغñÇÏÁö ¾Ê´Â ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅ͵µ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â À¯È¿ÇÑ µ¥ÀÌÅ͸¦ Àоîµé¿© ¹öÆÛ¿¡ º¸Á¸Çϰí, °á°úÀûÀ¸·Îselect¿¡ ÀÇÇÑ read Áغñ ¿Ï·á Å뺸¸¦ Àç¼³Á¤ ÇÕ´Ï´Ù µû¶ó¼­ ¾îÇø®ÄÉÀ̼ÇÀºPQconsumeInput¸¦ »ç¿ëÇϸéselect()ÀÇ °Ë»ç Á¶°ÇÀ» ¹Ù·Î Áö¿ï ¼ö Àֱ⠶§¹®¿¡, ³ª¸ÓÁö´Â õõÈ÷ °á°ú¸¦ Á¶»çÇÏ¸é µË´Ï´Ù.

PQisBusy

Äõ¸®°¡ º¹ÀâÇÒ °æ¿ì´Â 1À» ¸®ÅÏÇÕ´Ï´Ù. Áï,PQgetResult´Â ÀÔ·ÂÀ» ±â´Ù¸®±â À§ÇØ Â÷´ÜÇÒ °ÍÀÔ´Ï´Ù. 0ÀÌ ¸®ÅϵǸé, PQgetResult¸¦ È£ÃâÇØµµ ºí·ÏµÇÁö ¾Ê´Â °ÍÀ» º¸ÁõÇÕ´Ï´Ù.

int PQisBusy(PGconn *conn);

PQisBusyÀÚ½ÅÀº ¼­¹ö·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ÀоîµéÀÌ´Â Á¶ÀÛÀ» ÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯´Ï±î, ¿ì¼± ÃÖÃÊ·ÎPQconsumeInput¸¦ È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ±×·¸°Ô ÇÏÁö ¾ÊÀ¸¸é Busy »óŰ¡ ¾ðÁ¦±îÁö³ª °è¼ÓµË´Ï´Ù.

ÀÌ·¯ÇÑ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀº º¸Åë, select()³ª poll()¸¦ »ç¿ëÇÏ´Â ¸ÞÀÎ ·çÇÁ¸¦ °¡Á®, ´ëÀÀÇØ¾ß ÇÏ´Â ¸ðµç »óÅ¿¡ ´ë±âÇϰí ÀÖ½À´Ï´Ù. ÇϳªÀÇ Á¶°ÇÀº ¼­¹ö·ÎºÎÅÍÀÇ ÀÌ¿ë °¡´ÉÇÑ ÀÔ·ÂÀÏ °ÍÀÔ´Ï´Ù. ÀÌ´Â select()¿¡ ÀÇÇÏ¿© PQsocket·Î ½Äº°µÇ´Â ÆÄÀÏ ±â¼úÀÚ¿¡¼­ ÀоîµéÀÏ ¼ö ÀÖ´Â µ¥ÀÌÅͰ¡ ÀÖ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ¸ÞÀÎ ·çÇÁ°¡ ÀÔ·Â Áغñ¸¦ ÀÎÁöÇϸé, ±× ÀÔ·ÂÀ» ÀоîµéÀ̱â À§ÇØPQconsumeInput¸¦ È£ÃâÇØ¾ß ÇÕ´Ï´Ù. ±× ´ÙÀ½ PQisBusy´Â, PQisBusy°¡ false(0)¸¦ µ¹·ÁÁÖ´Â °æ¿ì¿¡PQgetResultµµ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, PQnotifies¸¦ È£ÃâÇØ, NOTIFY¸Þ¼¼Áö( Section 29.7¸¦ ÂüÁ¶)¸¦ °ËÃâÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

¶ÇÇÑ, PQsendQuery/PQgetResult¸¦ »ç¿ëÇϴ Ŭ¶óÀÌ¾ðÆ®´Â ¼­¹ö¿¡ ÀÇÇØ 󸮵Ǵ Ŀ¸Çµå¿¡ ´ëÇØ¼­ Ãë¼Ò¸¦ ½ÃµµÇÒ ¼ö ÀÖ½À´Ï´Ù. Section 29.5¸¦ ÂüÁ¶ÇØ Áֽʽÿä. ±×·¯³ª PQcancelÀÇ ¹Ýȯ °ª°ú °ü°è¾øÀÌ, ¾îÇø®ÄÉÀ̼ÇÀºPQgetResult¸¦ »ç¿ëÇÑ º¸ÅëÀÇ °á°ú read ¼ø¼­¸¦ °è¼ÓÇØ¾ß ÇÕ´Ï´Ù. Ãë¼Ò ÀýÂ÷ÀÇ ¼º°øÀº ´ÜÁö, ±× Ä¿¸Çµå¸¦ º¸Åë ¶§º¸´Ù »¡¸® ³¡³¾ »ÓÀÔ´Ï´Ù.

À§¿¡¼­ ¼³¸íÇÑ ÇÔ¼ö¸¦ »ç¿ëÇϰí, µ¥ÀÌÅͺ£À̽º ¼­¹ö·ÎºÎÅÍÀÇ ÀÔ·Â ±â´Ù¸®´Â ºí·ÏÀ» ½Ç½ÃÇÏÁö ³¡³¾ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ¾ÆÁ÷, ¼­¹ö·ÎÀÇ Ãâ·Â Àü¼ÛÀ» ±â´Ù¸®±â À§Çؼ­ ¾îÇø®ÄÉÀ̼ÇÀ» Â÷´ÜÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. À̰ÍÀº ºñ±³Àû µå¹°°Ô ¹ß»ýÇÏÁö¸¸, ¸Å¿ì ±ä SQL Ä¿¸Çµå³ª µ¥ÀÌÅÍ °ªÀÌ Àü¼ÛµÇ´Â °æ¿ì ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. (±×·¯³ª ¾îÇø®ÄÉÀ̼ÇÀÌCOPY IN¸¦ °ÅÄ£ µ¥ÀÌÅ͸¦ Àü¼ÛÇÏ´Â °æ¿ì ÀÚÁÖ ¹ß»ýÇÕ´Ï´Ù. ) ÀÌ·¯ÇÑ °¡´É¼ºÀ» ¸·°í, ¿ÏÀüÇÑ nonblock µ¥ÀÌÅͺ£À̽º Á¶ÀÛÀ» ½Ç½ÃÇϱâ À§Çؼ­´Â ÀÌÇÏÀÇ ÇÔ¼ö¸¦ »ç¿ëÇØ Áֽʽÿä.

PQsetnonblocking

Á¢¼ÓÀÇ nonblock »óŸ¦ ¼³Á¤ÇÕ´Ï´Ù.

int PQsetnonblocking(PGconn *conn, int arg);

arg°¡ 1ÀÇ °æ¿ì, Á¢¼Ó »óŸ¦ nonblockÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù. arg°¡ 0ÀÇ °æ¿ì´Â ºí·ÏÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù. ¹®Á¦°¡ ¾øÀ¸¸é 0ÀÌ, ¿¡·¯½Ã´Â-1ÀÌ µ¹¾Æ°©´Ï´Ù.

nonblock »óÅ¿¡¼­ PQsendQuery, PQputline, PQputnbytes¿Í PQendcopyÀÇ È£ÃâÀº Â÷´ÜµÇÁö ¾Ê½À´Ï´Ù. ±×·¯³ª À̵éÀÌ ´Ù½Ã È£ÃâµÉ Çʿ䰡 ÀÖÀ» °æ¿ì, ¿¡·¯¸¦ ´ë½Å ¸®ÅÏÇÕ´Ï´Ù.

PQexec´Â nonblock ¸ðµå¸¦ µû¸£Áö ¾Ê½À´Ï´Ù. ÀÌ ÇÔ¼öÀÇ È£ÃâÀº ¹Ýµå½Ã ºí·Ï ¹æ½Ä¿¡¼­ µ¿ÀÛÇÕ´Ï´Ù.

PQisnonblocking

µ¥ÀÌÅͺ£À̽º Á¢¼ÓÀÇ ºí·Ï »óŸ¦ ¹ÝȯÇÕ´Ï´Ù.

int PQisnonblocking(const PGconn *conn);

Á¢¼ÓÀÌ nonblock »óÅÂÀÇ °æ¿ì´Â 1ÀÌ, ºí·Ï »óÅÂÀÇ °æ¿ì´Â 0ÀÌ µ¹¾Æ°©´Ï´Ù.

PQflush

Å¥¿¡ ÀÖ¾ú´ø ¼­¹ö·ÎÀÇ Ãâ·Â µ¥ÀÌÅ͸¦ ½ñ¾Æ³»´Â ½Ãµµ¸¦ ÇÕ´Ï´Ù. ¼º°ø½Ã(¶Ç´Â, Àü¼Û Å¥°¡ ºñ¾úÀ» °æ¿ì)´Â 0ÀÌ µ¹¾Æ°©´Ï´Ù. ¾î¶°ÇÑ ¿øÀÎÀ¸·Î ½ÇÆÐÇßÀ» °æ¿ì´Â -1ÀÌ, Àü¼Û Å¥³»ÀÇ µ¥ÀÌÅ͸¦ ¸ðµÎ Àü¼ÛÇÒ ¼ö ¾ø¾ú´ø °æ¿ì´Â 1ÀÌ µ¹¾Æ°©´Ï´Ù. (À̰ÍÀº Á¢¼ÓÀÌ nonblock °æ¿ì¿¡¸¸ ¹ß»ýÇÕ´Ï´Ù. )

int PQflush(PGconn *conn);

nonblock Á¢¼Ó½Ã¿¡´Â Ä¿¸Çµå³ª µ¥ÀÌÅ͸¦ Àü¼ÛÇÑ ÈÄ¿¡, PQflush¸¦ È£ÃâÇØ Áֽʽÿä. 1ÀÌ µ¹¾Æ°¬À» °æ¿ì, ¼ÒÄÏÀÇ ÀÔ·Â Áغñ°¡ µÉ ¶§±îÁö ±â´Ù¸®°í, ÀçÂ÷ È£ÃâÇØ Áֽʽÿä. À̰ÍÀ» 0ÀÌ ¸®Å쵃 ¶§±îÁö ¹Ýº¹ÇØ Áֽʽÿä. PQflush°¡ 0À» µ¹·ÁÁØ ÈÄ¿¡´Â ¼ÒÄÏÀÇ read Áغñ°¡ µÉ ¶§±îÁö ±â´Ù¸®°í, À§¿¡¼­ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ ÀÀ´äÀ» Àо Áֽʽÿä.