delta-v05-non-text-modes-for-pg_dumpall.patch
application/octet-stream
Filename: delta-v05-non-text-modes-for-pg_dumpall.patch
Type: application/octet-stream
Part: 0
Message:
Re: Non-text mode for pg_dumpall
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 v5-0001
Subject: delta v05 non-text modes for pg_dumpall
| File | + | − |
|---|---|---|
| src/bin/pg_dump/pg_dumpall.c | 19 | 33 |
From 4debd839b5dbbfd188ad2422112f8e303c5d7a71 Mon Sep 17 00:00:00 2001
From: Vaibhav Dalvi <vaibhav.dalvi@enterprisedb.com>
Date: Wed, 5 Nov 2025 06:22:00 +0000
Subject: [PATCH v1 1/1] delta v05 non-text modes for pg_dumpall
This delta patch is to fix --restrict-key
with non-text dump format.
Vaibhav Dalvi
---
src/bin/pg_dump/pg_dumpall.c | 52 +++++++++++++-----------------------
1 file changed, 19 insertions(+), 33 deletions(-)
diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c
index 601b9f9738e..9e447dc9738 100644
--- a/src/bin/pg_dump/pg_dumpall.c
+++ b/src/bin/pg_dump/pg_dumpall.c
@@ -127,7 +127,6 @@ static char *filename = NULL;
static SimpleStringList database_exclude_patterns = {NULL, NULL};
static SimpleStringList database_exclude_names = {NULL, NULL};
-static char *restrict_key;
static Archive *fout = NULL;
static pg_compress_specification compression_spec = {0};
static int dumpIdVal = 0;
@@ -397,7 +396,7 @@ main(int argc, char *argv[])
break;
case 9:
- restrict_key = pg_strdup(optarg);
+ dopt.restrict_key = pg_strdup(optarg);
appendPQExpBufferStr(pgdumpopts, " --restrict-key ");
appendShellString(pgdumpopts, optarg);
break;
@@ -555,15 +554,20 @@ main(int argc, char *argv[])
else
OPF = stdout;
- /*
- * If you don't provide a restrict key, one will be appointed for you.
- */
- if (!restrict_key)
- restrict_key = generate_restrict_key();
- if (!restrict_key)
- pg_fatal("could not generate restrict key");
- if (!valid_restrict_key(restrict_key))
- pg_fatal("invalid restrict key");
+ if (archDumpFormat == archNull)
+ {
+ /*
+ * If you don't provide a restrict key, one will be appointed for you.
+ */
+ if (!dopt.restrict_key)
+ dopt.restrict_key = generate_restrict_key();
+ if (!dopt.restrict_key)
+ pg_fatal("could not generate restrict key");
+ if (!valid_restrict_key(dopt.restrict_key))
+ pg_fatal("invalid restrict key");
+ }
+ else if (dopt.restrict_key)
+ pg_fatal("option --restrict-key can only be used with --format=plain");
/*
* If there was a database specified on the command line, use that,
@@ -670,15 +674,6 @@ main(int argc, char *argv[])
createOneArchiveEntry("--\n-- PostgreSQL database cluster dump\n--\n\n", "COMMENT");
- /* create entry for restrict */
- {
- PQExpBuffer qry = createPQExpBuffer();
-
- appendPQExpBuffer(qry, "\\restrict %s\n\n", restrict_key);
- createOneArchiveEntry(qry->data, "RESTRICT");
- destroyPQExpBuffer(qry);
- }
-
/* default_transaction_read_only = off */
{
PQExpBuffer qry = createPQExpBuffer();
@@ -727,7 +722,7 @@ main(int argc, char *argv[])
* meta-commands so that the client machine that runs psql with the dump
* output remains unaffected.
*/
- fprintf(OPF, "\\restrict %s\n\n", restrict_key);
+ fprintf(OPF, "\\restrict %s\n\n", dopt.restrict_key);
/*
* We used to emit \connect postgres here, but that served no purpose
@@ -793,19 +788,10 @@ main(int argc, char *argv[])
if (archDumpFormat == archNull)
{
/*
- * Exit restricted mode just before dumping the databases. pg_dump will
- * handle entering restricted mode again as appropriate.
+ * Exit restricted mode just before dumping the databases. pg_dump
+ * will handle entering restricted mode again as appropriate.
*/
- fprintf(OPF, "\\unrestrict %s\n\n", restrict_key);
- }
- else
- {
- /* create entry for unrestrict */
- PQExpBuffer qry = createPQExpBuffer();
-
- appendPQExpBuffer(qry, "\\unrestrict %s\n\n", restrict_key);
- createOneArchiveEntry(qry->data, "UNRESTRICT");
- destroyPQExpBuffer(qry);
+ fprintf(OPF, "\\unrestrict %s\n\n", dopt.restrict_key);
}
if (!globals_only && !roles_only && !tablespaces_only)
--
2.43.0