mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Accept postgres:// URIs in libpq connection functions
postgres:// URIs are an attempt to "stop the bleeding" in this general area that has been said to occur due to external projects adopting their own syntaxes. The syntaxes supported by this patch: postgres://[user[:pwd]@][unix-socket][:port[/dbname]][?param1=value1&...] postgres://[user[:pwd]@][net-location][:port][/dbname][?param1=value1&...] should be enough to cover most interesting cases without having to resort to "param=value" pairs, but those are provided for the cases that need them regardless. libpq documentation has been shuffled around a bit, to avoid stuffing all the format details into the PQconnectdbParams description, which was already a bit overwhelming. The list of keywords has moved to its own subsection, and the details on the URI format live in another subsection. This includes a simple test program, as requested in discussion, to ensure that interesting corner cases continue to work appropriately in the future. Author: Alexander Shulgin Some tweaking by Álvaro Herrera, Greg Smith, Daniel Farina, Peter Eisentraut Reviewed by Robert Haas, Alexey Klyukin (offlist), Heikki Linnakangas, Marko Kreen, and others Oh, it also supports postgresql:// but that's probably just an accident.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@ -115,7 +115,10 @@ PostgreSQL documentation
|
||||
argument on the command line.
|
||||
</para>
|
||||
<para>
|
||||
If this parameter contains an <symbol>=</symbol> sign, it is treated as a
|
||||
If this parameter contains an <symbol>=</symbol> sign or starts
|
||||
with a valid <acronym>URI</acronym> prefix
|
||||
(<literal>postgresql://</literal>
|
||||
or <literal>postgres://</literal>), it is treated as a
|
||||
<parameter>conninfo</parameter> string. See <xref linkend="libpq-connect"> for more information.
|
||||
</para>
|
||||
</listitem>
|
||||
@ -596,11 +599,13 @@ PostgreSQL documentation
|
||||
|
||||
<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
|
||||
<parameter>conninfo</parameter> string or
|
||||
a <acronym>URI</acronym>, 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>
|
||||
$ <userinput>psql postgresql://dbmaster:5433/mydb?sslmode=require</userinput>
|
||||
</programlisting>
|
||||
This way you can also use LDAP for connection parameter lookup as
|
||||
described in <xref linkend="libpq-ldap">.
|
||||
|
Reference in New Issue
Block a user