0005-fixup-Publication-WHERE-condition-support-for-pg_dum.patch
text/plain
Filename: 0005-fixup-Publication-WHERE-condition-support-for-pg_dum.patch
Type: text/plain
Part: 4
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch 0005
Subject: fixup! Publication WHERE condition support for pg_dump
| File | + | − |
|---|---|---|
| src/bin/pg_dump/pg_dump.c | 11 | 5 |
From af012ad7d7592f88e353642fd715a3825ea2ec72 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut <peter@eisentraut.org> 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