> ...and query text visibility, and result visibility, and error handling, > etc. In this case, we're leveraging the psql environment we'd already set > up, and if there's an error, \set ECHO queries shows us the errant SQL as > if we typed it ourselves..
BTW, about error handling, shouldn't it honor ON_ERROR_STOP ?
With the patch when trying this:
=> set ON_ERROR_STOP on => select * from (values ('select 1/0', 'select 1/0')) AS n \gexec
it produces two errors: ERROR: division by zero ERROR: division by zero
I'd rather have the execution stop immediately after the first error, like it's the case with successive queries entered normally via the query buffer:
=> \set ON_ERROR_STOP on => select 1/0; select 1/0; ERROR: division by zero
as opposed to:
=> \set ON_ERROR_STOP off => select 1/0; select 1/0; ERROR: division by zero ERROR: division by zero
Yes, I would like it to honor ON_ERROR_STOP. I'll look into that.
Well, that was easy enough. Turns out that pset.on_error_stop is checked in MainLoop, whereas the other pset.on_* vars are checked in SendQuery().
My original idea had been to push each cell into a in-memory temp file handle and call MainLoop() on each. Pavel suggested that temp files of any sort were a bad idea, hence using SendQuery instead. It's probably for the best.