John Taylor <[EMAIL PROTECTED]> writes: > On Wednesday 12 June 2002 16:36, Tom Lane wrote: >> Queries after the failure aren't run at all; they're only passed through >> the parser's grammar so it can look for a COMMIT or ROLLBACK command. >> Normal processing resumes after ROLLBACK. If you were paying attention >> to the return codes you'd notice complaints like >> >> regression=# begin; >> BEGIN >> regression=# select 1/0; >> ERROR: floating point exception! The last floating point operation either exceeded >legal ranges or was a divide by zero >> -- subsequent queries will be rejected like so: >> regression=# select 1/0; >> WARNING: current transaction is aborted, queries ignored until end of transaction >block >> *ABORT STATE*
> Well, I'm using JDBC, and it isn't throwing any exceptions, so I > assumed it was working :-/ This brings up a point that's bothered me in the past. Why is the "queries ignored" response treated as a NOTICE and not an ERROR? A client that is not paying close attention to the command result code (as JDBC is evidently not doing :-() might think that its command had been executed. It seems to me the right behavior is regression=# select 1/0; ERROR: current transaction is aborted, queries ignored until end of transaction block regression=# I think the reason why it's been done with a NOTICE is that if we elog(ERROR) on the first command of a query string, we'll not be able to process a ROLLBACK appearing later in the same string --- but that behavior does not seem nearly as helpful as throwing an error. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])