From af012ad7d7592f88e353642fd715a3825ea2ec72 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Thu, 25 Mar 2021 12:07:11 +0100 Subject: [PATCH 5/6] fixup! Publication WHERE condition support for pg_dump Make pg_dump backward compatible. Also add necessary parentheses around expression. pg_get_expr will supply the parentheses in many cases, but it won't for things like "WHERE TRUE". --- src/bin/pg_dump/pg_dump.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 72d87f21c8..af57a50f27 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -4141,10 +4141,16 @@ getPublicationTables(Archive *fout, TableInfo tblinfo[], int numTables) query = createPQExpBuffer(); /* Collect all publication membership info. */ - appendPQExpBufferStr(query, - "SELECT tableoid, oid, prpubid, prrelid, " - "pg_catalog.pg_get_expr(prqual, prrelid) AS prrelqual " - "FROM pg_catalog.pg_publication_rel"); + if (fout->remoteVersion >= 140000) + appendPQExpBufferStr(query, + "SELECT tableoid, oid, prpubid, prrelid, " + "pg_catalog.pg_get_expr(prqual, prrelid) AS prrelqual " + "FROM pg_catalog.pg_publication_rel"); + else + appendPQExpBufferStr(query, + "SELECT tableoid, oid, prpubid, prrelid, " + "NULL AS prrelqual " + "FROM pg_catalog.pg_publication_rel"); res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK); ntups = PQntuples(res); @@ -4233,7 +4239,7 @@ dumpPublicationTable(Archive *fout, const PublicationRelInfo *pubrinfo) appendPQExpBuffer(query, " %s", fmtQualifiedDumpable(tbinfo)); if (pubrinfo->pubrelqual) - appendPQExpBuffer(query, " WHERE %s", pubrinfo->pubrelqual); + appendPQExpBuffer(query, " WHERE (%s)", pubrinfo->pubrelqual); appendPQExpBufferStr(query, ";\n"); /* -- 2.30.2