| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 29. libpq - C ¶óÀ̺귯¸® | Fast Forward | Next |
ÀÌ·¯ÇÑ ÇÔ¼ö¸¦ »ç¿ëÇϰí, ±âÁ¸ÀÇ µ¥ÀÌÅͺ£À̽º Á¢¼Ó ¿ÀºêÁ§Æ® »óŸ¦ Á¶»çÇÒ ¼ö ÀÖ½À´Ï´Ù.
Tip: libpq¾îÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¡¸Ó´Â PGconn¿¡ ÀÇÇÑ Ãß»óÈ¿¡ ÁÖÀ§¸¦ ±â¿ï¿©¾ß ÇÕ´Ï´Ù. PGconnÀÇ ³»¿ëÀº ÀÌÇÏ¿¡ µå´Â ¿¢¼¼¼ ÇÔ¼ö¸¦ »ç¿ëÇØ ²¨³» Áֽʽÿä. ³»ºÎÀÇ PGconn Çʵå´Â ÇâÈÄ ¿¹°í ¾øÀÌ º¯°æµÇ±â ¶§¹®¿¡, libpq-int.h¸¦ »ç¿ëÇÑ ÇʵåÀÇ ÂüÁ¶´Â ÇÇÇØ Áֽʽÿä.
ÀÌÇÏÀÇ ÇÔ¼ö´Â Á¢¼ÓÀ¸·Î È®¸³ÇÑ ÆÄ¶ó¹ÌÅÍÀÇ °ªÀ» ¹ÝȯÇÕ´Ï´Ù. ÀÌ·¯ÇÑ °ªÀº PGconn ¿ÀºêÁ§Æ®ÀÇ Á¸¼Ó ±â°£ Áß¿¡´Â °íÁ¤µÇ°í ÀÖ½À´Ï´Ù.
PQdb
Á¢¼ÓÇÑ µ¥ÀÌÅͺ£À̽º¸íÀ» ¹ÝȯÇÕ´Ï´Ù.
char *PQdb(const PGconn *conn);
PQuser
Á¢¼ÓÇÑ À¯Àú¸íÀ» ¹ÝȯÇÕ´Ï´Ù.
char *PQuser(const PGconn *conn);
PQpass
Á¢¼ÓÇÑ ÆÐ½º¿öµå¸¦ ¹ÝȯÇÕ´Ï´Ù.
char *PQpass(const PGconn *conn);
PQhost
Á¢¼ÓÇÑ ¼¹ö È£½ºÆ®¸íÀ» ¹ÝȯÇÕ´Ï´Ù.
char *PQhost(const PGconn *conn);
PQport
Á¢¼ÓÇÑ Æ÷Æ®¸¦ ¹ÝȯÇÕ´Ï´Ù.
char *PQport(const PGconn *conn);
PQtty
Á¢¼ÓÀÇ µð¹ö±× TTY ¸¦ ¹ÝȯÇÕ´Ï´Ù. (À̰ÍÀº ¾µ¸ð¾ø°Ô µÈ °ÍÀÔ´Ï´Ù. ¿Ö³ÄÇÏ¸é ¼¹ö°¡ ´õÀÌ»ó TTY¼³Á¤À» ÂüÁ¶ÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ±×·¯³ª ÇâÈÄ È£È¯¼ºÀ» À§ÇØ ÇÔ¼ö´Â ³²¾Æ ÀÖ½À´Ï´Ù. )
char *PQtty(const PGconn *conn);
PQoptions
Á¢¼Ó ¿ä±¸½Ã °Ç³×Áø Ä¿¸Çµå ¶óÀÎ ¿É¼ÇÀ» ¹ÝȯÇÕ´Ï´Ù.
char *PQoptions(const PGconn *conn);
ÀÌÇÏÀÇ ÇÔ¼ö´Â PGconn¿¡ ´ëÇØ¼ Á¶ÀÛÀ» ½Ç½ÃÇÏ´Â °ÍÀ¸·Î º¯°æ °¡´ÉÇÑ »óÅ µ¥ÀÌÅ͸¦ ¹ÝȯÇÕ´Ï´Ù.
PQstatus
Á¢¼Ó »óŸ¦ ¹ÝȯÇÕ´Ï´Ù.
ConnStatusType PQstatus(const PGconn *conn);
ÀÌ »óÅ´ ¸¹Àº °ª Áß¿¡ Çϳª°¡ µÉ ¼ö ÀÖ½À´Ï´Ù.
±×·¯³ª CONNECTION_OK¿Í CONNECTION_BADÀÇ 2°³¸¸ÀÌ ºñµ¿±â Á¢¼Ó ¼ø¼¿Ü·Î º¼ ¼ö ÀÖ½À´Ï´Ù.
µ¥ÀÌÅͺ£À̽ºÀÇ Á¢¼Ó¿¡ ¹®Á¦°¡ ¾øÀ¸¸é, CONNECTION_OK»óŰ¡ µË´Ï´Ù.
Á¢¼Ó¿¡ ½ÇÆÐÇÑ °æ¿ì CONNECTION_BAD»óŰ¡ µË´Ï´Ù.
º¸Åë, OK»óÅ´ PQfinish±îÁö À¯ÁöµÇÁö¸¸, Åë½Å ½ÇÆÐ·Î ¾Õ´ç°ÜÁ®CONNECTION_BAD°¡ µÇ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù.
±× °æ¿ì, ¾îÇø®ÄÉÀ̼ÇÀºPQreset¸¦ È£ÃâÇØ º¹±¸À» ½ÃµµÇÒ ¼ö ÀÖ½À´Ï´Ù.
±× ¿ÜÀÇ ÀϾ ¼ö ÀÖ´Â »óÅ Äڵ忡 ´ëÇØ¼´Â PQconnectStart ¿Í PQconnectPollÀÇ Ç׸ñÀ» ÂüÁ¶ÇØ Áֽʽÿä.
PQtransactionStatus
¼¹öÀÇ ÇöÀçÀÇ Æ®·£Àè¼Ç ³»ºÎ »óŸ¦ ¹ÝȯÇÕ´Ï´Ù.
PGTransactionStatusType PQtransactionStatus(const PGconn *conn);
ÀÌ »óÅ´ PQTRANS_IDLE (ÇöÀç ´ë±âÁß), PQTRANS_ACTIVE (Ä¿¸Çµå ½ÇÇàÁß), PQTRANS_INTRANS (À¯È¿ÇÑ Æ®·£Àè¼Ç ºí·Ï ³»¿¡¼ ´ë±âÁß), PQTRANS_INERROR (¹«È¿ÀÎ Æ®·£Àè¼Ç ºí·Ï ³»¿¡¼ ´ë±âÁß)°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. Á¢¼Ó¿¡ ¹®Á¦°¡ ÀÖ´Â °æ¿ì¸¸PQTRANS_UNKNOWN°¡ º¸°íµË´Ï´Ù. ¼¹ö·Î Äõ¸®°¡ Àü¼ÛµÆÁö¸¸, ¾ÆÁ÷ ¿Ï·áµÇÁö ¾Ê´Â °æ¿ì¸¸PQTRANS_ACTIVE°¡ º¸°íµË´Ï´Ù.
| Caution |
|
autocommitÆÄ¶ó¹ÌÅ͸¦ ¹«È¿·Î ÇÑPostgreSQL 7.3 ¼¹ö¸¦ »ç¿ëÇÏ´Â °æ¿ì, |
PQparameterStatus
¼¹öÀÇ ÇöÀç ÆÄ¶ó¹ÌÅÍ ¼³Á¤À» °Ë»öÇÕ´Ï´Ù.
const char *PQparameterStatus(const PGconn *conn, const char *paramName);
¾î´À ÆÄ¶ó¹ÌÅÍ °ªÀº Á¢¼Ó °³½Ã½Ã¿¡ ¼¹ö¿¡ ÀÇÇØ ÀÚµ¿À¸·Î, ȤÀº ±× °ªÀÌ º¯°æµÇ¾úÀ» ¶§ Ç×»ó º¸°íµË´Ï´Ù.
PQparameterStatus´Â ±×·¯ÇÑ ¼³Á¤À» Á¶»ç¿¡ µµ¿òÀÌ µË´Ï´Ù.
ÆÄ¶ó¹ÌÅÍÀÇ ÇöÀç °ªÀ» ¾Ë¸é ±× °ªÀ», ¸ð¸£´Â °æ¿ì´Â NULL¸¦ ¹ÝȯÇÕ´Ï´Ù.
ÇöÀç ¸±¸®½º·Î º¸°íµÇ´Â ÆÄ¶ó¹ÌÅÍ¿¡´Â server_version, server_encoding, client_encoding, is_superuser, session_authorization, DateStyle, TimeZone, integer_datetimes, ¹× standard_conforming_strings°¡ ÀÖ½À´Ï´Ù. (8.0 ÀÌÀüÀ¸·Î´Â server_encoding, TimeZone, ¹× integer_datetimes°¡, 8.1 ÀÌÀüÀ¸·Î´Â standard_conforming_strings°¡ º¸°íµÇÁö ¾Ê¾Ò½À´Ï´Ù. ) server_version, server_encoding ¹× integer_datetimes´Â ÀÛµ¿ ÈÄ º¯°æÇÏÁö ¸øÇÕ´Ï´Ù.´Â °ÍÀ» ÁÖÀÇÇϽʽÿä.
ÇÁ·ÎÅäÄÝ 3.0º¸´Ù ÀÌÀü ¼¹ö´Â ÆÄ¶ó¹ÌÅÍ ¼³Á¤À» º¸°íÇÏÁö ¾Ê½À´Ï´Ù.
±×·¯³ª libpq¿¡´Â server_version¿Í client_encodingÀÇ °ªÀ» ²¨³»´Â ±¸Á¶°¡ ÀÖ½À´Ï´Ù.
¾îÇø®ÄÉÀ̼ÇÀº ad hocÄÚµå·Î ÀÌ·¯ÇÑ °ªÀ» °áÁ¤ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, PQparameterStatus¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ¿ä±¸µÇ°í ÀÖ½À´Ï´Ù.
(±×·¯³ª 3.0 ÀÌÀüÀÇ Á¢¼Ó¿¡¼´Â Á¢¼Ó ½ÃÀÛ ÈÄ¿¡SET¿¡ ÀÇÇÑclient_encodingÀÇ º¯°æÀºPQparameterStatus¿¡ ¹Ý¿µµÇÁö ¾Ê´Â °ÍÀ» ÁÖÀÇÇϽʽÿä. )
server_version¿¡ ´ëÇØ¼´Â PQserverVersionµµ ÂüÁ¶ÇØ Áֽʽÿä.
ÀÌ ÇÔ¼ö´Â º¸´Ù ºñ±³Çϱ⠽¬¿î ÀÌ Á¤º¸¸¦ ¼öÄ¡ Çü½ÄÀ¸·Î ¹ÝȯÇÕ´Ï´Ù.
standard_conforming_stringsÀÇ °ªÀÌ ¾ø´Ù°í º¸°íµÇ¾úÀ» °æ¿ì, ¾îÇø®ÄÉÀ̼ÇÀºoff¶ó°í ÃßÃøÇÒ ¼ö ÀÖ½À´Ï´Ù. Áï, backslash´Â ¹®ÀÚ ¸®ÅÍ·² Áß À̽ºÄÉÀÌÇÁ ¹®Àڷμ Ãë±ÞÇÕ´Ï´Ù. ¶ÇÇÑ, ÀÌ ÆÄ¶ó¹ÌÅͰ¡ Á¸ÀçÇϸé, À̽ºÄÉÀÌÇÁ ¹®ÀÚ ±¸¹®(E'...'ÀÌ Çã¶ôµÇ¾ú´Ù´Â °ÍÀ¸·Î ¹Þ¾Æµé¿©Áý´Ï´Ù.
¹ÝȯµÇ´Â Æ÷ÀÎÅÍ´Â const¶ó°í ¼±¾ðµÇ°í ÀÖÁö¸¸, ½ÇÁ¦·Î´Â PGconn±¸Á¶¿Í °ü·ÃµÈ º¯ÈÇÏ´Â ¿µ¿ªÀ» °¡¸£Åµ´Ï´Ù. ÀÌ Æ÷ÀÎÅͰ¡ Äõ¸®¸¦ ÅëÇØ À¯È¿ÇÑ »óÅ·Π³²À» °ÍÀ̶ó°í »ý°¢ÇÏÁö ¸»¾Æ Áֽʽÿä.
PQprotocolVersion
»ç¿ëµÇ´Â ÇÁ·ÐÆ®¿£µå/¹é¿£µå ÇÁ·ÎÅäÄÝÀ» Á¶»çÇÕ´Ï´Ù.
int PQprotocolVersion(const PGconn *conn);
¾î¶² ±â´ÉÀ» ¼Æ÷Æ® ÇÒ Áö¸¦ °áÁ¤Çϱâ À§Çؼ, ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ÆíÀÌ ÁÁÀ» °ÍÀÔ´Ï´Ù. ÇöÀç, ÃëÇÒ ¼ö ÀÖ´Â °ªÀº 2(2.0 ÇÁ·ÎÅäÄÝ), 3(3.0 ÇÁ·ÎÅäÄÝ), ȤÀº 0(Á¢¼Ó ºÒ·®)ÀÔ´Ï´Ù. ÀÌ´Â Á¢¼ÓÀÇ °³½Ã°¡ ¿Ï·áÇÑ ´ÙÀ½¿¡ º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·¯³ª ÀÌ·ÐÀûÀ¸·Î´Â Á¢¼ÓÀÇ Àç¼³Á¤½Ã·Î º¯°æ °¡´ÉÇÕ´Ï´Ù. PostgreSQL 7.4ÀÌÈÄ¿¡¼ÀÇ Åë½ÅÇÒ ¶§ º¸Åë 3.0 ÇÁ·ÎÅäÄÝÀÌ »ç¿ëµË´Ï´Ù. 7.4º¸´Ù ÀüÀÇ ¼¹ö¿¡¼´Â 2.0 ÇÁ·ÎÅäÄݸ¸À» ¼Æ÷Æ®ÇÕ´Ï´Ù. (1.0 ÇÁ·ÎÅäÄÝÀº ÆóÁöµÇ¾îlibpq¿¡¼´Â ¼Æ÷Æ®µÇ°í ÀÖÁö ¾Ê½À´Ï´Ù. )
PQserverVersion
¹é¿£µå ¹öÀüÀÇ Á¤¼ö Ç¥ÇöÀ» ¹ÝȯÇÕ´Ï´Ù.
int PQserverVersion(const PGconn *conn);
À̰ÍÀ» »ç¿ëÇØ¼ ¾îÇø®ÄÉÀ̼ÇÀº Á¢¼ÓÇÑ µ¥ÀÌÅͺ£À̽º ¼¹ö ¹öÀüÀ» °áÁ¤Çصµ »ó°üÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ¼öÄ¡ÀÇ Çü½ÄÀº ¸ÞÀÌÀú, ¸¶À̳Ê, ¸®¹öÀü ¹øÈ£¸¦ 2ÀÚ¸®¼öÀÇ 10 Áø¼ö·Î º¯È¯ÇØ, ¿¬°á½ÃŲ °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¸é, ¹öÀü 8.1. 5¿¡¼´Â 80105¸¦ ¹ÝȯÇϰí, ¹öÀü 8.2¿¡¼´Â 80200À» ¹ÝȯÇÕ´Ï´Ù. (¼±µÎÀÇ 0Àº ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù. ) Á¢¼Ó ºÒ·®ÀÇ °æ¿ì´Â 0ÀÌ ¹ÝȯµË´Ï´Ù.
PQerrorMessage
Á¢¼ÓÀÇ Á¶ÀÛ¿¡ ´ëÇØ, °¡Àå ÃÖ±Ù¿¡ »ý¼ºµÈ ¿¡·¯ ¸Þ¼¼Áö¸¦ ¹ÝȯÇÕ´Ï´Ù.
char *PQerrorMessage(const PGconn *conn);
°ÅÀÇ ¸ðµçlibpqÇÔ¼ö´Â ½ÇÆÐ½Ã¿¡PQerrorMessage¿¡ ´ëÇÑ ¸Þ¼¼Áö¸¦ ¼³Á¤ÇÕ´Ï´Ù.
libpq Çù¾à¿¡ µû¶ó »õ·Î¿î ÇàÀ» Æ÷ÇÔÇÑ ºñ¾îÀÖÁö ¾ÊÀº PQerrorMessage °á°ú¿¡ ÁÖÀÇÇϽʽÿä.
È£ÃâÇÏ´Â ÂÊ¿¡¼´Â ÀÌ °á°ú¸¦ Á÷Á¢ ÇØÁ¦Çؼ´Â ¾ÈµË´Ï´Ù.
°ü·ÃÇÏ´Â PGconnÇÚµéÀÌPQfinish¿¡°Ô °Ç³×Á³À» ¶§ À̰ÍÀº ÇØÁ¦µË´Ï´Ù.
PGconn±¸Á¶ÀÇ Á¶ÀÛÀ» ÅëÇØ ÀÌ °á°ú ¹®ÀÚ¿ÀÌ µ¿ÀÏÇÏ´Ù¶ó°í °¡Á¤ ÇØ¼´Â ¾ÈµË´Ï´Ù.
PQsocket
¼¹ö¿ÍÀÇ Á¢¼Ó ¼ÒÄÏ¿¡ ´ëÇÑ ÆÄÀÏ ±â¼úÀÚ ¹øÈ£¸¦ ¾ò½À´Ï´Ù. À¯È¿ÇÑ ±â¼úÀÚ¶ó¸é °ªÀº 0 ÀÌ»óÀÔ´Ï´Ù. -1 ÀÇ °æ¿ì´Â ¼¹ö¿ÍÀÇ Á¢¼ÓÀÌ ¾ÆÁ÷ ¿·Á ÀÖÁö ¾ÊÀº °ÍÀ» ³ªÅ¸³À´Ï´Ù. (À̰ÍÀº ÀϹÝÀûÀÎ Á¶ÀÛ¿¡¼´Â º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù. Á¢¼Ó ¼³Á¤ ÁßÀ̳ª Àç¼³Á¤ ÁßÀ¸·Î º¯°æµË´Ï´Ù. )
int PQsocket(const PGconn *conn);
PQbackendPID
Á¢¼ÓÀ» ó¸®ÇÏ´Â ¹é¿£µå ¼¹öÀÇ ÇÁ·Î¼¼½ºID(PID)¸¦ ¹ÝȯÇÕ´Ï´Ù.
int PQbackendPID(const PGconn *conn);
¹é¿£µå PID ´Â µð¹ö±× ÇÏ´Â °æ¿ì³ª NOTIFY¸Þ¼¼Áö (¹é¿£µå ÇÁ·Î¼¼½º·ê Å뺸ÇÏ´Â PID ¸¦ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù)ÀÇ ºñ±³¿¡ À¯¿ëÇÕ´Ï´Ù. ÀÌ PID´Â µ¥ÀÌÅͺ£À̽º ¼¹ö È£½ºÆ®¿¡¼ ½ÇÇàµÇ°í ÀÖ´Â ÇÁ·Î¼¼½º¿¡ ¼ÓÇϸç, ·ÎÄà ȣ½ºÆ®ÃøÀÇ °ÍÀÌ ¾Æ´Õ´Ï´Ù! ÁÖÀÇÇϽʽÿä.
PQgetssl
Á¢¼ÓÀ¸·Î »ç¿ëµÇ°í ÀÖ´Â SSL ±¸Á¶¸¦ ¹ÝȯÇÕ´Ï´Ù. SSL °¡ »ç¿ëµÇÁö ¾Ê´Â °æ¿ì´Â nullÀ» ¹ÝȯÇÕ´Ï´Ù.
SSL *PQgetssl(const PGconn *conn);
ÀÌ ±¸Á¶´Â ¾ÏÈ£È ·¹º§ÀÇ °ËÁõÀ̳ª ¼¹ö Áõ¸í¼ÀÇ Ã¼Å© µî¿¡ µµ¿òÀÌ µË´Ï´Ù. ÀÌ ±¸Á¶¿¡ ´ëÇØ¼´Â OpenSSLÀÇ ¹®¼¸¦ ÂüÁ¶ÇØ Áֽʽÿä.
ÀÌ ÇÔ¼öÀÇ ¿Ã¹Ù¸¥ prototype¸¦ ¾òÀ¸·Á¸é , USE_SSL ¸¦ Á¤ÀÇÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô Çϸé, OpenSSLÀÇ ssl.hµµ ÀÚµ¿À¸·Î Æ÷ÇԵ˴ϴÙ.