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); }