Statement.java patch (Postgresql 7.1.3)
От | Ed Yu |
---|---|
Тема | Statement.java patch (Postgresql 7.1.3) |
Дата | |
Msg-id | 001001c1998b$52f3d560$bf00a8c0@sc.rr.com обсуждение исходный текст |
Список | pgsql-jdbc |
The use of Connection.setAutoCommit(false) will not work with batch mode. The following is a patch to properly fix up the Statement.java (jdbc2): *** Statement.java.orig Fri Feb 16 11:45:00 2001 --- Statement.java Wed Jan 9 22:40:34 2002 *************** *** 377,389 **** int size=batch.size(); int[] result=new int[size]; int i=0; ! this.execute("begin"); // PTM: check this when autoCommit is false try { for(i=0;i<size;i++) result[i]=this.executeUpdate((String)batch.elementAt(i)); ! this.execute("commit"); // PTM: check this } catch(SQLException e) { ! this.execute("abort"); // PTM: check this throw new PSQLException("postgresql.stat.batch.error",new Integer(i),batch.elementAt(i)); } return result; --- 377,396 ---- int size=batch.size(); int[] result=new int[size]; int i=0; ! ! // Modified by Ed Yu <ekyu@asgnet.psc.sc.edu> ! // We want to use a transaction even if autoCommit is true which ! // is the default for JDBC. ! if (connection.getAutoCommit()) ! this.execute("begin"); try { for(i=0;i<size;i++) result[i]=this.executeUpdate((String)batch.elementAt(i)); ! // If autoCommit is true, then commits ! if (connection.getAutoCommit()) ! this.execute("commit"); } catch(SQLException e) { ! this.execute("abort"); // This is ok since transaction is always on throw new PSQLException("postgresql.stat.batch.error",new Integer(i),batch.elementAt(i)); } return result;
В списке pgsql-jdbc по дате отправления: