Statement.setQueryTimeout() with autoCommit=false

From: pavel(dot)arnost(at)loutka(dot)cz
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Statement.setQueryTimeout() with autoCommit=false
Date: 2012-12-06 17:04:41
Message-ID: 5097e057-c9b9-42f0-bed0-219eab05bb7d@googlegroups.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Hi,

does setQueryTimeout work with autoCommit=false? When autoCommit is true, this code timeouts after 5 seconds (as expected):

--
Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://172.30.100.6/test";
Properties props = new Properties();
props.setProperty("user", "postgres");
props.setProperty("password", "");

Connection conn = DriverManager.getConnection(url, props);
PreparedStatement st = conn.prepareStatement("INSERT INTO test VALUES('xxx')");
st.setQueryTimeout(5);
st.execute();
--

But if I set autoCommit to false, this code timeouts after 30 seconds on read timeout:

--
Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://172.30.100.6/test";
Properties props = new Properties();
props.setProperty("user", "postgres");
props.setProperty("password", "");

Connection conn = DriverManager.getConnection(url, props);
conn.setAutoCommit(false);
PreparedStatement st = conn.prepareStatement("INSERT INTO test VALUES('xxx')");
st.setQueryTimeout(5);
st.execute();
conn.commit();
--

I'm confused what's setQueryTimeout() method for, why it doesn't work with manual transactions?

Thanks,
Regards
Pavel

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2012-12-06 17:54:48 Re: Statement.setQueryTimeout() with autoCommit=false
Previous Message dmp 2012-11-26 19:21:20 Re: Problems with BIT datatype and preparedStatment