v35-0002-Add-no-data-option.patch
text/x-patch
Filename: v35-0002-Add-no-data-option.patch
Type: text/x-patch
Part: 3
Message:
Re: Statistics Import and Export
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 v35-0002
Subject: Add --no-data option.
| File | + | − |
|---|---|---|
| src/bin/pg_dump/pg_backup_archiver.c | 2 | 0 |
| src/bin/pg_dump/pg_backup.h | 2 | 0 |
| src/bin/pg_dump/pg_dump.c | 6 | 1 |
| src/bin/pg_dump/pg_restore.c | 4 | 1 |
From 436f30b7bce2cd6eb9904384ca0395a7abab6bfd Mon Sep 17 00:00:00 2001
From: Corey Huinker <corey.huinker@gmail.com>
Date: Thu, 14 Nov 2024 04:58:17 -0500
Subject: [PATCH v35 02/12] Add --no-data option.
This option is useful for situations where someone wishes to test
query plans from a production database without copying production data.
---
src/bin/pg_dump/pg_backup.h | 2 ++
src/bin/pg_dump/pg_backup_archiver.c | 2 ++
src/bin/pg_dump/pg_dump.c | 7 ++++++-
src/bin/pg_dump/pg_restore.c | 5 ++++-
4 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/src/bin/pg_dump/pg_backup.h b/src/bin/pg_dump/pg_backup.h
index 8fbb39d399..241855d017 100644
--- a/src/bin/pg_dump/pg_backup.h
+++ b/src/bin/pg_dump/pg_backup.h
@@ -110,6 +110,7 @@ typedef struct _restoreOptions
int column_inserts;
int if_exists;
int no_comments; /* Skip comments */
+ int no_data; /* Skip data */
int no_publications; /* Skip publication entries */
int no_security_labels; /* Skip security label entries */
int no_subscriptions; /* Skip subscription entries */
@@ -185,6 +186,7 @@ typedef struct _dumpOptions
int no_publications;
int no_subscriptions;
int no_statistics;
+ int no_data;
int no_toast_compression;
int no_unlogged_table_data;
int serializable_deferrable;
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c
index 185d7fbb7e..41001e64ac 100644
--- a/src/bin/pg_dump/pg_backup_archiver.c
+++ b/src/bin/pg_dump/pg_backup_archiver.c
@@ -186,6 +186,8 @@ dumpOptionsFromRestoreOptions(RestoreOptions *ropt)
dopt->no_publications = ropt->no_publications;
dopt->no_security_labels = ropt->no_security_labels;
dopt->no_subscriptions = ropt->no_subscriptions;
+ dopt->no_data = ropt->no_data;
+ dopt->no_statistics = ropt->no_statistics;
dopt->lockWaitTimeout = ropt->lockWaitTimeout;
dopt->include_everything = ropt->include_everything;
dopt->enable_row_security = ropt->enable_row_security;
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 8f85b04c33..c8a0b4afdf 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -494,6 +494,7 @@ main(int argc, char **argv)
{"strict-names", no_argument, &strict_names, 1},
{"use-set-session-authorization", no_argument, &dopt.use_setsessauth, 1},
{"no-comments", no_argument, &dopt.no_comments, 1},
+ {"no-data", no_argument, &dopt.no_data, 1},
{"no-publications", no_argument, &dopt.no_publications, 1},
{"no-security-labels", no_argument, &dopt.no_security_labels, 1},
{"no-statistics", no_argument, &dopt.no_statistics, 1},
@@ -796,6 +797,9 @@ main(int argc, char **argv)
if (data_only && statistics_only)
pg_fatal("options -a/--data-only and -X/--statistics-only cannot be used together");
+ if (data_only && dopt.no_data)
+ pg_fatal("options -a/--data-only and --no-data cannot be used together");
+
if (statistics_only && dopt.no_statistics)
pg_fatal("options -X/--statistics-only and --no-statistics cannot be used together");
@@ -812,7 +816,7 @@ main(int argc, char **argv)
pg_fatal("option --if-exists requires option -c/--clean");
/* set derivative flags */
- dopt.dumpData = data_only || (!schema_only && !statistics_only);
+ dopt.dumpData = data_only || (!schema_only && !statistics_only && !dopt.no_data);
dopt.dumpSchema = schema_only || (!data_only && !statistics_only);
if (statistics_only)
@@ -1247,6 +1251,7 @@ help(const char *progname)
printf(_(" --inserts dump data as INSERT commands, rather than COPY\n"));
printf(_(" --load-via-partition-root load partitions via the root table\n"));
printf(_(" --no-comments do not dump comment commands\n"));
+ printf(_(" --no-data do not dump data\n"));
printf(_(" --no-publications do not dump publications\n"));
printf(_(" --no-security-labels do not dump security label assignments\n"));
printf(_(" --no-statistics do not dump statistics\n"));
diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c
index 355f0439da..31c3cd32de 100644
--- a/src/bin/pg_dump/pg_restore.c
+++ b/src/bin/pg_dump/pg_restore.c
@@ -71,6 +71,7 @@ main(int argc, char **argv)
static int outputNoTableAm = 0;
static int outputNoTablespaces = 0;
static int use_setsessauth = 0;
+ static int no_data = 0;
static int no_comments = 0;
static int no_publications = 0;
static int no_security_labels = 0;
@@ -132,6 +133,7 @@ main(int argc, char **argv)
{"no-subscriptions", no_argument, &no_subscriptions, 1},
{"filter", required_argument, NULL, 4},
{"no-statistics", no_argument, &no_statistics, 1},
+ {"no-data", no_argument, &no_data, 1},
{NULL, 0, NULL, 0}
};
@@ -375,7 +377,7 @@ main(int argc, char **argv)
/* set derivative flags */
opts->dumpSchema = (!data_only && !statistics_only);
- opts->dumpData = (!schema_only && !statistics_only);
+ opts->dumpData = (!no_data && !schema_only && !statistics_only);
opts->dumpStatistics = (!no_statistics && !data_only && !schema_only);
opts->disable_triggers = disable_triggers;
@@ -389,6 +391,7 @@ main(int argc, char **argv)
opts->no_security_labels = no_security_labels;
opts->no_subscriptions = no_subscriptions;
opts->no_statistics = no_statistics;
+ opts->no_data = no_data;
if (if_exists && !opts->dropSchema)
pg_fatal("option --if-exists requires option -c/--clean");
--
2.47.1