On Wed, Mar 26, 2025 at 10:21 AM Amit Kapila <[email protected]> wrote: > > On Wed, Mar 26, 2025 at 2:05 AM Euler Taveira <[email protected]> wrote: > > > > On Tue, Mar 25, 2025, at 8:07 AM, Shubham Khanna wrote: > > > > Apologies for the oversight. I have attached the patches now. Please > > find them included here. > > > > > > I started looking at this patch. When I started reading the commit message, > > I > > didn't understand why the options that provide names to objects are > > incompatible with --all option. I agree that --all and --database should be > > incompatible but the others shouldn't. We already have a check saying that > > the > > number of specified objects cannot be different from the number of > > databases. > > Why don't rely on it instead of forbidding these options? > > > > We must ensure to match the order of objects specified with the > database as well (The doc says: The order of the multiple publication > name switches must match the order of database switches.). It is easy > for users to do that when explicitly specifying databases with -d > switches but not with --all case. I can see a way to extend the > current functionality to allow just fetching databases from the > publisher and displaying them to the user, then we can expect the user > to specify the names of other objects in the same order but not > otherwise. > > > > > What happens if you don't specify the dbname in -P option? > > > > + /* Establish a connection to the source server */ > > + conn = connect_database(opt->pub_conninfo_str, true); > > > > It defaults to user name. If you are using another superuser (such as admin) > > the connection might fail if there is no database named 'admin'. vacuumdb > > that > > has a similar --all option, uses another option (--maintenance-db) to > > discover > > which databases should be vacuumed. I'm not suggesting to add the > > --maintenance-db option. I wouldn't like to hardcode a specific database > > (template1, for example) if there is no dbname in the connection string. > > Instead, suggest the user to specify dbname into -P option. An error message > > should be provided saying the exact reason: no dbname was specified. > > > > But why shouldn't we use the same specification as vacuumdb, which is: > "If not specified, the postgres database will be used, or if that does > not exist, template1 will be used."? >
I agree that ensuring the correct order of objects (like publications)
matching with databases is crucial, especially when explicitly
specifying databases using -d switches.
To address this, I have created a 0002 patch that aligns object
creation order with the corresponding databases.
> >
> > I checked the applications that provide multiple synopsis using the
> > following command.
> >
> > grep '<cmdsynopsis' doc/src/sgml/ref/*.sgml | awk '{print $1}' | sort |
> > uniq -c
> >
> > There are just 3 applications that have multiple cmdsynopsis. pgbench has 2
> > distinct tasks (load and run) so it makes sense to have 2 synopsis. pg_ctl
> > has
> > multiple tasks and also deserves multiple synopsis. The complexity
> > introduced
> > into vacuumdb (per table, per schema) seems to justify multiple synopsis
> > too.
> > However, the same logic doesn't apply here. IMO 0002 shouldn't be applied
> > because the additional option (--all) doesn't justify multiple synopsis for
> > syntax clarification.
> >
>
> Yeah, also, vacuumdb doesn't have a separate line for --all in
> synopsis. So, I agree with you about not adding '--all' option in the
> synopsis.
>
> --
The attached patches contain the suggested changes. They also address
the comments provided by Ashutosh (at [1]) and Euler (at [2]).
[1] -
https://www.postgresql.org/message-id/CAExHW5uvp6LWfgcysohDaOaNhqAbmuc%3D9BwWke%3D6KPRZ%2BwVOkA%40mail.gmail.com
[2] -
https://www.postgresql.org/message-id/e32c358b-95b5-426c-9baa-281812821588%40app.fastmail.com
Thanks and regards,
Shubham Khanna.
v22-0001-Enhance-pg_createsubscriber-to-fetch-and-append-.patch
Description: Binary data
v22-0004-Additional-test-cases.patch
Description: Binary data
v22-0003-Synopsis-for-all-option.patch
Description: Binary data
v22-0002-Fetch-databases-from-publisher.patch
Description: Binary data
