Re: Better error message when --single is not the first arg to postgres executable
От | Nathan Bossart |
---|---|
Тема | Re: Better error message when --single is not the first arg to postgres executable |
Дата | |
Msg-id | ZnD10hShTjBFy8jL@nathan обсуждение исходный текст |
Ответ на | Re: Better error message when --single is not the first arg to postgres executable (Greg Sabino Mullane <htamfids@gmail.com>) |
Ответы |
Re: Better error message when --single is not the first arg to postgres executable
|
Список | pgsql-hackers |
On Wed, Jun 05, 2024 at 11:38:48PM -0400, Greg Sabino Mullane wrote: > On Wed, Jun 5, 2024 at 3:18 PM Nathan Bossart <nathandbossart@gmail.com> > wrote: >> Could we remove the requirement that --single must be first? I'm not >> thrilled about adding a list of "must be first" options that needs to stay >> updated, but given this list probably doesn't change too frequently, maybe >> that's still better than a more invasive patch to allow specifying these >> options in any order... > > It would be nice, and I briefly looked into removing the "first" > requirement, but src/backend/tcop/postgres.c for one assumes that --single > is always argv[1], and it seemed not worth the extra effort to make it work > for argv[N] instead of argv[1]. I don't mind it being the first argument, > but that confusing error message needs to go. I spent some time trying to remove the must-be-first requirement and came up with the attached draft-grade patch. However, there's a complication: the "database" option for single-user mode must still be listed last, at least on systems where getopt() doesn't move non-options to the end of the array. My previous research [0] indicated that this is pretty common, and I noticed it because getopt() on macOS doesn't seem to reorder non-options. I thought about changing these to getopt_long(), which we do rely on to reorder non-options, but that conflicts with our ParseLongOption() "long argument simulation" that we use to allow specifying arbitrary GUCs via the command-line. This remaining discrepancy might be okay, but I was really hoping to reduce the burden on users to figure out the correct ordering of options. The situations in which I've had to use single-user mode are precisely the situations in which I'd rather not have to spend time learning these kinds of details. [0] https://postgr.es/m/20230609232257.GA121461%40nathanxps13 -- nathan
Вложения
В списке pgsql-hackers по дате отправления: