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]