Re: "Idle in Transaction" revisited.
От | Jeffrey Tenny |
---|---|
Тема | Re: "Idle in Transaction" revisited. |
Дата | |
Msg-id | 414CADC3.5050907@comcast.net обсуждение исходный текст |
Ответ на | "Idle in Transaction" revisited. ("John R Pierce" <pierce@hogranch.com>) |
Ответы |
Re: "Idle in Transaction" revisited.
|
Список | pgsql-jdbc |
> John R Pierce <pierce@hogranch.com>, pgsql-jdbc@postgresql.org > > Gaetano Mendola wrote: > >> John R Pierce wrote: >> >>> I'm curious what common practice is for threads that do nothing >>> but SELECTS... do folks just enable auto_commit, thereby >>> preventing pgJDBC from doing BEGIN; ? Do they lace their code >>> with COMMIT() calls? >> >> >> >> We were bitten by this problem too, and my solution was to suggest >> our developer to do and explicit: "ABORT" after the connection, and >> do explicit "BEGIN" "END" instead of rely on the jdbc interface. >> > > > This is a pretty bad idea as it can confuse the driver's idea of the > current transaction state. For example, cursor-based resultsets won't > ever be used if you do your own transaction demarcation in this way. > > Better to use the standard JDBC autocommit API and a driver that has > the premature-BEGIN problem fixed. Second that, it's a very bad idea. I once naively had my own transaction management using begin/end via jdbc for multi-statement transactions against PostgreSQL. Then the driver was updated at some point and I was getting all kinds of screwed up commit logic and inconsistent data models. Stick with and support the proper JDBC interfaces. Anything else is platform dependeng, among other bad things.
В списке pgsql-jdbc по дате отправления: