I could not find the exact clause that says that in either SQL'92 nor
SQL'99, but C.J.Date says (about SQL'92) says that a DISCONNECT would
"automatically execute either a ROLLBACK or a COMMIT (it is
implementation dependent which)".
I guess a GUC variable can be a good idea, for Oracle compatibility
purposes. I would make our default different from Oracle's though: if a
commit is not received something is wrong, either an user error, some
tool error, etc. It sees safer to ROLLBACK. Isn't that what we do if
a connection is lost due to a communication error anyway? How can
Oracle know that if it got the whole set of commands for the transaction
anyway? Isn't there a more specific situation where it does that (the
automatic COMMIT)?
Anyway, psql can be smarter and ask the user: "There is a transaction in
progress, do you want to commit?", what can be done
--
Fernando Nasser
Red Hat Canada Ltd. E-Mail: fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9