diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index e3cca62bf7280b53844af99dc87228b60a5f3f9e..a6de9d7bc21602a374272148c133e89eb748c06a 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -15873,14 +15873,14 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) PQExpBuffer delqry = createPQExpBuffer(); PQExpBuffer labelq = createPQExpBuffer(); - /* Make sure we are in proper schema */ - selectSourceSchema(fout, tbinfo->dobj.namespace->dobj.name); - snprintf(bufm, sizeof(bufm), INT64_FORMAT, PG_INT64_MIN); snprintf(bufx, sizeof(bufx), INT64_FORMAT, PG_INT64_MAX); if (fout->remoteVersion >= 100000) { + /* Make sure we are in proper schema */ + selectSourceSchema(fout, "pg_catalog"); + appendPQExpBuffer(query, "SELECT seqstart, seqincrement, " "CASE WHEN seqincrement > 0 AND seqmax = %s THEN NULL " @@ -15894,12 +15894,20 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) "seqcache, seqcycle " "FROM pg_class c " "JOIN pg_sequence s ON (s.seqrelid = c.oid) " - "WHERE relname = ", - bufx, bufm); - appendStringLiteralAH(query, tbinfo->dobj.name, fout); + "WHERE c.oid = '%u'::oid", + bufx, bufm, + tbinfo->dobj.catId.oid); } else if (fout->remoteVersion >= 80400) { + /* + * Before PostgreSQL 10, sequence metadata is in the sequence itself, + * so switch to the sequence's schema instead of pg_catalog. + */ + + /* Make sure we are in proper schema */ + selectSourceSchema(fout, tbinfo->dobj.namespace->dobj.name); + appendPQExpBuffer(query, "SELECT start_value, increment_by, " "CASE WHEN increment_by > 0 AND max_value = %s THEN NULL " @@ -15916,6 +15924,9 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) } else { + /* Make sure we are in proper schema */ + selectSourceSchema(fout, tbinfo->dobj.namespace->dobj.name); + appendPQExpBuffer(query, "SELECT 0 AS start_value, increment_by, " "CASE WHEN increment_by > 0 AND max_value = %s THEN NULL "