| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 29. libpq - C ¶óÀ̺귯¸® | Fast Forward | Next |
PostgreSQLÀÇ ¹é¿£µå ¼¹ö¿ÍÀÇ Á¢¼ÓÀ» »ý¼ºÇÏ·Á¸é , ÀÌÇÏÀÇ ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.
ÀÀ¿ë ÇÁ·Î±×·¥Àº ¹é¿£µå¿ÍÀÇ Á¢¼ÓÀ» ÇÑ ¹ø¿¡ ¿©·¯°³ ¿ ¼ö ÀÖ½À´Ï´Ù. (ÇÑ °¡Áö ÀÌÀ¯·Î ¿©·¯ µ¥ÀÌÅͺ£À̽º·ÎÀÇ ¾×¼¼½º¸¦ µé ¼ö ÀÖ½À´Ï´Ù. )
°³°³ÀÇ Á¢¼ÓÀº PQconnectdb ¶Ç´Â PQsetdbLoginÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¾òÀ» ¼ö ÀÖ´Â PGconn¿ÀºêÁ§Æ®·Î ³ªÅ¸³³´Ï´Ù.
ÀÌ·¯ÇÑ ÇÔ¼ö´Â Ç×»ó NULLÀÌ ¾Æ´Ñ ¿ÀºêÁ§Æ® Æ÷ÀÎÅ͸¦ ¹ÝȯÇÕ´Ï´Ù. PGconn ¿ÀºêÁ§Æ®¸¦ ÇÒ´çÇÒ ¼ö ¾ø´Â °æ¿ì°¡ ¾Æ´Ñ ÀÌ»ó
NULLÀÌ ¾Æ´Ñ ºêÁ§Æ®ÀÇ Æ÷ÀÎÅ͸¦ ¹ÝȯÇÕ´Ï´Ù.
¶ÇÇÑ, ÀÌ Á¢¼Ó ¿ÀºêÁ§Æ®¸¦ ÅëÇØ Äõ¸®¸¦ º¸³»±â Àü¿¡, PQstatusÇÔ¼ö¸¦ È£ÃâÇØ, µ¥ÀÌÅͺ£À̽º¿ÍÀÇ Á¢¼Ó¿¡ ¼º°øÇß´ÂÁö ¿©ºÎ¸¦ Ã¼Å©ÇØ¾ß ÇÕ´Ï´Ù.
PQconnectdb
»õ·Ó°Ô µ¥ÀÌÅͺ£À̽º ¼¹ö·ÎÀÇ Á¢¼ÓÀ» »ý¼ºÇÕ´Ï´Ù.
PGconn *PQconnectdb(const char *conninfo);
ÀÌ ÇÔ¼ö´Â conninfo ¹®ÀÚ¿·ÎºÎÅÍ ÃëµæÇÑ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇϰí, µ¥ÀÌÅͺ£À̽º¿ÍÀÇ Á¢¼ÓÀ» È®¸³ÇÕ´Ï´Ù.
ÀÌÇÏÀÇ PQsetdbLogin°ú´Â ´Þ¸®, ÇÔ¼öÀÇ prototype¸¦ º¯°æÇÏÁö ¾Ê°í ÆÄ¶ó¹ÌÅ͸¦ È®ÀåÇÒ ¼ö Àֱ⠶§¹®¿¡, ÀÀ¿ë ÇÁ·Î±×·¥À» »ý¼ºÇÏ·Á¸é,
ÀÌ ÇÔ¼ö(ȤÀº nonblocking analogue PQconnectStart¿Í PQconnectPoll)À» »ç¿ëÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù.
ºó ¹®ÀÚ¿À» °Ç³×ÁÖ´Â °ÍÀ¸·Î, ¸ðµç ÆÄ¶ó¹ÌÅÍ´Â µðÆúÆ®·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, °ø¹é ¹®ÀÚ·Î ºÐ¸®ÇÏ¿© 1°³ ÀÌ»óÀÇ ÆÄ¶ó¹ÌÅ͸¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. °¢°¢ÀÇ ÆÄ¶ó¹ÌÅÍ´Â keyword = value¶ó°í ÇÏ´Â ÇüÅ·Π¼³Á¤ÇÕ´Ï´Ù. µîÈ£ ÀüÈÄÀÇ °ø¹é ¹®ÀÚ´Â ÀÓÀÇ·Î ºÙÀÏ ¼ö ÀÖ½À´Ï´Ù. ºñ¾îÀÖ´Â °ªÀ̳ª °ø¹é ¹®ÀÚ¸¦ Æ÷ÇÔÇÑ °ªÀ» ¾²´Â °æ¿ì´Â ´ÜÀÏ ÀοëºÎÈ£·Î µÑ·¯½Ô´Ï´Ù. ¿¹¸¦ µé¸é, keyword = 'a value'ÀÔ´Ï´Ù. ´ÜÀÏ ÀοëºÎÈ£¿Í backslash´Â \'³ª \\¿Í °°ÀÌ, backslash·Î À̽ºÄÉÀÌÇÁ ÇØ¾ß ÇÕ´Ï´Ù.
Çö½ÃÁ¡¿¡¼ À¯È¿ÇÑ ÆÄ¶ó¹ÌÅÍÀÇ Å°¿öµå´Â ÀÌÇÏ¿¡ ³ªÅ¸³»´Â ´ë·ÎÀÔ´Ï´Ù.
Á¢¼ÓÇϴ ȣ½ºÆ®¸íÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ÀÎÀÚ ¸®½ºÆ®¸¦ slash·Î ½ÃÀÛÇßÀ» °æ¿ì, TCP/IP¿¡ ÀÇÇÑ Åë½ÅÀÌ ¾Æ´Ñ Unix µµ¸ÞÀÎÀÇ Åë½ÅÀ» ÁöÁ¤ÇÏ°Ô µË´Ï´Ù. ±× °æ¿ì, ÀÌ °ªÀº ¼ÒÄÏ ÆÄÀÏÀ» ÀúÀåÇÏ´Â µð·ºÅ丮ÀÇ À̸§ÀÌ µË´Ï´Ù. host°¡ ÁöÁ¤µÇÁö ¾ÊÀº °æ¿ì, µðÆúÆ®´Â /tmp¿¡ ÀÖ´Â Unix µµ¸ÞÀÎÀÇ ¼ÒÄÏ¿¡ Á¢¼ÓÇϵµ·Ï ÇÕ´Ï´Ù. (¶Ç´Â PostgreSQLÀÇ ±¸Ãà½Ã¿¡ ÁöÁ¤ÇÑ ´Ù¸¥ µð·ºÅ丮¿¡ ÀÖ´Â ¼ÒÄÏÀÔ´Ï´Ù. ) Unix µµ¸ÞÀÎ ¼ÒÄÏÀÌ ¾ø´Â ¸Ó½Å¿¡¼ µðÆúÆ®´Â localhost¿¡ Á¢¼ÓÇÏ´Â °ÍÀÔ´Ï´Ù.
Á¢¼ÓÇϴ ȣ½ºÆ®ÀÇ IPÁÖ¼Ò¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ´Â 172.28. 40.9¶ó°í Çϴ ǥÁØÀûÀÎ IPv4 ÁÖ¼Ò ¼½ÄÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. »ç¿ëÇÏ´Â ¸Ó½ÅÀ¸·Î IPv6¸¦ ¼Æ÷Æ®ÇÏ´Â °æ¿ì´Â ±× ÁÖ¼Ò¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ ÆÄ¶ó¹ÌÅÍ¿¡ ºñ¾îÀÖÁö ¾ÊÀº ¹®ÀÚ¿ÀÌ ÁöÁ¤µÇ¸é, TCP/IPÅë½ÅÀÌ Ç×»ó »ç¿ëµË´Ï´Ù.
host´ë½Å¿¡hostaddr¸¦ »ç¿ëÇÏ¿©, ¾îÇø®ÄÉÀ̼ÇÀÌ È£½ºÆ®¸íÀÇ °Ë»öÀ» ÇÏÁö ¾Ê°í ³¡³³´Ï´Ù. ƯÈ÷, ½Ã°£ Á¦¾àÀÌ ÀÖ´Â ¾îÇø®ÄÉÀ̼ǿ¡¼´Â Áß¿äÇÒ °ÍÀÔ´Ï´Ù. ±×·¯³ª Kerberos ¹× GSSAPI ÀÎÁõÀ» ½Ç½ÃÇÏ´Â ¾îÇø®ÄÉÀ̼ǿ¡¼´Â È£½ºÆ®¸íÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù. °á±¹, ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù. hostaddr¸¦ »ç¿ëÇÏÁö ¾Ê°íhost¸¦ ÁöÁ¤ÇßÀ» °æ¿ì´Â È£½ºÆ®¸íÀÇ °Ë»öÀÌ ¹ß»ýÇÕ´Ï´Ù. host¸¦ »ç¿ëÇÏÁö ¾Ê°í, hostaddr¸¦ ÁöÁ¤ÇßÀ» °æ¿ì, hostaddr´Â ¸®¸ðÆ® ¸Ó½ÅÀÇ ÁÖ¼Ò°¡ µË´Ï´Ù. ÀÌ ¶§, Kerberos¸¦ »ç¿ëÇϰí ÀÖ´Â °æ¿ì, ¹Ý´ëµÇ´Â À̸§ÀÇ Äõ¸®´Â KerberosÀÇ È£½ºÆ®¸íÀ» ȹµæÇϱâ À§ÇØ ¹ß»ýÇÕ´Ï´Ù. host¿Í hostaddrÀÇ ¾çÂÊ ¸ðµÎ¸¦ ÁöÁ¤ÇßÀ» °æ¿ì, hostaddr°¡ ¸®¸ðÆ® ¸Ó½ÅÀÇ ÁÖ¼Ò°¡ µË´Ï´Ù. ÀÌ ¶§, Kerberos°¡ »ç¿ëÇϸ鼵µ hostÀÇ °ªÀÌ ¹«½ÃµÇ¾î »ç¿ëµÇ°í ÀÖ´Â °æ¿ì´Â Kerberos ÀÎÁõ¿¡hostÀÇ °ªÀÌ »ç¿ëµË´Ï´Ù. (libpq¿¡°Ô °Ç³×Áø È£½ºÆ®¸íÀÌ, hostaddr¿¡ ´ëÀÀÇÏ´Â ¸Ó½ÅÀÇ À̸§°ú ÀÏÄ¡ÇÏÁö ¾Ê´Â °æ¿ì´Â ÀÎÁõ¿¡ ½ÇÆÐÇÒ °¡´É¼ºÀÌ ÀÖÀ¸¹Ç·Î, ÁÖÀÇÇϽʽÿä. ) ¶ÇÇÑ, hostaddr´Â ¾Æ´Ï°íhost°¡~/. pgpass(Section 29.13¸¦ ÂüÁ¶)¿¡¼ÀÇ Á¢¼ÓÀÇ ½Äº°·Î »ç¿ëµË´Ï´Ù.
È£½ºÆ®¸íÀ̳ª È£½ºÆ®ÀÇ ÁÖ¼Òµµ ÀÌ¿ëÇÏÁö ¾Ê´Â °æ¿ì, libpq´Â ·ÎÄà Unix µµ¸ÞÀÎÀÇ ¼ÒÄÏÀ» »ç¿ëÇØ Á¢¼ÓÇÕ´Ï´Ù. ´Ù¸¸, Unix µµ¸ÞÀÎ ¼ÒÄÏÀ» °¡ÁöÁö ¾Ê´Â ¸Ó½Å¿¡¼´Â localhostÀÇ Á¢¼ÓÀ» ½ÃµµÇÕ´Ï´Ù.
¼¹ö È£½ºÆ®¿¡¼ÀÇ Á¢¼Ó¿ëÀÇ Æ÷Æ® ¹øÈ£, ¶Ç´Â Unix µµ¸ÞÀÎ Á¢¼ÓÀÇ °æ¿ì´Â ¼ÒÄÏ ÆÄÀÏÀÇ È®ÀåÀÚ(extension)¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
µ¥ÀÌÅͺ£À̽º¸íÀ» ÁöÁ¤ÇÕ´Ï´Ù. µðÆúÆ®´Â À¯Àú¸í°ú °°½À´Ï´Ù.
µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÏ´Â PostgreSQLÀ¯Àú¸íÀ» ÁöÁ¤ÇÕ´Ï´Ù. µðÆúÆ®´Â ±× ¾îÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇϰí ÀÖ´Â À¯ÀúÀÇ operating system»óÀÇ À̸§°ú °°½À´Ï´Ù.
¼¹ö°¡ ÆÐ½º¿öµå¿¡ ÀÇÇÑ ÀÎÁõÀ» ¿ä±¸ÇÏ´Â °æ¿ì¿¡ ÆÐ½º¿öµå¸¦ »ç¿ëÇÕ´Ï´Ù.
Á¢¼ÓÀ» À§ÇØ ÃÖ´ë ´ë±â ½Ã°£À» ÃÊ´ÜÀ§·Î ÁöÁ¤ÇÕ´Ï´Ù. (10 Áø¼ö Á¤¼ö·Î ³ªÅ¸³½ ¹®ÀÚ¿·Î¼ ±â¼úÇØ Áֽʽÿä. ) 0 ¶Ç´Â ¼³Á¤ÇÏÁö ¾Ê´Â °ÍÀº ¹«ÇÑ ½Ã°£ÀÇ ´ë±â¸¦ ÀǹÌÇÕ´Ï´Ù. 2ÃÊ ¹Ì¸¸ÀÇ ´ë±â ½Ã°£À» »ç¿ëÇÏ´Â °ÍÀº ±ÇÇÏÁö ¾Ê½À´Ï´Ù.
¼¹ö¿¡ Àü¼ÛÇÏ´Â Ä¿¸Çµå ¶óÀÎ ¿É¼ÇÀ» ÁöÁ¤ÇÕ´Ï´Ù.
¹«½ÃµË´Ï´Ù. (ÀÌÀü¿¡´Â À̰ÍÀº ¼¹ö µð¹ö±× Ãâ·ÂÀ» Àü¼ÛÇÏ´Â Àå¼Ò¸¦ ÁöÁ¤ÇÏ´Â °ÍÀ̾ú½À´Ï´Ù. )
ÀÌ ¿É¼ÇÀº ¾î´ÀSSLÁ¢¼Ó¿¡¼ ¿ì¼±ÀûÀ¸·Î ¼¹ö¿Í Á¶Á¤Çұ °áÁ¤ÇÕ´Ï´Ù. 4°³ÀÇ ¸ðµå°¡ ÀÖ½À´Ï´Ù. disable´Â ¾ÏÈ£ÈÇÏÁö ¾Ê´Â SSLÁ¢¼Ó¸¸À» ½ÃµµÇÕ´Ï´Ù. allow´Â ¿ì¼± nonSSLÁ¢¼ÓÀ» ½ÃµµÇØ ½ÇÆÐÇϸéSSL·Î ½ÃµµÇÕ´Ï´Ù. prefer(µðÆúÆ®ÀÔ´Ï´Ù)´Â ¿ì¼±SSLÁ¢¼ÓÀ» ½ÃµµÇØ ½ÇÆÐÇÏ¸é º¸ÅëÀÇ ºñSSLÁ¢¼ÓÀ¸·Î ½ÃµµÇÕ´Ï´Ù. require´Â SSLÁ¢¼Ó¿¡¼¸¸ ½ÃµµµË´Ï´Ù.
SSL ¼Æ÷Æ®¾øÀÌPostgreSQL°¡ ÄÄÆÄÀÏ µÇ¾úÀ» °æ¿ì, require¸¦ »ç¿ëÇÏ¸é ¿¡·¯°¡ µË´Ï´Ù. ÇÑÆí, allow¿Í prefer´Â »ç¿ëÇÒ ¼ö ÀÖÁö¸¸, ½ÇÁ¦·Îlibpq´Â SSLÁ¢¼ÓÀ» ¹Þ¾ÆµéÀÌÁö ¾Ê½À´Ï´Ù.
ÀÌ ¿É¼ÇÀº sslmode¼³Á¤¿¡ ÀÇÇØ ¾µ¸ð¾ø°Ô µÈ °ÍÀÌ µÇ¾ú½À´Ï´Ù.
1À¸·Î ¼³Á¤Çϸé, ¼¹ö¿¡ SSLÁ¢¼ÓÀÌ ¿ä±¸µË´Ï´Ù. (À̰ÍÀºsslmodeÀÇrequire¿Í °°½À´Ï´Ù. ) ¼¹ö°¡SSLÁ¢¼ÓÀ» ¹Þ¾ÆµéÀÌÁö ¾Ê´Â °æ¿ì, Libpq´Â Á¢¼ÓÀ» °ÅÀýÇÕ´Ï´Ù. 0(µðÆúÆ®)À¸·Î ¼³Á¤Çϸé, ¼¹ö¿Í Á¶Á¤À» ½Ç½ÃÇÕ´Ï´Ù. (sslmodeÀÇprefer¿Í °°½À´Ï´Ù.) SSL ¼Æ÷Æ® ÷ºÎ·ÎPostgreSQL¸¦ ÄÄÆÄÀÏ ÇßÀ» °æ¿ì¿¡¸¸, ÀÌ ¿É¼ÇÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
Kerberos5 ¶Ç´Â GSSAPIÀÇ ÀÎÁõ½Ã¿¡ »ç¿ëµÇ´Â Kerberos ¼ºñ½º¸íÀÔ´Ï´Ù. À̰ÍÀº ¼¹öÀÇ Kerberos ÀÎÁõ ¼³Á¤ÀÇ ¼ºñ½º¸í°ú ÀÏÄ¡ÇØ¾ß¸¸ ÇÕ´Ï´Ù. (Section 20.2.3µµ ÂüÁ¶ÇØ Áֽʽÿä.)
´Ù¸¥ ÆÄ¶ó¹ÌÅÍ¿ëÀ¸·Î »ç¿ëµÇ´Â ¼ºñ½º¸íÀÔ´Ï´Ù. pg_service.conf³»ÀÇ Ãß°¡ÀûÀÎ Á¢¼Ó ÆÄ¶ó¹ÌÅ͸¦ º¸°üÇÏ´Â ¼ºñ½º¸íÀ» ÁöÁ¤ÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ ¾îÇø®ÄÉÀ̼ÇÀº ¼ºñ½º¸í¸¸À» ÁöÁ¤ÇÒ ¼ö ÀÖ¾î Á¢¼Ó ÆÄ¶ó¹ÌÅ͸¦ ÁýÁßÀûÀ¸·Î º¸¼öÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ÀÚ¼¼ÇÑ »çÇ×Àº Section 29.14 À» ÂüÁ¶ÇØ Áֽʽÿä.
ÆÄ¶ó¹ÌÅͰ¡ ÁöÁ¤µÇÁö ¾ÊÀº °æ¿ì´Â »óÀÀÇϴ ȯ°æ º¯¼ö°¡ üũµË´Ï´Ù(Section 29.12¸¦ ÂüÁ¶ÇØ Áֽʽÿä). ȯ°æ º¯¼öµµ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Â ³»Àå µðÆúÆ® °ªÀÌ ÁöÁ¤µË´Ï´Ù.
PQsetdbLogin
»õ·Ó¿î µ¥ÀÌÅͺ£À̽º ¼¹ö Á¢¼ÓÀ» »ý¼ºÇÕ´Ï´Ù.
PGconn *PQsetdbLogin(const char *pghost,
const char *pgport,
const char *pgoptions,
const char *pgtty,
const char *dbName,
const char *login,
const char *pwd);
À̰ÍÀº ÆÄ¶ó¹ÌÅÍ ¼¼Æ®¸¦ °íÁ¤ÇÏ´Â PQconnectdbÇÁ·Î½ÃÀúÀÔ´Ï´Ù.
¼³Á¤ÇÒ ¼ö ¾ø´Â ÆÄ¶ó¹ÌÅͰ¡ Ç×»ó µðÆúÆ® °ªÀÌ µÇ´Â Á¡À» Á¦¿ÜÇϰí, µ¿ÀÏÇÑ ±â´ÉÀ» °¡Áý´Ï´Ù.
°íÁ¤µÈ ÆÄ¶ó¹ÌÅÍ¿¡ ´ëÇØ¼ NULL³ª °ø¹®ÀÚ¿À» ÀÔ·ÂÇϸé, ±×°ÍÀº µðÆúÆ®°¡ µË´Ï´Ù.
PQsetdb
»õ·Ó°Ô µ¥ÀÌÅͺ£À̽º ¼¹öÀÇ Á¢¼ÓÀ» »ý¼ºÇÕ´Ï´Ù.
PGconn *PQsetdb(char *pghost,
char *pgport,
char *pgoptions,
char *pgtty,
char *dbName);
ÀÌ´Â login¿Í pwd¿¡ null Æ÷ÀÎÅ͸¦ ¼³Á¤ÇÏ´Â PQsetdbLogin¸¦ È£ÃâÇÏ´Â ¸ÅÅ©·ÎÀÔ´Ï´Ù.
¸Å¿ì ¿À·¡µÈ ÇÁ·Î±×·¥ÀÇ ¹é¿£µå ȣȯ¼ºÀ» À§Çؼ Á¦°øµÇ°í ÀÖ½À´Ï´Ù.
PQconnectStart
PQconnectPoll
Â÷´ÜÇÏÁö ¾Ê´Â ¹æ¹ýÀ¸·Î, µ¥ÀÌÅͺ£À̽º ¼¹öÀÇ Á¢¼ÓÀ» »ý¼ºÇÕ´Ï´Ù.
PGconn *PQconnectStart(const char *conninfo);
PostgresPollingStatusType PQconnectPoll(PGconn *conn);
ÀÌ 2°³ÀÇ ÇÔ¼ö¸¦ »ç¿ëÇϰí, ¸®¸ðÆ® I/OÀÇ ½ÇÇà½Ã¿¡ ¾îÇø®ÄÉÀÌ¼Ç threadÀÇ ½ÇÇàÀÌ Â÷´ÜµÇÁö ¾Êµµ·Ï µ¥ÀÌÅͺ£À̽º ¼¹ö·ÎÀÇ Á¢¼ÓÀ» »ý¼ºÇÕ´Ï´Ù.
ÀÌ·¯ÇÑ Á¢±Ù Æ÷ÀÎÆ®´Â I/O ÀÇ Á¾·á ´ë±â´Â PQconnectdb³»ºÎ º¸´Ù´Â ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¸ÞÀÎ ·çÇÁ¿¡¼ ¹ß»ý ÇÒ ¼ö ÀÖ½À´Ï´Ù.
À̰Ϳ¡ ÀÇÇØ, ¾îÇø®ÄÉÀ̼ÇÀº ´Ù¸¥ ó¸®¿Í º´ÇàÇØ¼ °ü¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
PQconnectStart¿¡ °Ç³×Áøconninfo¹®ÀÚ¿¿¡¼ ÆÄ¶ó¹ÌÅ͸¦ °¡Á®¿Í µ¥ÀÌÅͺ£À̽º Á¢¼ÓÀÌ È®¸³µÇ°Ô µË´Ï´Ù.
ÀÌ ¹®ÀÚ¿Àº À§ÀÇPQconnectdbÀÇ °æ¿ì¿Í °°Àº Çü½ÄÀ¸·Î ±â¼úµÇ°í ÀÖ½À´Ï´Ù.
PQconnectStart¿Í PQconnectPoll´Â ÀÌÇÏÀÇ Á¦¾à¿¡¼´Â Â÷´ÜµÇÁö ¾Ê½À´Ï´Ù.
The hostaddr and host parameters are used appropriately to ensure that
name and reverse name queries are not made. See the documentation of
these parameters under PQconnectdb above for details.
-->
hostaddr¿Í hostÆÄ¶ó¹ÌÅʹ ȣ½ºÆ®¸íÀ¸·ÎºÎÅÍÀÇ IPÁÖ¼Ò °Ë»öÀ̳ª È£½ºÆ®¸íÀÇ ¹Ý´ë Äõ¸®°¡ ÀϾÁö ¾Êµµ·Ï ÀûÀýÈ÷ »ç¿ëµÇ¾î¾ß ÇÕ´Ï´Ù.
ÀÌ·¯ÇÑ ÆÄ¶ó¹ÌÅÍ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ »çÇ×Àº, À§ÀÇ PQconnectdb¸¦ ÂüÁ¶ÇØ Áֽʽÿä.
PQtrace¸¦ È£ÃâÇÏ´Â °æ¿ì´Â trace¿¡ »ç¿ëÇÏ´Â stream ¿ÀºêÁ§Æ®°¡ Â÷´ÜµÇÁö ¾Ê´Â´Ù´Â °ÍÀÌ È®½ÇÇØ¾ß ÇÕ´Ï´Ù.
PQconnectPoll¸¦ È£ÃâÇϱâ Àü¿¡ ¼ÒÄÏÀÌ ÀûÀýÇÑ »óÅ¿¡ ÀÖ´Ù´Â °ÍÀ» º¸ÁõÇØ¾ß ÇÕ´Ï´Ù.
nonblock Á¢¼ÓÀ» ½ÃÀÛÇÏ·Á¸é ¿ì¼±, conn=PQconnectStart("
connection_info_string
")¸¦ È£ÃâÇÕ´Ï´Ù.
conn°¡ nullÀÏ °æ¿ì, libpq°¡ »õ·Î¿î PGconn±¸Á¶¸¦ ÇÒ´çÇÒ ¼ö ¾ø´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù.
±×·¸Áö ¾ÊÀº °æ¿ì´Â ÀûÀýÇÑ PGconn Æ÷ÀÎÅͰ¡ ¹ÝȯµË´Ï´Ù
(´Ù¸¸, µ¥ÀÌÅͺ£À̽º¿¡ ¿Ã¹Ù¸£°Ô Á¢¼ÓµÇ´ÂÁö¸¦ ³ªÅ¸³»Áö´Â ¾Ê½À´Ï´Ù).
PQconnectStart·ÎºÎÅÍ °ªÀÌ µÇµ¹¾Æ ¿Â ´Ü°è¿¡¼, status=PQstatus(conn)¸¦ È£ÃâÇÕ´Ï´Ù.
¸¸¾à, status°¡CONNECTION_BAD¿Í µ¿ÀÏÇÑ °æ¿ì, PQconnectStart°¡ ½ÇÆÐÇÏ°Ô µË´Ï´Ù.
PQconnectStart°¡ ¼º°øÇϸé, ´ÙÀ½Àº Á¢¼Ó ¼ø¼¸¦ ÁøÇà½Ã۱â À§Çؼ, libpq¸¦ Æú¸µ ÇÕ´Ï´Ù.
µ¥ÀÌÅͺ£À̽º Á¢¼ÓÀÇ ¹èÈÄ¿¡ ÀÖ´Â ¼ÒÄÏÀÇ ±â¼úÀÚ¸¦ ²¨³»·Á¸é , PQsocket(conn)¸¦ »ç¿ëÇÕ´Ï´Ù.
ÀÌÇÏÀÇ ¹Ýº¹ÀÔ´Ï´Ù.
Á÷ÀüÀÇPQconnectPoll(conn)ÀÌPGRES_POLLING_READINGÀÇ °æ¿ì, ¼ÒÄÏÀÇ read Áغñ°¡ °®ÃçÁú ¶§±îÁö ´ë±âÇÕ´Ï´Ù.
(select()³ª poll()µîÀÇ ½Ã½ºÅÛ ÇÔ¼ö·Î ³ªÅ¸³³´Ï´Ù. )
±×¸®°í ÀçÂ÷PQconnectPoll(conn)¸¦ È£ÃâÇÕ´Ï´Ù.
¹Ý´ë·Î ¸¶Áö¸· PQconnectPoll(conn)ÀÌ PGRES_POLLING_WRITINGÀÇ °æ¿ì, ¼ÒÄÏÀÇ ±âÀÔ Áغñ°¡ °®ÃçÁú ¶§±îÁö ´ë±âÇØ,
±× ÈÄ, PQconnectPoll(conn)¸¦ ÀçÂ÷ È£ÃâÇÕ´Ï´Ù.
¾ÆÁ÷PQconnectPoll¸¦ È£ÃâÇÏÁö ¾ÊÀº °æ¿ì, Áï, PQconnectStartÀÇ È£Ãâ Á÷Èķδ Á÷ÀüÀÌPGRES_POLLING_WRITING¿´À» °æ¿ì¿Í °°Àº 󸮸¦ ÇàÇÕ´Ï´Ù.
ÀÌ ¹Ýº¹À»PQconnectPoll(conn)ÀÌ, Á¢¼Ó ¼ö¼ÓÀÇ ½ÇÆÐ¸¦ ³ªÅ¸³»´Â PGRES_POLLING_FAILED,
ȤÀº Á¢¼Ó È®¸³¿¡ ¼º°øÇÑ °ÍÀ» ³ªÅ¸³»´Â PGRES_POLLING_OK¸¦ ¹ÝȯÇÒ ¶§±îÁö °è¼ÓÇÕ´Ï´Ù.
Á¢¼ÓÇϰí ÀÖ´Â µ¿¾ÈÀº ¾ðÁ¦µçÁö PQstatus¸¦ È£ÃâÇÏ¿©, Á¢¼Ó »óŸ¦ üũÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ÇÔ¼ö°¡CONNECTION_BAD¸¦ ¹ÝȯÇÒ °æ¿ì, Á¢¼Ó ÀýÂ÷°¡ ½ÇÆÐÇÑ °ÍÀ̸ç, CONNECTION_OK¸¦ µ¹·ÁÁÖ´Â °æ¿ì, Á¢¼ÓÀÌ È®¸³µÈ °ÍÀÔ´Ï´Ù.
À§¿¡¼ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ, ÀÌ·¯ÇÑ »óŵéÀº ¸ðµÎ PQconnectPollÀÇ ¹Ýȯ °ªÀ¸·Î °ËÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
´Ù¸¥ »óÅ´ ºñµ¿±âÀÇ Á¢¼Ó ÀýÂ÷ µ¿¾È ³ªÅ¸Àâ´Ï´Ù.
À̰ÍÀº Á¢¼Ó ÇÁ·Î½ÃÀúÀÇ ÇöÀçÀÇ ´Ü°è¸¦ ³ªÅ¸³»´Â °ÍÀ¸·Î, ¿¹¸¦ µé¸é À¯Àú¿¡°Ô·ÎÀÇ Çǵå¹éÀ» Á¦°øÇÏ´Â °Í¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌÇÏ »óŰ¡ ÀÖ½À´Ï´Ù.
Á¢¼ÓÀÇ È®¸³ ´ë±â »óÅÂÀÔ´Ï´Ù.
Á¢¼ÓÀº OKÀÔ´Ï´Ù. Àü¼Û ´ë±â »óÅÂÀÔ´Ï´Ù.
¼¹ö·ÎºÎÅÍÀÇ ÀÀ´ä ´ë±â »óÅÂÀÔ´Ï´Ù.
ÀÎÁõÀÌ ³¡³ »óÅÂÀÔ´Ï´Ù. ¹é¿£µå ½ÃÀÛ ´ë±â »óÅÂÀÔ´Ï´Ù.
SSL ¾ÏÈ£ÈÀÇ Á¶Á¤ »óÅÂÀÔ´Ï´Ù.
ȯ°æÀÌ Á¦°øÇÏ´Â ÆÄ¶ó¹ÌÅÍ ¼³Á¤ÀÇ Á¶Á¤ »óÅÂÀÔ´Ï´Ù.
ÀÌ·¯ÇÑ Á¤¼ö°¡ (ȣȯ¼º À¯Áö¸¦ À§ÇØ) ³²´Â ´Ù¸é, ¾îÇø®ÄÉÀ̼ÇÀº ƯÁ¤ÇÑ ¼ø¼·Î À̵éÀÌ ¹ß»ýµÇ°Å³ª ÀüÇô ±×·¸Áö ¾Ê°Å³ª, ¹®¼ÈµÈ °ªÀÇ »óÅ·ΠÇ×»ó ¸Ó¹«´Â °Í¿¡ °áÄÚ ÀÇÁ¸Çؼ´Â ¾ÊµË´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀº ÀÌÇÏ¿¡ ³ªÅ¸³»µµ·Ï ÇØ¾ß ÇÕ´Ï´Ù.
switch(PQstatus(conn))
{
case CONNECTION_STARTED:
feedback = "Connecting...";
break;
case CONNECTION_MADE:
feedback = "Connected to server...";
break;
.
.
.
default:
feedback = "Connecting...";
}
PQconnectPoll¸¦ »ç¿ëÇÏ´Â °æ¿ì, connect_timeoutÁ¢¼Ó ÆÄ¶ó¹ÌÅÍ´Â ¹«½ÃµË´Ï´Ù.
°æ°ú½Ã°£ÀÌ ³Ê¹« ±æÁö ¾î¶³ÁöÀÇ ÆÇÁ¤Àº ¾îÇø®ÄÉÀ̼ÇÀÇ Ã¥ÀÓÀ¸·Î °áÁ¤µË´Ï´Ù.
±×·¸Áö ¾ÊÀ¸¸é, PQconnectStartÀÇ µÚÀÇPQconnectPollÀÇ ·çÇÁ´Â PQconnectdb¿Í °°°Ô µË´Ï´Ù.
PQconnectStart°¡ NULLÀÌ ¾Æ´Ñ Æ÷ÀÎÅ͸¦ µ¹·ÁÁÖ¾úÀ» °æ¿ì, 󸮸¦ Á¾·áÇÏ·Á¸é, ±¸Á¶³ª °ü·ÃµÇ´Â ¸Þ¸ð¸® ºí·ÏÀ» ó¸®Çϱâ À§ÇØ PQfinish¸¦ È£ÃâÇØ¾ß ÇÕ´Ï´Ù.
ÀÌ Ã³¸®´Â Á¢¼Ó ½Ãµµ°¡ ½ÇÆÐÇ߰ųª ÁߴܵǴ °æ¿ì¿¡, ¹Ýµå½Ã ½ÇÇàµÇ¾î¾ß ÇÕ´Ï´Ù.
PQconndefaults
µðÆúÆ®ÀÇ Á¢¼Ó ¿É¼ÇÀ» ¹ÝȯÇÕ´Ï´Ù.
PQconninfoOption *PQconndefaults(void);
typedef struct
{
char *keyword; /* ÀÌ ¿É¼ÇÀÇ Å°¿öµå */
char *envvar; /* ´ëü µÇ´Â ȯ°æ º¯¼öÀÇ À̸§ */
char *compiled; /* ´ëü µÇ´Â ÄÄÆÄÀϽÿ¡ µðÆúƮġ */
char *val; /* ¿É¼ÇÀÇ ÇöÀç °ª, ȤÀº NULL */
char *label; /* Á¢¼Ó ´ÙÀ̾ó·Î±× ³»ÀÇ ÇØ´ç ÇʵåÀÇ ¶óº§ */
char *dispchar; /* Á¢¼Ó ´ÙÀ̾ó·Î±× ³»ÀÇ ÇØ´ç Çʵ忡¼ Ç¥½ÃÇÏ´Â ¹®ÀÚ
°ª:
"" ÀÔ·ÂµÈ °ªÀ» ±×´ë·Î Ç¥½Ã
"*" °ªÀ» ¼û±â´Â ÆÐ½º¿öµå Çʵå¿ë
"D" µð¹ö±× ¿É¼Ç. µðÆúÆ®·Î ¾Æ¹«°Íµµ Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù */
int dispsize; /* ´ÙÀ̾ó·Î±×¿ëÀÇ ÇʵåÀÇ Å©±â(¹®ÀÚ ¼ö ´ÜÀ§) */
} PQconninfoOption;
Á¢¼Ó ¿É¼ÇÀÇ ¹è¿À» ¹ÝȯÇÕ´Ï´Ù.
ÀÌ´Â »ç¿ë °¡´ÉÇÑPQconnectdb ¿É¼Ç ¸ðµÎ³ª, ±× ½ÃÁ¡¿¡¼ÀÇ µðÆúƮġ¸¦ °áÁ¤Çϱâ À§Çؼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¹Ýȯ °ªÀº PQconninfoOption±¸Á¶ÀÇ ¹è¿ Æ÷ÀÎÅÍ·Î, keywordÆ÷ÀÎÅͰ¡ NULLÀÌ µÇ´Â Ç׸ñÀÌ ¹è¿ÀÇ ¸¶Áö¸·¿¡ ¿É´Ï´Ù.
¸Þ¸ð¸®¸¦ È®º¸µÉ ¼ö ¾ø¾ú´ø °æ¿ì´Â null Æ÷ÀÎÅ͸¦ ¹ÝȯÇÕ´Ï´Ù.
ÇöÀçÀÇ µðÆúƮġ(val Çʵå)´Â ȯ°æ º¯¼ö³ª ´Ù¸¥ ¹®¸Æ¿¡ ÀÇÁ¸ÇÕ´Ï´Ù.
È£ÃâÃø¿¡¼´Â Á¢¼Ó ¿É¼ÇÀÇ Á¤º¸´Â read Àü¿ëÀ¸·Î¸¸ ´Ù·ï¾ß ÇÕ´Ï´Ù.
¿É¼Ç ¹è¿À» ó¸®ÇÑ ÈÄ¿¡´Â PQconninfoFree¸¦ »ç¿ëÇØ ÇØÁ¦ÇÕ´Ï´Ù.
ÀÌ Ã³¸®¸¦ ÇÏÁö ¾ÊÀ¸¸éPQconndefaults°¡ È£ÃâµÉ ¶§¸¶´Ù Á¶±Ý¾¿ ¸Þ¸ð¸® ¸®Å©°¡ ¹ß»ýÇÕ´Ï´Ù.
PQfinish
¼¹ö¿ÍÀÇ Á¢¼ÓÀ» ´Ý½À´Ï´Ù. ¶ÇÇÑ, PGconn¿ÀºêÁ§Æ®°¡ Â÷ÁöÇÏ´Â ¸Þ¸ð¸®µµ ÇØÁ¦ÇÕ´Ï´Ù.
void PQfinish(PGconn *conn);
ºñ·Ï ¼¹öÀÇ Á¢¼Ó ½Ãµµ°¡ ½ÇÆÐÇØµµ(PQstatus¿¡ ÀÇÇØ Áö½ÃµÈ), ¾îÇø®ÄÉÀ̼ÇÀºPQfinish¸¦ È£ÃâÇØ
PGconn¿ÀºêÁ§Æ®°¡ Â÷ÁöÇÏ´Â ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇØ¾ß ÇÕ´Ï´Ù.
±×¸®°íPQfinish°¡ È£ÃâµÈ ÈÄ¿¡´Â PGconn Æ÷ÀÎÅ͸¦ ´Ù½Ã »ç¿ëÇØ¼´Â ¾ÈµË´Ï´Ù.
PQreset
¼¹ö·ÎÀÇ Åë½Å ä³ÎÀ» Àç¼³Á¤ ÇÕ´Ï´Ù.
void PQreset(PGconn *conn);
ÀÌ ÇÔ¼ö´Â ¼¹ö·ÎÀÇ Á¢¼ÓÀ» ´Ý°í, ÀÌÀü¿¡ »ç¿ëÇÑ ÆÄ¶ó¹ÌÅ͸¦ ¸ðµÎ »ç¿ëÇϰí, µ¿ÀÏÇÑ ¼¹ö¿¡ »õ·Î¿î Á¢¼ÓÀ» È®¸³ÇÕ´Ï´Ù. ÀÌ´Â ÀÛ¾÷ Áß¿¡ Á¢¼ÓÀÌ »ç¶óÁ³À» °æ¿ì, ¿¡·¯ º¹±¸¿¡ µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù.
PQresetStart
PQresetPoll
ºñºí·ÎÅ· ¹æ½Ä¿¡¼, ¼¹ö·ÎÀÇ Á¢¼Ó ä³ÎÀ» Àç¼³Á¤ ÇÕ´Ï´Ù
int PQresetStart(PGconn *conn);
PostgresPollingStatusType PQresetPoll(PGconn *conn);
ÀÌ·¯ÇÑ ÇÔ¼ö´Â ¼¹ö·ÎÀÇ Á¢¼ÓÀ» ´Ý°í ±×¸®°í ÀçÂ÷, ÀÌÀü »ç¿ëÇÑ ÆÄ¶ó¹ÌÅ͸¦ ¸ðµÎ »ç¿ëÇϰí, °°Àº ¼¹ö¿Í »õ·Î¿î Á¢¼ÓÀ» È®¸³ÇÏ·Á°í ÇÕ´Ï´Ù.
À̰͵éÀº ÀÛ¾÷ Áß Á¢¼ÓÀÌ ¾ø¾îÁ³À» °æ¿ìÀÇ ¿¡·¯ º¹±¸¿¡ µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù.
PQreset(À§ÀÇ)¿ÍÀÇ Â÷ÀÌ´Â ÀÌ 2°³ÀÇ ÇÔ¼ö°¡ nonblock ¹æ½Ä¿¡¼ µ¿ÀÛÇÏ´Â °ÍÀÔ´Ï´Ù.
¶ÇÇÑ, ÀÌ·¯ÇÑ ÇÔ¼ö´Â PQconnectStart³ª PQconnectPoll¿Í °°Àº Á¦¾àÀ» ¹Þ½À´Ï´Ù.
Á¢¼Ó Àç¼³Á¤À» ½ÃÀÛÇÏ·Á¸é , PQresetStart¸¦ È£ÃâÇÕ´Ï´Ù.
ÀÌ ÇÔ¼ö°¡ 0À» µ¹·ÁÁÖ´Â °æ¿ì, Àç¼³Á¤¿¡ ½ÇÆÐÇÑ °ÍÀÔ´Ï´Ù.
¹Ýȯ °ªÀÌ 1À̶ó¸é, PQconnectPoll¸¦ »ç¿ëÇØ Á¢¼ÓÀ» È®¸³Çß´ø °Í°ú °°ÀÌ, PQresetPoll¸¦ »ç¿ëÇØ Àç¼³Á¤ Æú¸µÀ» ½Ç½ÃÇÕ´Ï´Ù.