| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 29. libpq - C ¶óÀ̺귯¸® | Fast Forward | Next |
¼¹ö·Î ÀÎÇØ »ý¼ºµÇ´Â ÁÖÀÇ/°æ°í ¸Þ¼¼Áö´Â Äõ¸® ½ÇÇà ÇÔ¼ö¿¡¼ ¹ÝȯµÇÁö ¾Ê½À´Ï´Ù. À̰͵éÀÌ Äõ¸®ÀÇ ½ÇÆÐ¸¦ ÀǹÌÇÏ´Â °ÍÀº ¾Æ´Ï±â ¶§¹®ÀÔ´Ï´Ù. ±× ´ë½Å¿¡, À̵éÀº °æ°í ó¸® ÇÔ¼ö¿¡°Ô °Ç³×Áö°í, Çڵ鷯°¡ µ¹¾Æ¿Â ÈÄ, ÀϹÝÀûÀÎ ½ÇÇàÀÌ °è¼ÓµË´Ï´Ù. µðÆúÆ®ÀÎ °æ°í ó¸® ÇÔ¼ö´Â ¸Þ¼¼Áö¸¦stderr¿¡ Ãâ·ÂÇÕ´Ï´Ù. ±×·¯³ª ¾îÇø®ÄÉÀ̼ÇÀº ÀÌ µ¿ÀÛÀ» °ãÃÄ ½á¼, µ¶ÀÚÀûÀΠó¸® ÇÔ¼ö¸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿ª»çÀûÀÎ ÀÌÀ¯¿¡ ÀÇÇØ, °æ°í 󸮿¡´Â °æ°í ¸®½Ã¹ö¿Í °æ°í ÇÁ·Î¼¼¼·Î ºÒ¸®´Â 2 ·¹º§ÀÌ ÀÖ½À´Ï´Ù. µðÆúÆ® µ¿ÀÛ¿¡¼´Â °æ°í ¸®½Ã¹ö´Â °æ°í ¼½ÄÀ» Á¤µ·Çϰí, °æ°í ÇÁ·Î¼¼¼¿¡ ¹®ÀÚ¿À» °Ç³×ÁÝ´Ï´Ù. ±×·¯³ª º¸Åë, µ¶ÀÚÀûÀÎ °æ°í ¸®½Ã¹ö¸¦ Á¦°øÇÏ´Â ¾îÇø®ÄÉÀ̼ǿ¡¼´Â °æ°í ÇÁ·Î¼¼¼ ·¹À̾ ¹«½ÃÇϰí, ¸ðµç 󸮸¦ °æ°í ¸®½Ã¹ö¸¸À¸·Î ½ÇÇàÇÕ´Ï´Ù.
PQsetNoticeReceiverÇÔ¼ö´Â Á¢¼Ó ¿ÀºêÁ§Æ®¸¦ À§ÇØ ÇöÀçÀÇ °æ°í ¸®½Ã¹öÀÇ ¼³Á¤À̳ª È®ÀÎÀ» ¼³Á¤ÇÕ´Ï´Ù.
°°ÀÌPQsetNoticeProcessor
´Â ÇöÀçÀÇ °æ°í ÇÁ·Î¼¼¼ÀÇ ¼³Á¤À̳ª È®ÀÎÀ» ½Ç½ÃÇÕ´Ï´Ù.
typedef void (*PQnoticeReceiver) (void *arg, const PGresult *res);
PQnoticeReceiver
PQsetNoticeReceiver(PGconn *conn,
PQnoticeReceiver proc,
void *arg);
typedef void (*PQnoticeProcessor) (void *arg, const char *message);
PQnoticeProcessor
PQsetNoticeProcessor(PGconn *conn,
PQnoticeProcessor proc,
void *arg);
°¢ ÇÔ¼ö´Â ÀÌÀüÀÇ °æ°í ¸®½Ã¹ö³ª ÇÁ·Î¼¼¼ ÇÔ¼ö Æ÷ÀÎÅ͸¦ µ¹·ÁÁÖ¾î, »õ·Î¿î °ªÀ» ¼³Á¤ÇÕ´Ï´Ù. ÇÔ¼ö Æ÷ÀÎÅÍ¿¡ nullÀ» °Ç³×ÁÖ¾úÀ» °æ¿ì, ¾Æ¹«°Íµµ º¯°æµÇÁö ¾Ê°í ÇöÀçÀÇ Æ÷ÀÎÅͰ¡ ¹ÝȯµË´Ï´Ù.
¼¹ö·ÎºÎÅÍ ÁÖÀÇ/°æ°í ¸Þ¼¼Áö¸¦ ¹Þ¾ÆµéÀ̰ųª libpq³»ºÎ¿¡¼ ÁÖÀÇ/°æ°í ¸Þ¼¼Áö°¡ »ý¼ºµÇ¸é, °æ°í ¸®½Ã¹ö ÇÔ¼ö°¡ È£ÃâµË´Ï´Ù.
PGRES_NONFATAL_ERROR PGresult ÇüÅ·Π¸Þ¼¼Áö°¡ °Ç³×Áý´Ï´Ù.
(À̰Ϳ¡ ÀÇÇØ, ¸®½Ã¹ö´Â PQresultErrorField¸¦ »ç¿ëÇØ °³°³ÀÇ Çʵ带 ²¨³»´Â °ÍÀ̳ª, PQresultErrorMessage¸¦ »ç¿ëÇØ »çÀü¿¡ Á¤ÇüµÈ ¿Ï·á ¸Þ¼¼Áö¸¦ ²¨³¾ ¼ö ÀÖ½À´Ï´Ù. )
PQsetNoticeReceiver¿¡°Ô °Ç³×Áø void Æ÷ÀÎÅÍ¿Í °°Àº °Íµµ °Ç³×¹Þ½À´Ï´Ù.
(ÀÌ Æ÷ÀÎÅ͸¦ »ç¿ëÇϰí, Çʿ信 µû¶ó¼ ¾îÇø®ÄÉÀÌ¼Ç Æ¯Á¤ÇÑ »óÅ¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù. )
µðÆúÆ®ÀÇ °æ°í ¸®½Ã¹ö´Â ´ÜÁö(PQresultErrorMessage¸¦ »ç¿ëÇØ) ¸Þ¼¼Áö¸¦ ²¨³»°í, ±×°ÍÀ» °æ°í ÇÁ·Î¼¼¼¿¡ °Ç³×ÁÙ »ÓÀÔ´Ï´Ù.
°æ°í ÇÁ·Î¼¼¼´Â ÅØ½ºÆ® Çü½Ä¿¡¼ ÁÖ¾îÁø ÁÖÀÇ/°æ°í ¸Þ¼¼Áö ´Ù·ç´Â °Í¿¡ °üÇØ Ã¥ÀÓÀ» °¡Áý´Ï´Ù.
¸Þ¼¼Áö´Â(¸¶Áö¸· »õ·Î¿î ÇàÀ» Æ÷ÇÔ) ¹®ÀÚ¿ ÅØ½ºÆ®·Î °Ç³×¹Þ°í, ´õÇØ¼ PQsetNoticeProcessor¿¡ °Ç³×ÁØ °Í°ú °°Àº void Æ÷ÀÎÅ͵µ °Ç³×¹Þ½À´Ï´Ù.
(ÀÌ Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿© ÇÊ¿äÇÏ´Ù¸é ¾îÇø®ÄÉÀÌ¼Ç Æ¯Á¤ÇÑ »óÅ¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù. )
µðÆúÆ®ÀÇ °æ°í ÇÁ·Î¼¼¼´Â ÀÌÇÏ¿Í °°ÀÌ ´Ü¼øÇÑ °ÍÀÔ´Ï´Ù.
static void
defaultNoticeProcessor(void *arg, const char *message)
{
fprintf(stderr, "%s", message);
}
ÀÏ´Ü °æ°í ¸®½Ã¹ö³ª °æ°í ÇÁ·Î¼¼¼¸¦ ¼³Á¤Çϸé, PGconn¿ÀºêÁ§Æ®³ª »ý¼ºµÈPGresult¿ÀºêÁ§Æ®°¡ Á¸ÀçÇÏ´Â µ¿¾ÈÀº ÇÔ¼ö°¡ È£ÃâµÉ °¡´É¼ºÀÌ ÀÖ´Ù°í »ý°¢ÇØ µÎ¾î¾ß ÇÕ´Ï´Ù.
PGresultÀÇ »ý¼º½Ã¿¡´Â PGconnÀÇ ÇöÀç °æ°í ó¸® Æ÷ÀÎÅͰ¡, PQgetvalue¿Í °°ÀÌ ÇÔ¼ö·Î »ç¿ëµÇµµ·Ï, PGresult¿¡ º¹»çµË´Ï´Ù.