apply modified suggstion from https://issues.apache.org/activemq/browse/AMQ-1191 - executeQuery conditional on statement metadata which works when statement does not return a result set like with derby which is used in the unit tests

git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@787990 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Gary Tully 2009-06-24 12:04:50 +00:00
parent 9a852b2a99
commit e2778fbf7d
2 changed files with 10 additions and 2 deletions

View File

@ -19,6 +19,8 @@ package org.apache.activemq.store.jdbc;
import java.io.IOException; import java.io.IOException;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException; import java.sql.SQLException;
import javax.sql.DataSource; import javax.sql.DataSource;
@ -64,7 +66,13 @@ public class DefaultDatabaseLocker implements DatabaseLocker {
connection.setAutoCommit(false); connection.setAutoCommit(false);
String sql = statements.getLockCreateStatement(); String sql = statements.getLockCreateStatement();
statement = connection.prepareStatement(sql); statement = connection.prepareStatement(sql);
statement.execute(); if (statement.getMetaData() != null) {
ResultSet rs = statement.executeQuery();
// if not already locked the statement below blocks until lock acquired
rs.next();
} else {
statement.execute();
}
break; break;
} catch (Exception e) { } catch (Exception e) {
if (stopping) { if (stopping) {

View File

@ -291,7 +291,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
throw new SQLException("Failed to remove message"); throw new SQLException("Failed to remove message");
} }
} finally { } finally {
if (!this.batchStatments) { if (!this.batchStatments && s != null) {
s.close(); s.close();
} }
} }