pg_ctl failed when I added a thirteenth parameter (log_temp_files). Is this documented, and I missed it?
(The purpose is to optimize for a 30-thread pg_restore of a multi-TB 9.6 database. Once it's finished, I stop/start, to enable "production" values like fsync=on.)
Arguments are not parameters. Try putting the restart argument after all parameters.
Quite irritating. "pg_ctl restart" instantly tells you what it's doing.
And still, why the limitation?
I'm thinking that the forced ordering being different than what is documented is a shell-specific issue. As for why only one of restart, stop, start, etc... can be specified for any given invocation of pg_ctl, that seems like an entirely realistic limitation and typo-preventing feature.
The error message is "pg_ctl: too many command-line arguments". It's manifestly obvious that the command failed when I added a "-" option, not a "start", "stop" command. and yet pg_ctl complained about command-line arguments.
As soon as you supplied "restart" the CLI parser code for your shell/whatnot stopped looking for options/parameters and everything else subsequent is defined to be an argument. As soon as it sees a second argument for a command that is defined to only have a single argument the parser immediately aborts.
Yes, I'm describing what is observed. I don't know precisely which tooling is "at fault" here or who could make it behave differently but the concept of options first, everything after the last option/first argument is an argument is something that exists and is what you are seeing here.