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

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

commit aa0e6e7e0305536ebbfef1f824c95a1d10eb7b05
Author: Benoit Tellier <[email protected]>
AuthorDate: Fri Jul 24 14:48:27 2020 +0700

    JAMES-3319 FetchType is no longer relevant to fetch messageDao rows
    
    Before it was as the blobs was hold in this metadata. Now we rely on 
blobStore, and
    blobIds have zero oberhead on the overall operation: we can afford always 
fetching the
    blobIds, which enable preparing less statements, and simplifying the code.
---
 .../cassandra/mail/CassandraMessageDAO.java        | 35 ++++------------------
 .../cassandra/table/CassandraMessageV2Table.java   |  7 -----
 .../cassandra/mail/CassandraMessageMapperTest.java |  3 +-
 .../tools/indexer/CassandraReIndexerImplTest.java  |  2 +-
 4 files changed, 7 insertions(+), 40 deletions(-)

diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
index 01ca6b9..a61d01f 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
@@ -27,16 +27,12 @@ import static 
org.apache.james.blob.api.BlobStore.StoragePolicy.LOW_COST;
 import static org.apache.james.blob.api.BlobStore.StoragePolicy.SIZE_BASED;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageIds.MESSAGE_ID;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.ATTACHMENTS;
-import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.BODY;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.BODY_CONTENT;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.BODY_OCTECTS;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.BODY_START_OCTET;
-import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.FIELDS;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.FULL_CONTENT_OCTETS;
-import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.HEADERS;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.HEADER_CONTENT;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.INTERNAL_DATE;
-import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.METADATA;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.PROPERTIES;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.TABLE_NAME;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.TEXTUAL_LINE_COUNT;
@@ -99,10 +95,7 @@ public class CassandraMessageDAO {
     private final CassandraMessageId.Factory messageIdFactory;
     private final PreparedStatement insert;
     private final PreparedStatement delete;
-    private final PreparedStatement selectMetadata;
-    private final PreparedStatement selectHeaders;
-    private final PreparedStatement selectFields;
-    private final PreparedStatement selectBody;
+    private final PreparedStatement select;
     private final PreparedStatement selectAllMessagesWithAttachment;
     private final Cid.CidParser cidParser;
     private final ConsistencyLevel consistencyLevel;
@@ -122,10 +115,7 @@ public class CassandraMessageDAO {
 
         this.insert = prepareInsert(session);
         this.delete = prepareDelete(session);
-        this.selectMetadata = prepareSelect(session, METADATA);
-        this.selectHeaders = prepareSelect(session, HEADERS);
-        this.selectFields = prepareSelect(session, FIELDS);
-        this.selectBody = prepareSelect(session, BODY);
+        this.select = prepareSelect(session);
         this.selectAllMessagesWithAttachment = 
prepareSelectAllMessagesWithAttachment(session);
         this.cidParser = Cid.parser().relaxed();
     }
@@ -138,8 +128,8 @@ public class CassandraMessageDAO {
             consistenciesConfiguration, messageIdFactory);
     }
 
-    private PreparedStatement prepareSelect(Session session, String[] fields) {
-        return session.prepare(select(fields)
+    private PreparedStatement prepareSelect(Session session) {
+        return session.prepare(select()
             .from(TABLE_NAME)
             .where(eq(MESSAGE_ID, bindMarker(MESSAGE_ID))));
     }
@@ -242,7 +232,7 @@ public class CassandraMessageDAO {
     }
 
     private Mono<ResultSet> retrieveRow(CassandraMessageId messageId, 
FetchType fetchType) {
-        return cassandraAsyncExecutor.execute(retrieveSelect(fetchType)
+        return cassandraAsyncExecutor.execute(select
             .bind()
             .setUUID(MESSAGE_ID, messageId.get())
             .setConsistencyLevel(consistencyLevel));
@@ -298,21 +288,6 @@ public class CassandraMessageDAO {
             .build();
     }
 
-    private PreparedStatement retrieveSelect(FetchType fetchType) {
-        switch (fetchType) {
-            case Body:
-                return selectBody;
-            case Full:
-                return selectFields;
-            case Headers:
-                return selectHeaders;
-            case Metadata:
-                return selectMetadata;
-            default:
-                throw new RuntimeException("Unknown FetchType " + fetchType);
-        }
-    }
-
     public Mono<Void> delete(CassandraMessageId messageId) {
         return cassandraAsyncExecutor.executeVoid(delete.bind()
             .setUUID(MESSAGE_ID, messageId.get()));
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMessageV2Table.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMessageV2Table.java
index 2d41173..8ceb86a 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMessageV2Table.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMessageV2Table.java
@@ -19,8 +19,6 @@
 
 package org.apache.james.mailbox.cassandra.table;
 
-import static 
org.apache.james.mailbox.cassandra.table.CassandraMessageIds.MESSAGE_ID;
-
 public interface CassandraMessageV2Table {
 
     String TABLE_NAME = "messageV2";
@@ -34,11 +32,6 @@ public interface CassandraMessageV2Table {
     String PROPERTIES = "properties";
     String ATTACHMENTS = "attachments";
 
-    String[] FIELDS = { MESSAGE_ID, INTERNAL_DATE, BODY_START_OCTET, 
FULL_CONTENT_OCTETS, BODY_OCTECTS, BODY_CONTENT, HEADER_CONTENT, 
TEXTUAL_LINE_COUNT, PROPERTIES, ATTACHMENTS };
-    String[] METADATA = { MESSAGE_ID, INTERNAL_DATE, BODY_START_OCTET, 
FULL_CONTENT_OCTETS, BODY_OCTECTS, TEXTUAL_LINE_COUNT, PROPERTIES, ATTACHMENTS 
};
-    String[] HEADERS = { MESSAGE_ID, INTERNAL_DATE, BODY_START_OCTET, 
FULL_CONTENT_OCTETS, BODY_OCTECTS, HEADER_CONTENT, TEXTUAL_LINE_COUNT, 
PROPERTIES, ATTACHMENTS };
-    String[] BODY = { MESSAGE_ID, INTERNAL_DATE, BODY_START_OCTET, 
FULL_CONTENT_OCTETS, BODY_OCTECTS, BODY_CONTENT, TEXTUAL_LINE_COUNT, 
PROPERTIES, ATTACHMENTS };
-
     interface Properties {
         String NAMESPACE = "namespace";
         String NAME = "name";
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
index 75e9146..aab3f51 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
@@ -195,8 +195,7 @@ class CassandraMessageMapperTest extends MessageMapperTest {
 
 
             
assertThat(statementRecorder.listExecutedStatements(Selector.preparedStatement(
-                "SELECT 
messageId,internalDate,bodyStartOctet,fullContentOctets,bodyOctets,bodyContent,headerContent,textualLineCount,properties,attachments
 " +
-                    "FROM messageV2 WHERE messageId=:messageId;")))
+                "SELECT * FROM messageV2 WHERE messageId=:messageId;")))
                 .hasSize(limit);
         }
 
diff --git 
a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
 
b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
index 3d83ee1..cbf263e 100644
--- 
a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
+++ 
b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
@@ -318,7 +318,7 @@ public class CassandraReIndexerImplTest {
             cassandra.getConf()
                 .registerScenario(fail()
                     .forever()
-                    .whenQueryStartsWith("SELECT 
messageId,internalDate,bodyStartOctet,fullContentOctets,bodyOctets,bodyContent,headerContent,textualLineCount,properties,attachments
 FROM messageV2 WHERE messageId=:messageId;"));
+                    .whenQueryStartsWith("SELECT * FROM messageV2 WHERE 
messageId=:messageId;"));
 
             Task task = reIndexer.reIndex(ReIndexer.RunningOptions.DEFAULT);
             task.run();


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

Reply via email to