Consolidated Fabien's TAP test additions with v7, in case anyone else wants
to be reviewing.

Patch applies (with "patch"), make check ok, psql tap test ok.

I did some more tests. I found a subtlety that I missed before: when running under ON_ERROR_STOP, messages are not fully consistent:

 sh> cat test.sql
 \set ON_ERROR_STOP on
 \if error
   \echo NO
 \echo NO

 sh> ./psql < test.sql
 # ok
 unrecognized value "error" for "\if <expr>": boolean expected
 # ok
 new \if is invalid, ignoring commands until next \endif
 # hmmm... but it does not, it is really stopping immediately...
 found EOF before closing \endif(s)
 # no, it has just stopped before EOF because of the error...

Also I'm not quite sure why psql decided that it is in interactive mode above, its stdin is a file, but why not.

The issue is made more explicit with -f:

 sh> ./psql -f test.sql
 psql:test.sql:2: unrecognized value "error" for "\if <expr>": boolean expected
 psql:test.sql:2: new \if is invalid, ignoring commands until next \endif
 psql:test.sql:2: found EOF before closing \endif(s)

It stopped on line 2, which is expected, but it was not on EOF.

I think that the message when stopping should be ", stopping as required by ON_ERROR_STOP" or something like that instead of ", ignoring...", and the EOF message should not be printed at all in this case.


Sent via pgsql-hackers mailing list (
To make changes to your subscription:

Reply via email to