v22-0005-Fix-pg_dump-for-CREATE-FOREIGN-DATA-WRAPPER-.-CO.patch
text/x-patch
Filename: v22-0005-Fix-pg_dump-for-CREATE-FOREIGN-DATA-WRAPPER-.-CO.patch
Type: text/x-patch
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 v22-0005
Subject: Fix pg_dump for CREATE FOREIGN DATA WRAPPER ... CONNECTION.
| File | + | − |
|---|---|---|
| src/bin/pg_dump/pg_dump.c | 14 | 1 |
| src/bin/pg_dump/pg_dump.h | 1 | 0 |
From d5496c2cdb21cc083a7b844d5ef312d3107941b0 Mon Sep 17 00:00:00 2001
From: Jeff Davis <jeff@j-davis.com>
Date: Sat, 14 Mar 2026 15:07:27 -0700
Subject: [PATCH v22 5/6] Fix pg_dump for CREATE FOREIGN DATA WRAPPER ...
CONNECTION.
---
src/bin/pg_dump/pg_dump.c | 15 ++++++++++++++-
src/bin/pg_dump/pg_dump.h | 1 +
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 137161aa5e0..17fa533086c 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -10525,6 +10525,7 @@ getForeignDataWrappers(Archive *fout)
int i_fdwowner;
int i_fdwhandler;
int i_fdwvalidator;
+ int i_fdwconnection;
int i_fdwacl;
int i_acldefault;
int i_fdwoptions;
@@ -10534,7 +10535,14 @@ getForeignDataWrappers(Archive *fout)
appendPQExpBufferStr(query, "SELECT tableoid, oid, fdwname, "
"fdwowner, "
"fdwhandler::pg_catalog.regproc, "
- "fdwvalidator::pg_catalog.regproc, "
+ "fdwvalidator::pg_catalog.regproc, ");
+
+ if (fout->remoteVersion >= 190000)
+ appendPQExpBufferStr(query, "fdwconnection::pg_catalog.regproc, ");
+ else
+ appendPQExpBufferStr(query, "'-' AS fdwconnection, ");
+
+ appendPQExpBufferStr(query,
"fdwacl, "
"acldefault('F', fdwowner) AS acldefault, "
"array_to_string(ARRAY("
@@ -10557,6 +10565,7 @@ getForeignDataWrappers(Archive *fout)
i_fdwowner = PQfnumber(res, "fdwowner");
i_fdwhandler = PQfnumber(res, "fdwhandler");
i_fdwvalidator = PQfnumber(res, "fdwvalidator");
+ i_fdwconnection = PQfnumber(res, "fdwconnection");
i_fdwacl = PQfnumber(res, "fdwacl");
i_acldefault = PQfnumber(res, "acldefault");
i_fdwoptions = PQfnumber(res, "fdwoptions");
@@ -10576,6 +10585,7 @@ getForeignDataWrappers(Archive *fout)
fdwinfo[i].rolname = getRoleName(PQgetvalue(res, i, i_fdwowner));
fdwinfo[i].fdwhandler = pg_strdup(PQgetvalue(res, i, i_fdwhandler));
fdwinfo[i].fdwvalidator = pg_strdup(PQgetvalue(res, i, i_fdwvalidator));
+ fdwinfo[i].fdwconnection = pg_strdup(PQgetvalue(res, i, i_fdwconnection));
fdwinfo[i].fdwoptions = pg_strdup(PQgetvalue(res, i, i_fdwoptions));
/* Decide whether we want to dump it */
@@ -16179,6 +16189,9 @@ dumpForeignDataWrapper(Archive *fout, const FdwInfo *fdwinfo)
if (strcmp(fdwinfo->fdwvalidator, "-") != 0)
appendPQExpBuffer(q, " VALIDATOR %s", fdwinfo->fdwvalidator);
+ if (strcmp(fdwinfo->fdwconnection, "-") != 0)
+ appendPQExpBuffer(q, " CONNECTION %s", fdwinfo->fdwconnection);
+
if (strlen(fdwinfo->fdwoptions) > 0)
appendPQExpBuffer(q, " OPTIONS (\n %s\n)", fdwinfo->fdwoptions);
diff --git a/src/bin/pg_dump/pg_dump.h b/src/bin/pg_dump/pg_dump.h
index 1c11a79083f..b150d736db1 100644
--- a/src/bin/pg_dump/pg_dump.h
+++ b/src/bin/pg_dump/pg_dump.h
@@ -604,6 +604,7 @@ typedef struct _fdwInfo
const char *rolname;
char *fdwhandler;
char *fdwvalidator;
+ char *fdwconnection;
char *fdwoptions;
} FdwInfo;
--
2.43.0