mirror of https://github.com/postgres/postgres
Interpret a dbName param to PQsetdbLogin as a conninfo string if it contains an = sign. Tom Lane and Andrew Dunstan.
This commit is contained in:
parent
93b4f0ff77
commit
5133dd786b
|
@ -1,4 +1,4 @@
|
|||
<!-- $PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.220 2006/11/10 22:15:26 tgl Exp $ -->
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.221 2006/12/19 01:53:36 adunstan Exp $ -->
|
||||
|
||||
<chapter id="libpq">
|
||||
<title><application>libpq</application> - C Library</title>
|
||||
|
@ -324,13 +324,19 @@ PGconn *PQsetdbLogin(const char *pghost,
|
|||
const char *login,
|
||||
const char *pwd);
|
||||
</synopsis>
|
||||
</para>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This is the predecessor of <function>PQconnectdb</function> with a fixed
|
||||
set of parameters. It has the same functionality except that the
|
||||
missing parameters will always take on default values. Write <symbol>NULL</symbol> or an
|
||||
empty string for any one of the fixed parameters that is to be defaulted.
|
||||
<para>
|
||||
This is the predecessor of <function>PQconnectdb</function> with a fixed
|
||||
set of parameters. It has the same functionality except that the
|
||||
missing parameters will always take on default values. Write <symbol>NULL</symbol> or an
|
||||
empty string for any one of the fixed parameters that is to be defaulted.
|
||||
</para>
|
||||
<para>
|
||||
If the <parameter>dbName</parameter> contains an <symbol>=</symbol> sign, it
|
||||
is taken as a <parameter>conninfo</parameter> string in exactly the same way as
|
||||
if it had been passed to <function>PQconnectdb</function>, and the remaining
|
||||
parameters are then applied as above.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.178 2006/12/06 15:47:22 momjian Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.179 2006/12/19 01:53:36 adunstan Exp $
|
||||
PostgreSQL documentation
|
||||
-->
|
||||
|
||||
|
@ -113,6 +113,10 @@ PostgreSQL documentation
|
|||
class="parameter">dbname</replaceable> as the first non-option
|
||||
argument on the command line.
|
||||
</para>
|
||||
<para>
|
||||
If this parameter contains an <symbol>=</symbol> sign, it it treated as a
|
||||
<parameter>conninfo</parameter> string. See <xref linkend="libpq-connect"> for more information.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
@ -555,6 +559,18 @@ PostgreSQL documentation
|
|||
passwords. See <xref linkend="libpq-pgpass"> for more information.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
An alternative way to specify connection parameters is in a
|
||||
<parameter>conninfo</parameter> string, which is used instead of a
|
||||
database name. This mechanism give you very wide control over the
|
||||
connection. For example,
|
||||
<programlisting>
|
||||
$ <userinput>psql "service=myservice sslmode=require"</userinput>
|
||||
</programlisting>
|
||||
See <xref linkend="libpq-connect"> for more information on all the
|
||||
available connection options.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If the connection could not be made for any reason (e.g., insufficient
|
||||
privileges, server is not running on the targeted host, etc.),
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.339 2006/11/21 16:28:00 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.340 2006/12/19 01:53:36 adunstan Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -574,16 +574,36 @@ PQsetdbLogin(const char *pghost, const char *pgport, const char *pgoptions,
|
|||
conn = makeEmptyPGconn();
|
||||
if (conn == NULL)
|
||||
return NULL;
|
||||
/*
|
||||
* If the dbName parameter contains '=', assume it's a conninfo
|
||||
* string.
|
||||
*/
|
||||
if (dbName && strchr(dbName,'='))
|
||||
{
|
||||
if (!connectOptions1(conn, dbName))
|
||||
return conn;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Old-style path: first, parse an empty conninfo string in
|
||||
* order to set up the same defaults that PQconnectdb() would use.
|
||||
*/
|
||||
if (!connectOptions1(conn, ""))
|
||||
return conn;
|
||||
|
||||
/*
|
||||
* Parse an empty conninfo string in order to set up the same defaults
|
||||
* that PQconnectdb() would use.
|
||||
*/
|
||||
if (!connectOptions1(conn, ""))
|
||||
return conn;
|
||||
/* Insert dbName parameter value into struct */
|
||||
if (dbName && dbName[0] != '\0')
|
||||
{
|
||||
if (conn->dbName)
|
||||
free(conn->dbName);
|
||||
conn->dbName = strdup(dbName);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Absorb specified options into conn structure, overriding defaults
|
||||
/*
|
||||
* Insert remaining parameters into struct, overriding defaults
|
||||
* (as well as any conflicting data from dbName taken as a conninfo).
|
||||
*/
|
||||
if (pghost && pghost[0] != '\0')
|
||||
{
|
||||
|
@ -613,13 +633,6 @@ PQsetdbLogin(const char *pghost, const char *pgport, const char *pgoptions,
|
|||
conn->pgtty = strdup(pgtty);
|
||||
}
|
||||
|
||||
if (dbName && dbName[0] != '\0')
|
||||
{
|
||||
if (conn->dbName)
|
||||
free(conn->dbName);
|
||||
conn->dbName = strdup(dbName);
|
||||
}
|
||||
|
||||
if (login && login[0] != '\0')
|
||||
{
|
||||
if (conn->pguser)
|
||||
|
|
Loading…
Reference in New Issue