On Thu, Oct 24, 2024 at 07:35:26PM -0400, Wietse Venema via Postfix-users wrote:
> > Note, my cursory look at the code suggests that URI connection strings
> > MUST specify a database name, the required "dbname" parameter is never
> > used to augment the URI, even if it appears to not include the required
> > databasename path component.
>
> I was thinking of URIs that specify no database name.
>
> postgresql://localhost
> postgresql://localhost:5432
> postgresql://user@localhost
> postgresql://user:secret@localhost
>
> Does that mean it will use a hard-coded database name?
At least for unix-domain socket connections, Postgres appears to
default a database equal to the username attempting the connection.
With "hosts = postgresql:///" I get:
postmap: warning: connect to pgsql server postgresql:///: connection to
server on socket "/run/postgresql/.s.PGSQL.5432" failed: FATAL: database
"viktor" does not exist?
postmap: fatal: table pgsql:/tmp/table.cf: query error: Application error
while with "hosts = postgresql:///dane", I am able to make queries
against the DANE/DNSSEC survey database:
$ postmap -q postfix.org pgsql:/tmp/table.cf
list.sys4.de
Lots of text at: https://www.postgresql.org/docs/16/libpq-connect.html
It also mentions that:
The URI scheme designator can be either postgresql:// or
postgres://.
Perhaps we should support both?
All the while the unused "dbname" was set to "dane".
https://github.com/vdukhovni/postfix/blob/a5b1b93841f14c32ddc9772887a664e7736b3826/postfix/src/global/dict_pgsql.c#L565-L573
static void plpgsql_connect_single(DICT_PGSQL *dict_pgsql, HOST *host)
{
if (host->type == TYPECONNSTR) {
host->db = PQconnectdb(host->name);
} else {
host->db = PQsetdbLogin(host->name, host->port, NULL, NULL,
dict_pgsql->dbname, dict_pgsql->username,
dict_pgsql->password);
}
...
The "dict_pgsql->dbname" value is only used for non-URI "hosts" elements.
I've never used "pgsql" tables myself. The only Postgres database I
operate listens only on a unix-domain socket. I don't
--
Viktor.
_______________________________________________
Postfix-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]