diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/solr-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/solr-common-SqlMap.xml
index 7fdc124001..d07dbdffe5 100644
--- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/solr-common-SqlMap.xml
+++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/solr-common-SqlMap.xml
@@ -36,15 +36,10 @@
select
acs.id as id,
acs.commit_time_ms as commit_time_ms,
- (select
- count(acl.id)
- from
- alf_access_control_list acl
- where
- acl.acl_change_set = acs.id
- ) as acl_count
+ count(acl_id) as acl_count
from
alf_acl_change_set acs
+ join alf_access_control_list acl on (acl.acl_change_set = acs.id and exists (select 1 from alf_node admnode where admnode.acl_id = acl.id))
= #{fromCommitTimeInclusive}]]>
@@ -59,6 +54,7 @@
and
+ group by acs.commit_time_ms, acs.id
order by acs.commit_time_ms ASC, acs.id ASC
@@ -69,8 +65,9 @@
from
alf_access_control_list acl
+ exists (select 1 from alf_node admnode where admnode.acl_id = acl.id)
- = #{fromIdInclusive}]]>
+ and = #{fromIdInclusive}]]>
and acl.acl_change_set in
@@ -84,27 +81,14 @@
diff --git a/source/test-java/org/alfresco/repo/solr/SOLRTrackingComponentTest.java b/source/test-java/org/alfresco/repo/solr/SOLRTrackingComponentTest.java
index bd9598c73f..e59cd2466d 100644
--- a/source/test-java/org/alfresco/repo/solr/SOLRTrackingComponentTest.java
+++ b/source/test-java/org/alfresco/repo/solr/SOLRTrackingComponentTest.java
@@ -21,6 +21,7 @@ package org.alfresco.repo.solr;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -138,25 +139,20 @@ public class SOLRTrackingComponentTest extends TestCase
{
List cs = solrTrackingComponent.getAclChangeSets(null, null, null, null, 50);
assertTrue("Expected results to be limited in number", cs.size() <= 50);
- List aclChangeSetIds = new ArrayList(50);
int totalAcls = 0;
for (AclChangeSet aclChangeSet : cs)
{
- aclChangeSetIds.add(aclChangeSet.getId());
totalAcls += aclChangeSet.getAclCount();
}
int totalAclsCheck = 0;
- Long fromAclId = null;
- while (true)
+
+ for (AclChangeSet aclChangeSet : cs)
{
- List acls = solrTrackingComponent.getAcls(aclChangeSetIds, fromAclId, 2);
- if (acls.size() == 0)
- {
- break;
- }
+ List acls = solrTrackingComponent.getAcls(Arrays.asList(new Long[]{aclChangeSet.getId()}), null, 200);
+ assertEquals(aclChangeSet.getAclCount(), acls.size());
totalAclsCheck += acls.size();
- fromAclId = acls.get(acls.size() - 1).getId() + 1;
}
+
// Double check number of ACLs
assertEquals("ACL count should have matched", totalAcls, totalAclsCheck);
}