mirror of https://github.com/apache/activemq.git
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:
parent
9a852b2a99
commit
e2778fbf7d
|
@ -19,6 +19,8 @@ package org.apache.activemq.store.jdbc;
|
|||
import java.io.IOException;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.ResultSetMetaData;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
@ -64,7 +66,13 @@ public class DefaultDatabaseLocker implements DatabaseLocker {
|
|||
connection.setAutoCommit(false);
|
||||
String sql = statements.getLockCreateStatement();
|
||||
statement = connection.prepareStatement(sql);
|
||||
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;
|
||||
} catch (Exception e) {
|
||||
if (stopping) {
|
||||
|
|
|
@ -291,7 +291,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
|
|||
throw new SQLException("Failed to remove message");
|
||||
}
|
||||
} finally {
|
||||
if (!this.batchStatments) {
|
||||
if (!this.batchStatments && s != null) {
|
||||
s.close();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue