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(-)
----------------------------------------------------------------------