From commits-return-61848-archive-asf-public=cust-asf.ponee.io@activemq.apache.org Thu Sep 24 10:31:20 2020 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mailroute1-lw-us.apache.org (mailroute1-lw-us.apache.org [207.244.88.153]) by mx-eu-01.ponee.io (Postfix) with ESMTPS id 7F80118063D for ; Thu, 24 Sep 2020 12:31:20 +0200 (CEST) Received: from mail.apache.org (localhost [127.0.0.1]) by mailroute1-lw-us.apache.org (ASF Mail Server at mailroute1-lw-us.apache.org) with SMTP id ACE5F123A5C for ; Thu, 24 Sep 2020 10:31:19 +0000 (UTC) Received: (qmail 18313 invoked by uid 500); 24 Sep 2020 10:31:19 -0000 Mailing-List: contact commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list commits@activemq.apache.org Received: (qmail 18304 invoked by uid 99); 24 Sep 2020 10:31:19 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 24 Sep 2020 10:31:19 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id 06291811B2; Thu, 24 Sep 2020 10:31:18 +0000 (UTC) Date: Thu, 24 Sep 2020 10:31:18 +0000 To: "commits@activemq.apache.org" Subject: [activemq-artemis] branch master updated: ARTEMIS-2911 DB2 isn't replacing Blob data MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-ID: <160094347857.19626.2662408767274513170@gitbox.apache.org> From: nigrofranz@apache.org X-Git-Host: gitbox.apache.org X-Git-Repo: activemq-artemis X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 622acf1da1b6da3cc170cd4f5d8933f2fdce1467 X-Git-Newrev: fddb2102776b69fbbf8222302cb94279f86bd421 X-Git-Rev: fddb2102776b69fbbf8222302cb94279f86bd421 X-Git-NotificationType: ref_changed_plus_diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated This is an automated email from the ASF dual-hosted git repository. nigrofranz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git The following commit(s) were added to refs/heads/master by this push: new fddb210 ARTEMIS-2911 DB2 isn't replacing Blob data new f5dfe68 This closes #3271 fddb210 is described below commit fddb2102776b69fbbf8222302cb94279f86bd421 Author: franz1981 AuthorDate: Wed Sep 23 18:29:35 2020 +0200 ARTEMIS-2911 DB2 isn't replacing Blob data --- .../artemis/jdbc/store/file/Db2SequentialFileDriver.java | 13 +++++++++---- .../artemis/jdbc/store/sql/PropertySQLProvider.java | 5 +++++ .../apache/activemq/artemis/jdbc/store/sql/SQLProvider.java | 2 ++ .../src/main/resources/journal-sql.properties | 1 + 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/Db2SequentialFileDriver.java b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/Db2SequentialFileDriver.java index 1043002..c0066ab 100644 --- a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/Db2SequentialFileDriver.java +++ b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/Db2SequentialFileDriver.java @@ -19,6 +19,7 @@ package org.apache.activemq.artemis.jdbc.store.file; import javax.sql.DataSource; import java.sql.Connection; +import java.sql.PreparedStatement; import java.sql.SQLException; import org.apache.activemq.artemis.jdbc.store.sql.SQLProvider; @@ -26,6 +27,8 @@ import org.apache.activemq.artemis.jdbc.store.sql.SQLProvider; @SuppressWarnings("SynchronizeOnNonFinalField") public final class Db2SequentialFileDriver extends JDBCSequentialFileFactoryDriver { + private PreparedStatement replaceLargeObject; + public Db2SequentialFileDriver() { super(); } @@ -46,22 +49,24 @@ public final class Db2SequentialFileDriver extends JDBCSequentialFileFactoryDriv this.copyFileRecord = connection.prepareStatement(sqlProvider.getCopyFileRecordByIdSQL()); this.renameFile = connection.prepareStatement(sqlProvider.getUpdateFileNameByIdSQL()); this.readLargeObject = connection.prepareStatement(sqlProvider.getReadLargeObjectSQL()); + this.replaceLargeObject = connection.prepareStatement(sqlProvider.getReplaceLargeObjectSQL()); this.appendToLargeObject = connection.prepareStatement(sqlProvider.getAppendToLargeObjectSQL()); this.selectFileNamesByExtension = connection.prepareStatement(sqlProvider.getSelectFileNamesByExtensionSQL()); } @Override - public int writeToFile(JDBCSequentialFile file, byte[] data) throws SQLException { + public int writeToFile(JDBCSequentialFile file, byte[] data, boolean append) throws SQLException { if (data == null || data.length == 0) { return 0; } + final PreparedStatement largeObjectStatement = append ? appendToLargeObject : replaceLargeObject; synchronized (connection) { try { connection.setAutoCommit(false); int bytesWritten; - appendToLargeObject.setBytes(1, data); - appendToLargeObject.setLong(2, file.getId()); - final int updatesFiles = appendToLargeObject.executeUpdate(); + largeObjectStatement.setBytes(1, data); + largeObjectStatement.setLong(2, file.getId()); + final int updatesFiles = largeObjectStatement.executeUpdate(); assert updatesFiles <= 1; connection.commit(); if (updatesFiles == 0) { diff --git a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/PropertySQLProvider.java b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/PropertySQLProvider.java index 118725a..7d46184 100644 --- a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/PropertySQLProvider.java +++ b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/PropertySQLProvider.java @@ -137,6 +137,11 @@ public class PropertySQLProvider implements SQLProvider { } @Override + public String getReplaceLargeObjectSQL() { + return format(sql("replace-file"), tableName); + } + + @Override public String getAppendToLargeObjectSQL() { return format(sql("append-to-file"), tableName); } diff --git a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/SQLProvider.java b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/SQLProvider.java index 66af24b..5f2f26f 100644 --- a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/SQLProvider.java +++ b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/sql/SQLProvider.java @@ -44,6 +44,8 @@ public interface SQLProvider { String getSelectFileByFileName(); + String getReplaceLargeObjectSQL(); + String getAppendToLargeObjectSQL(); String getReadLargeObjectSQL(); diff --git a/artemis-jdbc-store/src/main/resources/journal-sql.properties b/artemis-jdbc-store/src/main/resources/journal-sql.properties index 831d4bd..4312379 100644 --- a/artemis-jdbc-store/src/main/resources/journal-sql.properties +++ b/artemis-jdbc-store/src/main/resources/journal-sql.properties @@ -91,6 +91,7 @@ table-names-case.oracle=upper create-journal-table.db2=CREATE TABLE %s(id BIGINT,recordType SMALLINT,compactCount SMALLINT,txId BIGINT,userRecordType SMALLINT,variableSize INTEGER,record BLOB(2G),txDataSize INTEGER,txData BLOB(2G),txCheckNoRecords INTEGER,seq BIGINT NOT NULL, PRIMARY KEY(seq)) max-blob-size.db2=2147483647 create-file-table.db2=CREATE TABLE %s (ID BIGINT GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1), FILENAME VARCHAR(255), EXTENSION VARCHAR(10), DATA BLOB(2G), PRIMARY KEY(ID)) +replace-file.db2=UPDATE %s SET DATA=? WHERE ID=? append-to-file.db2=UPDATE %s SET DATA = (DATA || ?) WHERE ID=? table-names-case.db2=upper