On Mon, 6 Apr 2026 at 19:10, Euler Taveira <[email protected]> wrote: > although we already use this style > in some of the backend functions -- e.g. pg_logical_slot_*_changes()).
Thanks for the additional context. I didn't know about pg_logical_slot_*_changes using this style. I searched the docs locally and cannot find any other functions that use this style. I think what makes pg_logical_slot_*_changes special, is that it passes these options to the plugin. The plugin can define any valid options, and postgres core cannot know what they are. I think this approach makes sense for those functions because of that, but the ddl functions don't pass the options to a plugin, so that argument does not apply here. > I also consider your approach but decided not to use it. The argument against > named arguments is that you cannot add new argument *without* a DEFAULT value; > if you do, all existing functions will fail. I'm not sure what kind of change you're referring to here. I don't understand how variadic options allow you to add a required argument to an existing function without breaking existing callers. Could you give a concrete example of a change that the VARIADIC allows, but the named arguments don't? > You also need to create another > function with a different list of arguments to support a new option. I don't understand this either. We often add new optional arguments to existing functions in a new major release. e.g. pg_start_backup got the exclusive argument in PG9.6. Or do you mean something else here?
