JAMES-2498 JDBCMailRepository should not materialize entities for counting them.
Executing SQL query for size. Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a2cdc551 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a2cdc551 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a2cdc551 Branch: refs/heads/master Commit: a2cdc55108321fa70fbeea4a2e712af40d724dcb Parents: ff93cf5 Author: Edgar Asatryan <nst...@gmail.com> Authored: Tue Jul 24 19:06:55 2018 +0400 Committer: benwa <btell...@linagora.com> Committed: Mon Jul 30 13:54:04 2018 +0700 ---------------------------------------------------------------------- .../james/mailrepository/jdbc/JDBCMailRepository.java | 12 ++++++++++++ .../data/data-jdbc/src/test/resources/sqlResources.xml | 3 +++ 2 files changed, 15 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/a2cdc551/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java ---------------------------------------------------------------------- diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java index 31a728e..9875676 100644 --- a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java +++ b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java @@ -722,6 +722,18 @@ public class JDBCMailRepository extends AbstractMailRepository { } @Override + public long size() throws MessagingException { + try (Connection conn = datasource.getConnection(); + PreparedStatement count = conn.prepareStatement(sqlQueries.getSqlString("countMessagesSQL", true)); + ResultSet resultSet = count.executeQuery()) { + + return resultSet.next() ? resultSet.getLong(1) : 0; + } catch (Exception e) { + throw new MessagingException("Exception while fetching size: " + e.getMessage(), e); + } + } + + @Override public Iterator<MailKey> list() throws MessagingException { // System.err.println("listing messages"); Connection conn = null; http://git-wip-us.apache.org/repos/asf/james-project/blob/a2cdc551/server/data/data-jdbc/src/test/resources/sqlResources.xml ---------------------------------------------------------------------- diff --git a/server/data/data-jdbc/src/test/resources/sqlResources.xml b/server/data/data-jdbc/src/test/resources/sqlResources.xml index 4fe890c..b91f974 100644 --- a/server/data/data-jdbc/src/test/resources/sqlResources.xml +++ b/server/data/data-jdbc/src/test/resources/sqlResources.xml @@ -287,6 +287,9 @@ <!-- Statements used to list all messages stored in this repository. --> <sql name="listMessagesSQL">SELECT message_name, message_state, last_updated FROM ${table} WHERE repository_name = ? ORDER BY last_updated ASC</sql> + <!-- Statements used to count messages stored in this repository. --> + <sql name="countMessagesSQL">SELECT COUNT(*) FROM ${table}</sql> + <!-- Statements used to create the table associated with this class. --> <sql name="createTable" db="mysql"> CREATE TABLE ${table} ( --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org