Thread
Commits
-
pg_{dump,restore}: Refactor handling of conflicting options.
- 7c8280eeb587 19 (unreleased) landed
-
pg_dumpall: Fix handling of conflicting options.
- b2898baaf7e4 19 (unreleased) cited
-
Refactor handling of "-only" options in pg_dump, pg_restore
jian he <jian.universality@gmail.com> — 2026-03-02T04:57:20Z
Hi. -------------------------------<<<<<<< /* reject conflicting "-only" options */ if (data_only && schema_only) pg_fatal("options %s and %s cannot be used together", "-s/--schema-only", "-a/--data-only"); if (schema_only && statistics_only) pg_fatal("options %s and %s cannot be used together", "-s/--schema-only", "--statistics-only"); if (data_only && statistics_only) pg_fatal("options %s and %s cannot be used together", "-a/--data-only", "--statistics-only"); /* reject conflicting "-only" options */ if (data_only && with_statistics) pg_fatal("options %s and %s cannot be used together", "-a/--data-only", "--statistics"); if (schema_only && with_statistics) pg_fatal("options %s and %s cannot be used together", "-s/--schema-only", "--statistics"); -------------------------------<<<<<<< The above is from src/bin/pg_dump/pg_dump.c, this is too much. We can just use two IF statements: if (data_only && (schema_only || with_statistics || statistics_only)) pg_fatal("options %s and %s cannot be used together", "-a/--data-only", schema_only ? "-s/--schema-only" : with_statistics ? "--statistics" : "--statistics-only"); if (schema_only && (with_statistics || statistics_only)) pg_fatal("options %s and %s cannot be used together", "-s/--schema-only", with_statistics ? "--statistics" : "--statistics-only"); First "if (data_only && (schema_only" implies that the second IF check won't have a combination of `` if (schema_only && (data_only``. Maybe we can use ELSE IF here. We can do the same thing for pg_restore.c -- jian https://www.enterprisedb.com/ -
Re: Refactor handling of "-only" options in pg_dump, pg_restore
Steven Niu <niushiji@gmail.com> — 2026-03-02T09:32:30Z
From: jian he <jian.universality@gmail.com> Sent: Monday, March 02, 2026 12:57 To: PostgreSQL-development <pgsql-hackers@postgresql.org> Subject: Refactor handling of "-only" options in pg_dump, pg_restore Hi. -------------------------------<<<<<<< /* reject conflicting "-only" options */ if (data_only && schema_only) pg_fatal("options %s and %s cannot be used together", "-s/--schema-only", "-a/--data-only"); if (schema_only && statistics_only) pg_fatal("options %s and %s cannot be used together", "-s/--schema-only", "--statistics-only"); if (data_only && statistics_only) pg_fatal("options %s and %s cannot be used together", "-a/--data-only", "--statistics-only"); /* reject conflicting "-only" options */ if (data_only && with_statistics) pg_fatal("options %s and %s cannot be used together", "-a/--data-only", "--statistics"); if (schema_only && with_statistics) pg_fatal("options %s and %s cannot be used together", "-s/--schema-only", "--statistics"); -------------------------------<<<<<<< The above is from src/bin/pg_dump/pg_dump.c, this is too much. We can just use two IF statements: if (data_only && (schema_only || with_statistics || statistics_only)) pg_fatal("options %s and %s cannot be used together", "-a/--data-only", schema_only ? "-s/--schema-only" : with_statistics ? "--statistics" : "--statistics-only"); if (schema_only && (with_statistics || statistics_only)) pg_fatal("options %s and %s cannot be used together", "-s/--schema-only", with_statistics ? "--statistics" : "--statistics-only"); First "if (data_only && (schema_only" implies that the second IF check won't have a combination of `` if (schema_only && (data_only``. Maybe we can use ELSE IF here. We can do the same thing for pg_restore.c -- jian https://www.enterprisedb.com/ Hi, jian, Your change makes the code cleaner and easier to read. I like the idea. Also I applied your patch locally and the make passed, "make check" in the src/bin/pg_dump also passed. Regards, Steven -
Re: Refactor handling of "-only" options in pg_dump, pg_restore
Zsolt Parragi <zsolt.parragi@percona.com> — 2026-03-02T21:58:30Z
Hello Simple patch and looks good, just one very minor about this comment: /* reject conflicting "-only" options */ I would either remove the comment or the "-only" part, as that's no longer true. (I see that it was there earlier in the later if, and it was similarly incorrect. So this is not new with the patch, but still seems wrong)
-
Re: Refactor handling of "-only" options in pg_dump, pg_restore
jian he <jian.universality@gmail.com> — 2026-03-09T08:15:42Z
Hi. Most of the code changes are very similar to https://git.postgresql.org/cgit/postgresql.git/commit/?id=b2898baaf7e40a187de5b0134d53d944b38209cd The change in pg_restore.c is more invasive, so I separated it from pg_dump. -- jian https://www.enterprisedb.com/
-
Re: Refactor handling of "-only" options in pg_dump, pg_restore
Nathan Bossart <nathandbossart@gmail.com> — 2026-03-09T16:38:47Z
On Mon, Mar 09, 2026 at 04:15:42PM +0800, jian he wrote: > Most of the code changes are very similar to > https://git.postgresql.org/cgit/postgresql.git/commit/?id=b2898baaf7e40a187de5b0134d53d944b38209cd > The change in pg_restore.c is more invasive, so I separated it from pg_dump. Committed, thanks. -- nathan