29.2. Á¢¼Ó »óÅ ÇÔ¼ö

ÀÌ·¯ÇÑ ÇÔ¼ö¸¦ »ç¿ëÇϰí, ±âÁ¸ÀÇ µ¥ÀÌÅͺ£À̽º Á¢¼Ó ¿ÀºêÁ§Æ® »óŸ¦ Á¶»çÇÒ ¼ö ÀÖ½À´Ï´Ù.

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 ¼­¹ö¸¦ »ç¿ëÇÏ´Â °æ¿ì, PQtransactionStatus´Â À߸øÇÑ °á°ú¸¦ ¹ÝȯÇÕ´Ï´Ù. ¼­¹ö ÃøÀÇ ÀÚµ¿ 󸮴 ¹Ý´ëµÇ¾î ±× ÈÄÀÇ ¹öÀüÀÇ ¼­¹ö¿¡¼­´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.

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µµ ÀÚµ¿À¸·Î Æ÷ÇԵ˴ϴÙ.