From f4e13963ca88365263533d3cf523408d60b9f33f Mon Sep 17 00:00:00 2001 From: Noah Misch <noah@leadboat.com> Date: Wed, 1 Nov 2017 19:16:14 -0700 Subject: [PATCH] In client support of v10 features, use standard schema handling. Back-patch to v10. This continues the work of commit 080351466c5a669bf35a323bdec9e296330a5dbb. Discussion: https://postgr.es/m/CAKOSWN=ds66zLw2SqkLTM8wbXFgDbc_OdkmT3dJfPT2mE5kipA@mail.gmail.com --- src/bin/pg_dump/pg_dump.c | 22 +++++++++++++++------- src/bin/psql/describe.c | 2 +- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 07050cd08f0..ecda9bb87c4 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -3400,12 +3400,15 @@ getPublications(Archive *fout) resetPQExpBuffer(query); + /* Make sure we are in proper schema */ + selectSourceSchema(fout, "pg_catalog"); + /* Get the publications. */ appendPQExpBuffer(query, "SELECT p.tableoid, p.oid, p.pubname, " "(%s p.pubowner) AS rolname, " "p.puballtables, p.pubinsert, p.pubupdate, p.pubdelete " - "FROM pg_catalog.pg_publication p", + "FROM pg_publication p", username_subquery); res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK); @@ -3556,6 +3559,9 @@ getPublicationTables(Archive *fout, TableInfo tblinfo[], int numTables) query = createPQExpBuffer(); + /* Make sure we are in proper schema */ + selectSourceSchema(fout, "pg_catalog"); + for (i = 0; i < numTables; i++) { TableInfo *tbinfo = &tblinfo[i]; @@ -3581,8 +3587,7 @@ getPublicationTables(Archive *fout, TableInfo tblinfo[], int numTables) /* Get the publication membership for the table. */ appendPQExpBuffer(query, "SELECT pr.tableoid, pr.oid, p.pubname " - "FROM pg_catalog.pg_publication_rel pr," - " pg_catalog.pg_publication p " + "FROM pg_publication_rel pr, pg_publication p " "WHERE pr.prrelid = '%u'" " AND p.oid = pr.prpubid", tbinfo->dobj.catId.oid); @@ -3708,13 +3713,16 @@ getSubscriptions(Archive *fout) if (dopt->no_subscriptions || fout->remoteVersion < 100000) return; + /* Make sure we are in proper schema */ + selectSourceSchema(fout, "pg_catalog"); + if (!is_superuser(fout)) { int n; res = ExecuteSqlQuery(fout, "SELECT count(*) FROM pg_subscription " - "WHERE subdbid = (SELECT oid FROM pg_catalog.pg_database" + "WHERE subdbid = (SELECT oid FROM pg_database" " WHERE datname = current_database())", PGRES_TUPLES_OK); n = atoi(PQgetvalue(res, 0, 0)); @@ -3734,8 +3742,8 @@ getSubscriptions(Archive *fout) "(%s s.subowner) AS rolname, " " s.subconninfo, s.subslotname, s.subsynccommit, " " s.subpublications " - "FROM pg_catalog.pg_subscription s " - "WHERE s.subdbid = (SELECT oid FROM pg_catalog.pg_database" + "FROM pg_subscription s " + "WHERE s.subdbid = (SELECT oid FROM pg_database" " WHERE datname = current_database())", username_subquery); res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK); @@ -6724,7 +6732,7 @@ getExtendedStatistics(Archive *fout, TableInfo tblinfo[], int numTables) "oid, " "stxname, " "pg_catalog.pg_get_statisticsobjdef(oid) AS stxdef " - "FROM pg_statistic_ext " + "FROM pg_catalog.pg_statistic_ext " "WHERE stxrelid = '%u' " "ORDER BY stxname", tbinfo->dobj.catId.oid); diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 5b775d37c21..67707ffca12 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -5357,7 +5357,7 @@ describeSubscriptions(const char *pattern, bool verbose) "FROM pg_catalog.pg_subscription\n" "WHERE subdbid = (SELECT oid\n" " FROM pg_catalog.pg_database\n" - " WHERE datname = current_database())"); + " WHERE datname = pg_catalog.current_database())"); processSQLNamePattern(pset.db, &buf, pattern, true, false, NULL, "subname", NULL, -- GitLab