Skip to content

Commit fdd405c

Browse files
committed
Report the true database name on connection errors
When reporting connection errors, we might show a database name in the message that's not the one we actually tried to connect to, if the database was taken from libpq defaults instead of from user parameters. Fix such error messages to use PQdb(), which reports the correct name. (But, per commit 2930c05, make sure not to try to print NULL.) Apply to branches 9.5 through 13. Branch master has already been changed differently by commit 58cd8dc. Reported-by: Robert Haas <robertmhaas@gmail.com> Discussion: https://postgr.es/m/CA+TgmobssJ6rS22dspWnu-oDxXevGmhMD8VcRBjmj-b9UDqRjw@mail.gmail.com
1 parent 3fa7b90 commit fdd405c

File tree

4 files changed

+6
-5
lines changed

4 files changed

+6
-5
lines changed

contrib/oid2name/oid2name.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ sql_conn(struct options *my_opts)
320320
if (PQstatus(conn) == CONNECTION_BAD)
321321
{
322322
fprintf(stderr, "%s: could not connect to database %s: %s",
323-
"oid2name", my_opts->dbname, PQerrorMessage(conn));
323+
"oid2name", PQdb(conn) ? PQdb(conn) : "", PQerrorMessage(conn));
324324
PQfinish(conn);
325325
exit(1);
326326
}

contrib/vacuumlo/vacuumlo.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ vacuumlo(const char *database, const struct _param *param)
129129
if (PQstatus(conn) == CONNECTION_BAD)
130130
{
131131
fprintf(stderr, "Connection to database \"%s\" failed:\n%s",
132-
database, PQerrorMessage(conn));
132+
PQdb(conn) ? PQdb(conn) : "", PQerrorMessage(conn));
133133
PQfinish(conn);
134134
return -1;
135135
}

src/bin/pg_dump/pg_dumpall.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1681,7 +1681,7 @@ connectDatabase(const char *dbname, const char *connection_string,
16811681
{
16821682
fprintf(stderr,
16831683
_("%s: could not connect to database \"%s\": %s"),
1684-
progname, dbname, PQerrorMessage(conn));
1684+
progname, PQdb(conn) ? PQdb(conn) : "", PQerrorMessage(conn));
16851685
exit_nicely(1);
16861686
}
16871687
else

src/bin/pgbench/pgbench.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,7 +1163,7 @@ doConnect(void)
11631163
if (PQstatus(conn) == CONNECTION_BAD)
11641164
{
11651165
fprintf(stderr, "connection to database \"%s\" failed:\n%s",
1166-
dbName, PQerrorMessage(conn));
1166+
PQdb(conn), PQerrorMessage(conn));
11671167
PQfinish(conn);
11681168
return NULL;
11691169
}
@@ -5410,7 +5410,8 @@ main(int argc, char **argv)
54105410

54115411
if (PQstatus(con) == CONNECTION_BAD)
54125412
{
5413-
fprintf(stderr, "connection to database \"%s\" failed\n", dbName);
5413+
fprintf(stderr, "connection to database \"%s\" failed\n",
5414+
PQdb(con) ? PQdb(con) : "");
54145415
fprintf(stderr, "%s", PQerrorMessage(con));
54155416
exit(1);
54165417
}

0 commit comments

Comments
 (0)