Thread: psql: immediately exit after an error?
Can psql be told to exit immediately after an error (especially when doing commands from a file, -f)? This is the default behaviour of the mysql client, except when we give it -f option ("force"). The problem is, when restoring a dump, a failure at the some point might cause the subsequent commands to produce wrong results (e.g. I redefine a builtin function with a plruby function with different behaviour, but plruby failed to be installed due to wrong path. Thus the subsequent commands are executed using the builtin function which is not the expected one.) Furthermore, you can't check on psql exit code to see whether _any_ command was not successfully executed. Of course one should examine the full psql output after a restore anyway, and the option to exit immediately after an error can save time (especially for large dumps). -- dave
I would think that depends upon how the sql in the file is coded. You can use the RAISE NOTICE / ERROR commands to aborta function's execution. > Can psql be told to exit immediately after an error (especially when > doing commands from a file, -f)? This is the default behaviour of the > mysql client, except when we give it -f option ("force"). > > The problem is, when restoring a dump, a failure at the some point might > cause the subsequent commands to produce wrong results (e.g. I redefine > a builtin function with a plruby function with different behaviour, but > plruby failed to be installed due to wrong path. Thus the subsequent > commands are executed using the builtin function which is not the > expected one.) Furthermore, you can't check on psql exit code to see > whether _any_ command was not successfully executed. > > Of course one should examine the full psql output after a restore > anyway, and the option to exit immediately after an error can save time > (especially for large dumps). > > -- > dave > > > ---------------------------(end of broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faqs/FAQ.html
David Garamond wrote: > Can psql be told to exit immediately after an error (especially when > doing commands from a file, -f)? This is the default behaviour of the > mysql client, except when we give it -f option ("force"). \set ON_ERROR_STOP on Look into the psql man page for additional semantic details. -- Peter Eisentraut http://developer.postgresql.org/~petere/
Peter Eisentraut wrote: >>Can psql be told to exit immediately after an error (especially when >>doing commands from a file, -f)? This is the default behaviour of the >>mysql client, except when we give it -f option ("force"). > > \set ON_ERROR_STOP on > > Look into the psql man page for additional semantic details. Thanks! Just what I was looking for. Btw, may I suggest this line be added by pg_dump/pg_dumpall? Or even the default being changed to on when -f is given? Or maybe add a command line option for this? -- dave
David Garamond <lists@zara.6.isreserved.com> writes: > Peter Eisentraut wrote: >> \set ON_ERROR_STOP on > Btw, may I suggest this line be added by pg_dump/pg_dumpall? No. The fact that pg_dump scripts keep going is a feature, not a bug. We recently changed pg_restore to match that behavior, in fact, because people were constantly having trouble when it didn't. regards, tom lane