Hello pgdev,
(Second attempt)
I've conducted a statistical study about PostgreSQL use in OSS. One of the
result is that quite a few projects have errors in their SQL setup scripts
which lead to some statements to be ignored, typically somme ADD
CONSTRAINTS which do not change the database schema from a functional
point of view, or syntactic errors (typically a mysql syntax...) that
result in missing tables, but which are not found if the application is
not fully tested.
I think that there are two reasons why these errors are not caught by
application developers:
(1) the default verbosity is set to "notice", which is much to high. The
users just get used to seeing a lot of messages on loading an sql script,
and to ignore them, so that errors are just hidden in the flow of notices.
I think that a better default setting would be "warnings", that is
messages that require some attention from the developer.
(2) the default behavior of psql on errors is to keep going. Developers of
SQL script that are expected to work shoud be advised to: - encourage application devs to set ON_ERROR_STOP and/or use
aglobal transaction in their script. - provide a simple/short option to do that from the command line basically
thatcould be an enhanced "-1", NOT restricted to "-f" but that would work on standard input as well.
sh> psql -1 -f setup.sql # -1 does work here sh> psql -1 < setup.sql # -1 does not apply to stdin stuff...
So I would suggest the following todos:
1 - change the default verbosity to "warning".
2 - change -1 to work on stdin as well instead of being ignored, or provide another option that would do that.
--
Fabien Coelho - coelho@cri.ensmp.fr