Starting to poke at this... the proposal to add prove checks for psql just to see whether \if respects ON_ERROR_STOP seems like an incredibly expensive way to test a rather minor point. On my machine, "make check" in bin/psql goes from zero time to close to 8 seconds. I'm not really on board with adding that kind of time to every buildfarm run for the foreseeable future just for this.
Couldn't we get close to the same coverage by adding a single-purpose test script to the main regression tests? Along the lines of
\set ON_ERROR_STOP 1 \if invalid \echo should not get here \endif \echo should not get here either
You could imagine just dropping that at the end of psql.sql, but I think probably a separate script is worth the trouble.
regards, tom lane
I think I can manage that. Just to be clear, you're asking me to replace the perl script with one new sql script? If so, there's probably a few non-on-stop tests in there that might be worth preserving in regression form.