From 1efae71988c8392d8c7f045325e97dd4bcbbc8c2 Mon Sep 17 00:00:00 2001 From: Daniel Gustafsson Date: Mon, 26 Jun 2017 13:46:35 +0200 Subject: [PATCH 3/6] Server version check --- src/bin/psql/describe.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 2ac03533bc..85fc22d942 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -3230,34 +3230,34 @@ listDbRoleSettings(const char *pattern, const char *pattern2) PQExpBufferData buf; PGresult *res; printQueryOpt myopt = pset.popt; + bool havewhere; initPQExpBuffer(&buf); - if (pset.sversion >= 90000) - { - bool havewhere; - - printfPQExpBuffer(&buf, "SELECT rolname AS \"%s\", datname AS \"%s\",\n" - "pg_catalog.array_to_string(setconfig, E'\\n') AS \"%s\"\n" - "FROM pg_db_role_setting AS s\n" - "LEFT JOIN pg_database ON pg_database.oid = setdatabase\n" - "LEFT JOIN pg_roles ON pg_roles.oid = setrole\n", - gettext_noop("Role"), - gettext_noop("Database"), - gettext_noop("Settings")); - havewhere = processSQLNamePattern(pset.db, &buf, pattern, false, false, - NULL, "pg_roles.rolname", NULL, NULL); - processSQLNamePattern(pset.db, &buf, pattern2, havewhere, false, - NULL, "pg_database.datname", NULL, NULL); - appendPQExpBufferStr(&buf, "ORDER BY 1, 2;"); - } - else + if (pset.sversion < 90000) { - fprintf(pset.queryFout, - _("No per-database role settings support in this server version.\n")); - return false; + char sverbuf[32]; + + psql_error("The server (version %s) does not support per-database role settings.\n", + formatPGVersionNumber(pset.sversion, false, + sverbuf, sizeof(sverbuf))); + return true; } + printfPQExpBuffer(&buf, "SELECT rolname AS \"%s\", datname AS \"%s\",\n" + "pg_catalog.array_to_string(setconfig, E'\\n') AS \"%s\"\n" + "FROM pg_db_role_setting AS s\n" + "LEFT JOIN pg_database ON pg_database.oid = setdatabase\n" + "LEFT JOIN pg_roles ON pg_roles.oid = setrole\n", + gettext_noop("Role"), + gettext_noop("Database"), + gettext_noop("Settings")); + havewhere = processSQLNamePattern(pset.db, &buf, pattern, false, false, + NULL, "pg_roles.rolname", NULL, NULL); + processSQLNamePattern(pset.db, &buf, pattern2, havewhere, false, + NULL, "pg_database.datname", NULL, NULL); + appendPQExpBufferStr(&buf, "ORDER BY 1, 2;"); + res = PSQLexec(buf.data); if (!res) return false; -- 2.13.0.rc0.45.ge2cb6ab.dirty