]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Treat empty connection parameters as is, in particular to enable overriding
authorPeter Eisentraut <peter_e@gmx.net>
Tue, 3 Oct 2000 19:16:17 +0000 (19:16 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Tue, 3 Oct 2000 19:16:17 +0000 (19:16 +0000)
environment variables with "nothing".  Empty host parameter indicates
Unix socket.

doc/src/sgml/libpq.sgml
src/interfaces/libpq/fe-connect.c

index a9550c8d997923c8489a1a49ea48a922240035f8..d8d8b3ca9295691d3ded5343a7dbf4b2cd231774 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.41 2000/09/29 20:21:34 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.42 2000/10/03 19:16:16 petere Exp $
 -->
 
  <chapter id="libpq-chapter">
@@ -38,21 +38,22 @@ $Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.41 2000/09/29 20:21:34 peter
    <filename>libpq</filename> library.
   </para>
 
 <sect1 id="libpq-connect">
-   <title>Database Connection Functions</title>
+ <sect1 id="libpq-connect">
+  <title>Database Connection Functions</title>
 
-   <para>
-    The following routines deal with making a connection to
-    a <productname>Postgres</productname> backend server.  The application
-    program can have several backend connections open at one time.
-    (One reason to do that is to access more than one database.)
-    Each connection is represented by a PGconn object which is obtained
-    from PQconnectdb() or PQsetdbLogin().  Note that these functions
-    will always return a non-null object pointer, unless perhaps
-    there is too little memory even to allocate the PGconn object.
-    The  PQstatus function should be called
-    to check whether  a  connection  was  successfully made
-    before queries are sent via the connection object.
+  <para>
+   The following routines deal with making a connection to a
+   <productname>Postgres</productname> backend server.  The
+   application program can have several backend connections open at
+   one time.  (One reason to do that is to access more than one
+   database.)  Each connection is represented by a
+   <structname>PGconn</> object which is obtained from
+   <function>PQconnectdb</> or <function>PQsetdbLogin</>.  Note that
+   these functions will always return a non-null object pointer,
+   unless perhaps there is too little memory even to allocate the
+   <structname>PGconn</> object.  The <function>PQstatus</> function
+   should be called to check whether a connection was successfully
+   made before queries are sent via the connection object.
 
     <itemizedlist>
      <listitem>
@@ -87,9 +88,8 @@ PGconn *PQconnectdb(const char *conninfo)
      <listitem>
      <para>
       Name of host to connect to. If a non-zero-length string is
-          specified, TCP/IP
-      communication is used.  Using this parameter causes a hostname look-up.
-      See hostaddr.
+      specified, TCP/IP communication is used, else Unix sockets.
+      Using this parameter causes a hostname look-up.  See hostaddr.
      </para>
      </listitem>
     </varlistentry>
@@ -1930,22 +1930,22 @@ call <function>fe_setauthsvc</function> at all.
 
 </sect1>
 
-<sect1 id="libpq-sample">
-<title>Sample Programs</title>
 
-<sect2>
-<title>Sample Program 1</title>
+ <sect1 id="libpq-example">
+  <title>Example Programs</title>
+
+  <example id="libpq-example-1">
+   <title>libpq Example Program 1</title>
 
-<para>
 <programlisting>
 /*
- * testlibpq.c Test the C version of Libpq, the Postgres frontend
- * library.
- *
+ * testlibpq.c
  *
+ * Test the C version of libpq, the PostgreSQL frontend
+ * library.
  */
 #include &lt;stdio.h&gt;
-#include "libpq-fe.h"
+#include &lt;libpq-fe.h&gt;
 
 void
 exit_nicely(PGconn *conn)
@@ -2065,13 +2065,11 @@ main()
 
 }
 </programlisting>
-</para>
-</sect2>
+  </example>
 
-<sect2>
-<title>Sample Program 2</title>
+  <example id="libpq-example-2">
+   <title>libpq Example Program 2</title>
 
-<para>
 <programlisting>
 /*
  * testlibpq2.c
@@ -2187,13 +2185,11 @@ main()
     return 0;
 }
 </programlisting>
-</para>
-</sect2>
+  </example>
 
-<sect2>
-<title>Sample Program 3</title>
+  <example id="libpq-example-3">
+   <title>libpq Example Program 3</>
 
-<para>
 <programlisting>
 /*
  * testlibpq3.c Test the C version of Libpq, the Postgres frontend
@@ -2370,10 +2366,9 @@ main()
     return 0;
 }
 </programlisting>
-</para>
+  </example>
 
-</sect2>
-</sect1>
+ </sect1>
 </chapter>
 
 <!-- Keep this comment at the end of the file
index a02d0ee3ed40cbd665d7e663bdccfabe3eb7d54c..fe0d6e3f6c6c8275733400e0627410b76d1327a4 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.136 2000/10/03 03:39:46 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.137 2000/10/03 19:16:17 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -416,15 +416,12 @@ PQsetdbLogin(const char *pghost, const char *pgport, const char *pgoptions,
        if (conn == NULL)
                return (PGconn *) NULL;
 
-       if ((pghost == NULL) || pghost[0] == '\0')
-       {
-               if ((tmp = getenv("PGHOST")) != NULL)
-                       conn->pghost = strdup(tmp);
-       }
-       else
+       if (pghost)
                conn->pghost = strdup(pghost);
+       else if ((tmp = getenv("PGHOST")) != NULL)
+               conn->pghost = strdup(tmp);
 
-       if ((pgport == NULL) || pgport[0] == '\0')
+       if (pgport == NULL)
        {
                if ((tmp = getenv("PGPORT")) == NULL)
                        tmp = DEF_PGPORT_STR;
@@ -433,7 +430,7 @@ PQsetdbLogin(const char *pghost, const char *pgport, const char *pgoptions,
        else
                conn->pgport = strdup(pgport);
 
-       if ((pgtty == NULL) || pgtty[0] == '\0')
+       if (pgtty == NULL)
        {
                if ((tmp = getenv("PGTTY")) == NULL)
                        tmp = DefaultTty;
@@ -442,7 +439,7 @@ PQsetdbLogin(const char *pghost, const char *pgport, const char *pgoptions,
        else
                conn->pgtty = strdup(pgtty);
 
-       if ((pgoptions == NULL) || pgoptions[0] == '\0')
+       if (pgoptions == NULL)
        {
                if ((tmp = getenv("PGOPTIONS")) == NULL)
                        tmp = DefaultOption;
@@ -476,7 +473,7 @@ PQsetdbLogin(const char *pghost, const char *pgport, const char *pgoptions,
        else
                conn->pgpass = strdup(DefaultPassword);
 
-       if ((dbName == NULL) || dbName[0] == '\0')
+       if (dbName == NULL)
        {
                if ((tmp = getenv("PGDATABASE")) != NULL)
                        conn->dbName = strdup(tmp);
@@ -705,7 +702,7 @@ connectDBStart(PGconn *conn)
 
        MemSet((char *) &conn->raddr, 0, sizeof(conn->raddr));
 
-       if (conn->pghostaddr != NULL)
+       if (conn->pghostaddr != NULL && conn->pghostaddr[0] != '\0')
        {
                /* Using pghostaddr avoids a hostname lookup */
                /* Note that this supports IPv4 only */
@@ -724,7 +721,7 @@ connectDBStart(PGconn *conn)
                memmove((char *) &(conn->raddr.in.sin_addr),
                                (char *) &addr, sizeof(addr));
        }
-       else if (conn->pghost != NULL)
+       else if (conn->pghost != NULL && conn->pghost[0] != '\0')
        {
                /* Using pghost, so we have to look-up the hostname */
                struct hostent *hp;