I have some code that's doing connection pooling for some servlets. I
turn autoCommit off and let each caller determine when to commit.
Hoever, commit() does not seem to be releasing read locks, causing
my periodic VACUUM task to block.
In the following code, after commit() is called, ps shoes the backend
state as "idle in transaction". If I turn autocommit on, the state is
"idle" Why the difference?
import java.sql.*;
public class ctest {
public static void main(String argv[]) {
try {
String driverName = "org.postgresql.Driver";
Class.forName(driverName).newInstance();
Connection con = DriverManager.getConnection(
"jdbc:postgresql://127.0.0.1/jackson","db","zzzz");
con.setAutoCommit(false);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM s_image");
rs.next();
int count = rs.getInt(1);
rs.close();
con.commit();
System.out.println(count);
Thread.sleep(30000);
} catch (Exception e) { e.printStackTrace(); }
}
}