| From: | Kris Jurka <books(at)ejurka(dot)com> |
|---|---|
| To: | Oliver Jowett <oliver(at)opencloud(dot)com> |
| Cc: | "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org> |
| Subject: | Re: revisiting transaction isolation |
| Date: | 2004-07-17 07:37:23 |
| Message-ID: | Pine.BSO.4.56.0407170233550.32024@leary.csoft.net |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-jdbc |
On Sat, 17 Jul 2004, Oliver Jowett wrote:
> Currently, this type of code will fail:
>
> > conn.setAutoCommit(false);
> > if (conn.getTransactionIsolation() != Connection.TRANSACTION_SERIALIZABLE)
> > conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
>
> The problem is that getTransactionIsolation() issues a query and thus
> starts a new transaction, and then setTransactionIsolation() complains
> you can't change isolation level mid-transaction.
>
> I'm not sure this is reasonable behaviour. One option is to make
> getTransactionIsolation (and what other methods too?) not cause a BEGIN
> to occur if there is no transaction in progress and autocommit is off.
I see no reason for getTransactionIsolation or any driver call to start a
transaction, these are only SELECTs and won't be rolled back anyway.
> On a related topic I just took a look at the JDBC3 spec and it says:
>
> > The return value of the method getTransactionIsolation should reflect
> > the change in isolation level when it actually occurs. It is recommended
> > that drivers implement the setTransactionIsolation method to change the
> > isolation level starting with the next transaction. Committing the
> > current transaction to make the effect immediate is also a valid
> > implementation.
This seems confusing and error prone. I would expect a command I issue to
take effect immediately or throw an Exception, not do nothing now, but
alter later behavior.
Kris Jurka
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Kris Jurka | 2004-07-17 07:44:24 | Re: patch: fix hopelessly broken decodeUTF8() method |
| Previous Message | Oliver Jowett | 2004-07-17 04:09:54 | revisiting transaction isolation |