Re: WARNING on setAutoCommit - Mailing list pgsql-jdbc
From | Barry Lind |
---|---|
Subject | Re: WARNING on setAutoCommit |
Date | |
Msg-id | 3E77C569.5050203@xythos.com Whole thread Raw |
In response to | WARNING on setAutoCommit (Daichi Ueura <daichi@lifeflow.jp>) |
Responses |
Re: WARNING on setAutoCommit
|
List | pgsql-jdbc |
Daichi, What you are reporting is a bug in the server. The "select 1" should start a new transaction and doesn't and that has already been reported as a bug on the pgsql-hackers mail list. Your suggested work around of the server bug is a good suggestion. I will implement this workaround in the driver. thanks, --Barry Daichi Ueura wrote: > Hi, > > The following warning is shown on postgres log when you use > JDBC driver; Build 108, for PostgreSQL 7.3.x. > > This is the server condition I use: > ---------------------------------------- > PostgreSQL 7.3.2 > JDBC pg73jdbc3.jar(Build 108) > J2SE 1.4.1_01 > RedHatLinux 7.2 > ---------------------------------------- > > When "auto commit" is set true, and I run Connection.setAutoCommit(false) > command in JDBC program, the following warning is shown on the PostgreSQL log; > > WARNING: COMMIT: no transaction in progress > > Because of the warning, I looked at > org.postgresql.jdbc1.AbstractJdbc1Connection#setAutoCommit(), and this program > was written as follows; > > if (this.autoCommit == autoCommit) > return; > if (autoCommit) > { > if (haveMinimumServerVersion("7.3")) > { > //We do the select to ensure a transaction is in process > //before we do the commit to avoid warning messages > //from issuing a commit without a transaction in process > execSQL("select 1; commit; set autocommit = on;"); > } > else > { > execSQL("end"); > } > } > > At the command line; execSQL("select 1; commit; set autocommit = on;");, > the program must finish and not record "warning" in the log even though > the program processes either during or at the end of the transaction. > As a matter of fact, the warning appears when the program runs "commit;." > The program doesn't begin a new transaction even though "select 1;" > has been executed, > > I think if we change the command as follows, > > execSQL("select 1;"); > execSQL("commit; set autocommit = on;"); > > we can finish the transaction without the warning. > > ┛ > ┛ Daichi Ueura > ┛ > ┛ Hiroshima City Univ, Department of Intelligent Systems. > ┛ e-mail: (Private) daichi@lifeflow.jp > ┛ : (Office) daichi@neu.co.jp > ┛ : (Univ) g23010@cr.info.hiroshima-cu.ac.jp > ┛ > ┛ > > > ---------------------------(end of broadcast)--------------------------- > TIP 6: Have you searched our list archives? > > http://archives.postgresql.org >
pgsql-jdbc by date: