You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2017/02/10 15:07:36 UTC
[1/2] activemq-artemis git commit: ARTEMIS-957 Use setBytes JDBC API
vs Concat BLOB
Repository: activemq-artemis
Updated Branches:
refs/heads/master 152b929b5 -> 2cf594adf
ARTEMIS-957 Use setBytes JDBC API vs Concat BLOB
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/b8595d61
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/b8595d61
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/b8595d61
Branch: refs/heads/master
Commit: b8595d610df77271029669a3d8b7ed1b6ef9478f
Parents: 152b929
Author: Martyn Taylor <mt...@redhat.com>
Authored: Fri Feb 10 14:27:26 2017 +0000
Committer: Clebert Suconic <cl...@apache.org>
Committed: Fri Feb 10 09:55:57 2017 -0500
----------------------------------------------------------------------
.../store/drivers/derby/DerbySQLProvider.java | 9 --------
.../file/JDBCSequentialFileFactoryDriver.java | 23 +++++++++++++-------
.../jdbc/store/sql/GenericSQLProvider.java | 2 +-
3 files changed, 16 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b8595d61/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/derby/DerbySQLProvider.java
----------------------------------------------------------------------
diff --git a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/derby/DerbySQLProvider.java b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/derby/DerbySQLProvider.java
index ab61cc2..7e0ce58 100644
--- a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/derby/DerbySQLProvider.java
+++ b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/derby/DerbySQLProvider.java
@@ -26,16 +26,12 @@ public class DerbySQLProvider extends GenericSQLProvider {
private final String createFileTableSQL;
- private final String appendToFileSQL;
-
private DerbySQLProvider(String tableName) {
super(tableName.toUpperCase());
createFileTableSQL = "CREATE TABLE " + tableName +
"(ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)," +
"FILENAME VARCHAR(255), EXTENSION VARCHAR(10), DATA BLOB, PRIMARY KEY(ID))";
-
- appendToFileSQL = "UPDATE " + tableName + " SET DATA = DATA || ? WHERE ID=?";
}
@Override
@@ -49,11 +45,6 @@ public class DerbySQLProvider extends GenericSQLProvider {
}
@Override
- public String getAppendToLargeObjectSQL() {
- return appendToFileSQL;
- }
-
- @Override
public boolean closeConnectionOnShutdown() {
return false;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b8595d61/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFileFactoryDriver.java
----------------------------------------------------------------------
diff --git a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFileFactoryDriver.java b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFileFactoryDriver.java
index eddf37c..a32e4a7 100644
--- a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFileFactoryDriver.java
+++ b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFileFactoryDriver.java
@@ -74,7 +74,7 @@ public class JDBCSequentialFileFactoryDriver extends AbstractJDBCDriver {
this.copyFileRecord = connection.prepareStatement(sqlProvider.getCopyFileRecordByIdSQL());
this.renameFile = connection.prepareStatement(sqlProvider.getUpdateFileNameByIdSQL());
this.readLargeObject = connection.prepareStatement(sqlProvider.getReadLargeObjectSQL());
- this.appendToLargeObject = connection.prepareStatement(sqlProvider.getAppendToLargeObjectSQL());
+ this.appendToLargeObject = connection.prepareStatement(sqlProvider.getAppendToLargeObjectSQL(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
this.selectFileNamesByExtension = connection.prepareStatement(sqlProvider.getSelectFileNamesByExtensionSQL());
}
@@ -154,7 +154,8 @@ public class JDBCSequentialFileFactoryDriver extends AbstractJDBCDriver {
try (ResultSet rs = readLargeObject.executeQuery()) {
if (rs.next()) {
- file.setWritePosition((int) rs.getBlob(1).length());
+ Blob blob = rs.getBlob(1);
+ file.setWritePosition((int) blob.length());
}
connection.commit();
} catch (SQLException e) {
@@ -242,13 +243,19 @@ public class JDBCSequentialFileFactoryDriver extends AbstractJDBCDriver {
*/
public int writeToFile(JDBCSequentialFile file, byte[] data) throws SQLException {
synchronized (connection) {
- try {
- connection.setAutoCommit(false);
- appendToLargeObject.setBytes(1, data);
- appendToLargeObject.setLong(2, file.getId());
- appendToLargeObject.executeUpdate();
+ connection.setAutoCommit(false);
+ appendToLargeObject.setLong(1, file.getId());
+
+ int bytesWritten = 0;
+ try (ResultSet rs = appendToLargeObject.executeQuery()) {
+ if (rs.next()) {
+ Blob blob = rs.getBlob(1);
+ bytesWritten = blob.setBytes(blob.length() + 1, data);
+ rs.updateBlob(1, blob);
+ rs.updateRow();
+ }
connection.commit();
- return data.length;
+ return bytesWritten;
} catch (SQLException e) {
connection.rollback();
throw e;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b8595d61/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/GenericSQLProvider.java
----------------------------------------------------------------------
diff --git a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/GenericSQLProvider.java b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/GenericSQLProvider.java
index 0527c54..1d9b829 100644
--- a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/GenericSQLProvider.java
+++ b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/GenericSQLProvider.java
@@ -69,7 +69,7 @@ public class GenericSQLProvider implements SQLProvider {
selectIdByFileNameSQL = "SELECT ID, FILENAME, EXTENSION, DATA FROM " + tableName + " WHERE fileName=?";
- appendToFileSQL = "UPDATE " + tableName + " SET DATA = CONCAT(DATA, ?) WHERE ID=?";
+ appendToFileSQL = "SELECT DATA FROM " + tableName + " WHERE ID=? FOR UPDATE";
readLargeObjectSQL = "SELECT DATA FROM " + tableName + " WHERE ID=?";
[2/2] activemq-artemis git commit: This closes #1006
Posted by cl...@apache.org.
This closes #1006
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/2cf594ad
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/2cf594ad
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/2cf594ad
Branch: refs/heads/master
Commit: 2cf594adf7e3c1dd148535591f9c463a911472b5
Parents: 152b929 b8595d6
Author: Clebert Suconic <cl...@apache.org>
Authored: Fri Feb 10 09:55:58 2017 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Fri Feb 10 09:55:58 2017 -0500
----------------------------------------------------------------------
.../store/drivers/derby/DerbySQLProvider.java | 9 --------
.../file/JDBCSequentialFileFactoryDriver.java | 23 +++++++++++++-------
.../jdbc/store/sql/GenericSQLProvider.java | 2 +-
3 files changed, 16 insertions(+), 18 deletions(-)
----------------------------------------------------------------------