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.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);
|
||||||
|
if (statement.getMetaData() != null) {
|
||||||
|
ResultSet rs = statement.executeQuery();
|
||||||
|
// if not already locked the statement below blocks until lock acquired
|
||||||
|
rs.next();
|
||||||
|
} else {
|
||||||
statement.execute();
|
statement.execute();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (stopping) {
|
if (stopping) {
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue