| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 29. libpq - C ¶óÀ̺귯¸® | Fast Forward | Next |
PQexecÇÔ¼ö´Â ÀϹÝÀûÀÎ µ¿±âÈ ¾îÇø®ÄÉÀ̼ǿ¡ ÀÖ¾î¼ Ä¿¸Çµå Àü¼Û¿¡ ÀûÀýÇÑ °ÍÀÔ´Ï´Ù.
±×·¯³ª ÀϺÎÀÇ À¯Àú¿¡°Ô ÀÖ¾î Áß¿äÇÑ ¹®Á¦°¡ µÉ ¼ö ÀÖ´Â 2°³ÀÇ ¹®Á¦°¡ ÀÖ½À´Ï´Ù.
PQexec ´Â Ä¿¸Çµå°¡ ¿Ï·áÇÒ ¶§±îÁö ´ë±âÇÕ´Ï´Ù.
¾îÇø®ÄÉÀ̼ǿ¡ µû¶ó¼´Â(¿¹¸¦ µé¸é À¯Àú ÀÎÅÍÆäÀ̽ºÀÇ º¸°ü°ú °°Àº) ±× ¹Û¿¡ ½Ç½ÃÇØ¾ß ÇÒ ÀÛ¾÷ÀÌ ÀÖ½À´Ï´Ù.
ÀÌ °æ¿ì´Â ÀÀ´ä ´ë±â·Î Â÷´ÜµÇ´Â °ÍÀ» ¿øÄ¡ ¾Ê½À´Ï´Ù.
Ŭ¶óÀÌ¾ðÆ® ¾îÇø®ÄÉÀ̼ÇÀÇ ½ÇÇàÀÌ °á°ú¸¦ ±â´Ù¸®°í ÀÖ´Â µ¿¾È Á¤ÁöµÇ±â ¶§¹®¿¡, ¾îÇø®ÄÉÀ̼ÇÀ¸·Î Àü¼ÛÇÑ Ä¿¸Çµå¸¦ Ãë¼Ò½ÃŰ´Â Áö½Ã´Â °ï¶õÇÕ´Ï´Ù. (½Ã±×³Î Çڵ鷯¸¦ »ç¿ëÇØ ´Þ¼ºÇÒ ¼ö ÀÖÁö¸¸, ´Ù¸¥ ¹æ¹ýÀº ¾ø½À´Ï´Ù. )
PQexec°¡ ¹ÝȯÇÒ ¼ö ÀÖ´Â PGresult±¸Á¶´Â Çϳª »ÓÀÔ´Ï´Ù.
¸¸¾à Àü¼ÛÇÑ Äõ¸® ¹®ÀÚ¿ÀÌ º¹¼öÀÇSQLÄ¿¸Çµå¸¦ Æ÷ÇÔÇϰí ÀÖ´Â °æ¿ì,
PQexec´Â ¸¶Áö¸· °Í¸¸À» Á¦¿ÜÇϰí, ³²¾ÆÀÖ´ÂPGresult¸¦ ÆÄ±âÇØ ¹ö¸³´Ï´Ù.
¾îÇø®ÄÉÀ̼ǿ¡°Ô ÀÌ·¯ÇÑ Á¦¾àÀÌ ¹Ù¶÷Á÷ÇÏÁö ¾ÊÀº °æ¿ì, ´ë½Å¿¡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 Áغñ°¡ µÉ ¶§±îÁö ±â´Ù¸®°í, À§¿¡¼ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ ÀÀ´äÀ» Àо Áֽʽÿä.