This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git


The following commit(s) were added to refs/heads/master by this push:
     new 396786f  JAMES-2897 Delete statements needs ifExist when LWT is used 
in inserts
396786f is described below

commit 396786fe8a55e00fabd99de84f08ff750c07d1ca
Author: Benoit Tellier <[email protected]>
AuthorDate: Fri Feb 21 17:33:13 2020 +0700

    JAMES-2897 Delete statements needs ifExist when LWT is used in inserts
    
    This is an example developped in 
https://docs.datastax.com/en/ddac/doc/datastax_enterprise/dbInternals/dbIntLtwtTransactions.html
    
    For example, the following series of operations can fail:
    
    ```
    DELETE ...
    INSERT .... IF NOT EXISTS
    SELECT ....
    ```
    
    The following series of operations will work:
    
    ```
    DELETE ... IF EXISTS
    INSERT .... IF NOT EXISTS
    SELECT .....
    ```
---
 .../james/mailbox/cassandra/mail/CassandraMailboxPathDAOImpl.java      | 3 ++-
 .../apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAO.java | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImpl.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImpl.java
index 34f49ae..d9ba8a4 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImpl.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImpl.java
@@ -90,7 +90,8 @@ public class CassandraMailboxPathDAOImpl implements 
CassandraMailboxPathDAO {
         return session.prepare(QueryBuilder.delete()
             .from(TABLE_NAME)
             .where(eq(NAMESPACE_AND_USER, bindMarker(NAMESPACE_AND_USER)))
-            .and(eq(MAILBOX_NAME, bindMarker(MAILBOX_NAME))));
+            .and(eq(MAILBOX_NAME, bindMarker(MAILBOX_NAME)))
+            .ifExists());
     }
 
     private PreparedStatement prepareInsert(Session session) {
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAO.java
index f736ef0..38a0448 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAO.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAO.java
@@ -75,7 +75,8 @@ public class CassandraMailboxPathV2DAO implements 
CassandraMailboxPathDAO {
             .from(TABLE_NAME)
             .where(eq(NAMESPACE, bindMarker(NAMESPACE)))
             .and(eq(USER, bindMarker(USER)))
-            .and(eq(MAILBOX_NAME, bindMarker(MAILBOX_NAME))));
+            .and(eq(MAILBOX_NAME, bindMarker(MAILBOX_NAME)))
+            .ifExists());
     }
 
     private PreparedStatement prepareInsert(Session session) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to