Feature proposal, DBURL: psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

Started by Hans Schoualmost 9 years ago9 messagesgeneral
Jump to latest
#1Hans Schou
hans.schou@gmail.com

Hi

The dburl (or dburi) has become common to use by many systems connecting to
a database. The feature is that one can pass all parameters in a string,
which has similar pattern as http-URI do.
Especially when using psql in a script, having the credentials in one
string is convenient.

The syntax could be:

[scheme[<+>dsn]]://[[username[:[password]]@][host][:port][/[dbname][/[[table[/[column[,column...]*]]]|sql]]]

Example of usage:
psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

Where
Scheme: pgsql
Username: joe
Password: p4zzw0rd
Host: example.org
Port: 2345
Database: dbname

I have attached an example of how it could be implemented. It uses libpcre
RegEx to pass the dburl.

best regards
Hans

Attachments:

dburl.difftext/plain; charset=US-ASCII; name=dburl.diffDownload+305-4
#2Christoph Moench-Tegeder
cmt@burggraben.net
In reply to: Hans Schou (#1)
Re: Feature proposal, DBURL: psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

## Hans Schou (hans.schou@gmail.com):

Example of usage:
psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

Make the scheme "postgresql" and you're here:
https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING
"32.1.1.2. Connection URIs".

Regards,
Christoph

--
Spare Space

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#3Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Hans Schou (#1)
Re: Feature proposal, DBURL: psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

Hans Schou wrote:

The dburl (or dburi) has become common to use by many systems connecting to a database.
The feature is that one can pass all parameters in a string, which has similar pattern as
http-URI do.

Especially when using psql in a script, having the credentials in one string is
convenient.

The syntax could be:

[scheme[<+>dsn]]://[[username[:[password]]@][host][:port][/[dbname][/[[table[/[column[,col
umn...]*]]]|sql]]]

Example of usage:
psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

[...]

I have attached an example of how it could be implemented. It uses libpcre RegEx to pass
the dburl.

Unless I misunderstand, this has been in PostgreSQL since 9.2:

https://www.postgresql.org/docs/current/static/libpq-connect.html#AEN45571
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=b035cb9db7aa7c0f28581b23feb10d3c559701f6

Yours,
Laurenz Albe

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#4Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Laurenz Albe (#3)
Re: Feature proposal, DBURL: psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

On 07/05/2017 06:15 AM, Albe Laurenz wrote:

Hans Schou wrote:

The dburl (or dburi) has become common to use by many systems connecting to a database.
The feature is that one can pass all parameters in a string, which has similar pattern as
http-URI do.

Especially when using psql in a script, having the credentials in one string is
convenient.

The syntax could be:

[scheme[<+>dsn]]://[[username[:[password]]@][host][:port][/[dbname][/[[table[/[column[,col
umn...]*]]]|sql]]]

Example of usage:
psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

[...]

I have attached an example of how it could be implemented. It uses libpcre RegEx to pass
the dburl.

Unless I misunderstand, this has been in PostgreSQL since 9.2:

T think the OP was referring to the latter part of:

[scheme[<+>dsn]]://[[username[:[password]]@][host][:port][/[dbname][/[[table[/[column[,column...]*]]]|sql]]]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The thing is that in a quick search on this I did not find a reference
implementation of this to compare against.

Yours,
Laurenz Albe

--
Adrian Klaver
adrian.klaver@aklaver.com

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#5Thomas Kellerer
spam_eater@gmx.net
In reply to: Hans Schou (#1)
Re: Feature proposal, DBURL: psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

Hans Schou schrieb am 05.07.2017 um 14:27:

The dburl (or dburi) has become common to use by many systems
connecting to a database. The feature is that one can pass all
parameters in a string, which has similar pattern as http-URI do.

Especially when using psql in a script, having the credentials in one string is convenient.

The syntax could be:
[scheme[<+>dsn]]://[[username[:[password]]@][host][:port][/[dbname][/[[table[/[column[,column...]*]]]|sql]]]

Besides the fact that something like that is already possible:

What's the use of "table" and "column" in the URI? You connect to a database, not to a table.

Thomas

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#6Hans Schou
hans.schou@gmail.com
In reply to: Laurenz Albe (#3)
Re: Feature proposal, DBURL: psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

2017-07-05 15:15 GMT+02:00 Albe Laurenz <laurenz.albe@wien.gv.at>:

Unless I misunderstand, this has been in PostgreSQL since 9.2:

Sorry! I did not read the *new* manual.
(OK, 9.2 is not that new)

It is even mentioned in the man page.

Then I have a new proposal. Write a note about in
psql --help

./hans

#7Hans Schou
hans.schou@gmail.com
In reply to: Thomas Kellerer (#5)
Re: Re: Feature proposal, DBURL: psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

2017-07-05 16:29 GMT+02:00 Thomas Kellerer <spam_eater@gmx.net>:

Hans Schou schrieb am 05.07.2017 um 14:27:

The dburl (or dburi) has become common to use by many systems
connecting to a database. The feature is that one can pass all
parameters in a string, which has similar pattern as http-URI do.

Especially when using psql in a script, having the credentials in one

string is convenient.

The syntax could be:
[scheme[<+>dsn]]://[[username[:[password]]@][host][:port][/[

dbname][/[[table[/[column[,column...]*]]]|sql]]]

Besides the fact that something like that is already possible:

What's the use of "table" and "column" in the URI? You connect to a
database, not to a table.

With 'table' the idea was to do a "SELECT * FROM table" on that.
With 'column' added only that or those columns would be listed.

The "sql" part in the end was supposed to be a SQL-statement to be
executed, like:
psql "postgresql://localhost/dbname/INSERT INTO foo VALUES($RANDOM)"
which should be equal to
echo "INSERT INTO foo VALUES($RANDOM)" | psql
postgresql://localhost/dbname

./hans

#8Hans Schou
hans.schou@gmail.com
In reply to: Adrian Klaver (#4)
Re: Feature proposal, DBURL: psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

2017-07-05 15:41 GMT+02:00 Adrian Klaver <adrian.klaver@aklaver.com>:

[scheme[<+>dsn]]://[[username[:[password]]@][host][:port][/[
dbname][/[[table[/[column[,column...]*]]]|sql]]]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The thing is that in a quick search on this I did not find a reference
implementation of this to compare against.

"dsn" is only relevant when the scheme is ODBC.

In a situation where an application (like Drupal) get connect string (URI)
it should be able to find the right driver to use. In case with of ODBC, a
dsn (Data Source Name) is needed.

./hans

#9Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Hans Schou (#8)
Re: Feature proposal, DBURL: psql pgsql://joe:p4zzw0rd@example.org:2345/dbname

On 07/05/2017 08:31 AM, Hans Schou wrote:

2017-07-05 15:41 GMT+02:00 Adrian Klaver <adrian.klaver@aklaver.com
<mailto:adrian.klaver@aklaver.com>>:

[scheme[<+>dsn]]://[[username[:[password]]@][host][:port][/[dbname][/[[table[/[column[,column...]*]]]|sql]]]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The thing is that in a quick search on this I did not find a
reference implementation of this to compare against.

"dsn" is only relevant when the scheme is ODBC.

That was formatting error on my part, I was trying to point to the back
half of the URI. The part with the table/column/sql sections.

In a situation where an application (like Drupal) get connect string
(URI) it should be able to find the right driver to use. In case with of
ODBC, a dsn (Data Source Name) is needed.

./hans

--
Adrian Klaver
adrian.klaver@aklaver.com

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general