pg_dump-table-list-from-file.patch
text/x-patch
Filename: pg_dump-table-list-from-file.patch
Type: text/x-patch
Part: 0
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: unified
| File | + | − |
|---|---|---|
| src/bin/pg_dump/pg_dump.c | 56 | 0 |
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index bd14d38740..d8330ec32a 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -362,6 +362,7 @@ main(int argc, char **argv)
{"serializable-deferrable", no_argument, &dopt.serializable_deferrable, 1},
{"snapshot", required_argument, NULL, 6},
{"strict-names", no_argument, &strict_names, 1},
+ {"table-names-from-file", required_argument, NULL, 8},
{"use-set-session-authorization", no_argument, &dopt.use_setsessauth, 1},
{"no-publications", no_argument, &dopt.no_publications, 1},
{"no-security-labels", no_argument, &dopt.no_security_labels, 1},
@@ -553,6 +554,59 @@ main(int argc, char **argv)
dosync = false;
break;
+ case 8: /* read table names from file */
+ {
+ FILE *f;
+ char *line;
+ size_t line_size = 1024;
+ ssize_t chars;
+ bool use_stdin = false;
+
+ if (strcmp(optarg, "-") != 0)
+ {
+ f = fopen(optarg, "r");
+ if (!f)
+ {
+ fprintf(stderr, _("%s: could not open the input file \"%s\": %s\n"),
+ progname, optarg, strerror(errno));
+ exit_nicely(1);
+ }
+ }
+ else
+ {
+ f = stdin;
+ use_stdin = true;
+ }
+
+ line = malloc(line_size);
+
+ while ((chars = getline(&line, &line_size, f)) != -1)
+ {
+ if (line[chars - 1] == '\n')
+ line[chars - 1] = '\0';
+
+ /* ignore empty rows */
+ if (*line != '\0')
+ {
+ simple_string_list_append(&table_include_patterns, line);
+ dopt.include_everything = false;
+ }
+ }
+
+ if (ferror(f))
+ {
+ fprintf(stderr, _("%s: could not read from file \"%s\": %s\n"),
+ progname, use_stdin ? "stdin" : optarg, strerror(errno));
+ exit_nicely(1);
+ }
+
+ if (!use_stdin)
+ fclose(f);
+
+ free(line);
+ }
+ break;
+
default:
fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
exit_nicely(1);
@@ -977,6 +1031,8 @@ help(const char *progname)
printf(_(" --snapshot=SNAPSHOT use given snapshot for the dump\n"));
printf(_(" --strict-names require table and/or schema include patterns to\n"
" match at least one entity each\n"));
+ printf(_(" --table-names-from-file=FILENAME\n"
+ " read table's names from file (one table name per line)\n"));
printf(_(" --use-set-session-authorization\n"
" use SET SESSION AUTHORIZATION commands instead of\n"
" ALTER OWNER commands to set ownership\n"));