diff --git a/config/alfresco/cache-context.xml b/config/alfresco/cache-context.xml index 37280c7332..5c0565f77e 100644 --- a/config/alfresco/cache-context.xml +++ b/config/alfresco/cache-context.xml @@ -40,7 +40,7 @@ - defaultCache + org.alfresco.cache.qnameEntityCache @@ -76,7 +76,7 @@ - defaultCache + org.alfresco.cache.localeIdCache diff --git a/config/alfresco/extension/mt/mt-contentstore-context.xml.sample b/config/alfresco/extension/mt/mt-contentstore-context.xml.sample index dec5bd5289..c413b93cfa 100644 --- a/config/alfresco/extension/mt/mt-contentstore-context.xml.sample +++ b/config/alfresco/extension/mt/mt-contentstore-context.xml.sample @@ -38,32 +38,12 @@ - - - - - - - - - - - - - - - 14 - + - - - - - diff --git a/source/java/org/alfresco/cmis/search/QueryTest.java b/source/java/org/alfresco/cmis/search/QueryTest.java index 6c4bd273ab..884760ef69 100644 --- a/source/java/org/alfresco/cmis/search/QueryTest.java +++ b/source/java/org/alfresco/cmis/search/QueryTest.java @@ -121,30 +121,30 @@ public class QueryTestX extends BaseCMISTest public void test_ALLOWED_CHILD_OBJECT_TYPES() { testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds = 'test'", 0, false, "AllowedChildObjectTypeIds", new String(), false); - testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds <> 'test'", 34, false, "AllowedChildObjectTypeIds", new String(), false); + testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds <> 'test'", 33, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds < 'test'", 0, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds <= 'test'", 0, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds > 'test'", 0, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds >= 'test'", 0, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds IN ('test')", 0, false, "AllowedChildObjectTypeIds", new String(), false); - testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds NOT IN ('test')", 34, false, "AllowedChildObjectTypeIds", new String(), false); + testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds NOT IN ('test')", 33, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds LIKE 'test'", 0, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds NOT LIKE 'test'", 0, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds IS NOT NULL", 0, false, "AllowedChildObjectTypeIds", new String(), false); - testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds IS NULL", 34, false, "AllowedChildObjectTypeIds", new String(), false); + testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE AllowedChildObjectTypeIds IS NULL", 33, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE 'test' = ANY AllowedChildObjectTypeIds", 0, false, "AllowedChildObjectTypeIds", new String(), false); - testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE 'test' <> ANY AllowedChildObjectTypeIds", 34, false, "AllowedChildObjectTypeIds", new String(), false); + testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE 'test' <> ANY AllowedChildObjectTypeIds", 33, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE 'test' < ANY AllowedChildObjectTypeIds", 0, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE 'test' <= ANY AllowedChildObjectTypeIds", 0, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE 'test' > ANY AllowedChildObjectTypeIds", 0, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE 'test' >= ANY AllowedChildObjectTypeIds", 0, false, "AllowedChildObjectTypeIds", new String(), false); testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE ANY AllowedChildObjectTypeIds IN ('test')", 0, false, "AllowedChildObjectTypeIds", new String(), false); - testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE ANY AllowedChildObjectTypeIds NOT IN ('test')", 34, false, "AllowedChildObjectTypeIds", new String(), false); + testQuery("SELECT AllowedChildObjectTypeIds FROM Folder WHERE ANY AllowedChildObjectTypeIds NOT IN ('test')", 33, false, "AllowedChildObjectTypeIds", new String(), false); } public void test_PARENT() @@ -152,30 +152,30 @@ public class QueryTestX extends BaseCMISTest NodeRef rootNode = cmisService.getDefaultRootNodeRef(); testQuery("SELECT ParentId FROM Folder WHERE ParentId = '" + rootNode.toString() + "'", 4, false, "ParentId", new String(), false); - testQuery("SELECT ParentId FROM Folder WHERE ParentId <> '" + rootNode.toString() + "'", 30, false, "ParentId", new String(), false); + testQuery("SELECT ParentId FROM Folder WHERE ParentId <> '" + rootNode.toString() + "'", 29, false, "ParentId", new String(), false); testQuery("SELECT ParentId FROM Folder WHERE ParentId < '" + rootNode.toString() + "'", 0, false, "ParentId", new String(), true); testQuery("SELECT ParentId FROM Folder WHERE ParentId <= '" + rootNode.toString() + "'", 0, false, "ParentId", new String(), true); testQuery("SELECT ParentId FROM Folder WHERE ParentId > '" + rootNode.toString() + "'", 0, false, "ParentId", new String(), true); testQuery("SELECT ParentId FROM Folder WHERE ParentId >= '" + rootNode.toString() + "'", 0, false, "ParentId", new String(), true); testQuery("SELECT ParentId FROM Folder WHERE ParentId IN ('" + rootNode.toString() + "')", 4, false, "ParentId", new String(), false); - testQuery("SELECT ParentId FROM Folder WHERE ParentId NOT IN ('" + rootNode.toString() + "')", 30, false, "ParentId", new String(), false); + testQuery("SELECT ParentId FROM Folder WHERE ParentId NOT IN ('" + rootNode.toString() + "')", 29, false, "ParentId", new String(), false); testQuery("SELECT ParentId FROM Folder WHERE ParentId LIKE '" + rootNode.toString() + "'", 4, false, "ParentId", new String(), false); - testQuery("SELECT ParentId FROM Folder WHERE ParentId NOT LIKE '" + rootNode.toString() + "'", 30, false, "ParentId", new String(), false); + testQuery("SELECT ParentId FROM Folder WHERE ParentId NOT LIKE '" + rootNode.toString() + "'", 29, false, "ParentId", new String(), false); - testQuery("SELECT ParentId FROM Folder WHERE ParentId IS NOT NULL", 34, false, "ParentId", new String(), false); + testQuery("SELECT ParentId FROM Folder WHERE ParentId IS NOT NULL", 33, false, "ParentId", new String(), false); testQuery("SELECT ParentId FROM Folder WHERE ParentId IS NULL", 0, false, "ParentId", new String(), false); testQuery("SELECT ParentId FROM Folder WHERE '" + rootNode.toString() + "' = ANY ParentId", 4, false, "ParentId", new String(), false); - testQuery("SELECT ParentId FROM Folder WHERE '" + rootNode.toString() + "' <> ANY ParentId", 30, false, "ParentId", new String(), false); + testQuery("SELECT ParentId FROM Folder WHERE '" + rootNode.toString() + "' <> ANY ParentId", 29, false, "ParentId", new String(), false); testQuery("SELECT ParentId FROM Folder WHERE '" + rootNode.toString() + "' < ANY ParentId", 0, false, "ParentId", new String(), true); testQuery("SELECT ParentId FROM Folder WHERE '" + rootNode.toString() + "' <= ANY ParentId", 0, false, "ParentId", new String(), true); testQuery("SELECT ParentId FROM Folder WHERE '" + rootNode.toString() + "' > ANY ParentId", 0, false, "ParentId", new String(), true); testQuery("SELECT ParentId FROM Folder WHERE '" + rootNode.toString() + "' >= ANY ParentId", 0, false, "ParentId", new String(), true); testQuery("SELECT ParentId FROM Folder WHERE ANY ParentId IN ('" + rootNode.toString() + "')", 4, false, "ParentId", new String(), false); - testQuery("SELECT ParentId FROM Folder WHERE ANY ParentId NOT IN ('" + rootNode.toString() + "')", 30, false, "ParentId", new String(), false); + testQuery("SELECT ParentId FROM Folder WHERE ANY ParentId NOT IN ('" + rootNode.toString() + "')", 29, false, "ParentId", new String(), false); } @@ -622,30 +622,30 @@ public class QueryTestX extends BaseCMISTest public void test_folder_NAME() { testQuery("SELECT Name FROM Folder WHERE Name = 'company'", 1, false, "ObjectId", new String(), false); - testQuery("SELECT Name FROM Folder WHERE Name <> 'company'", 33, false, "ObjectId", new String(), false); + testQuery("SELECT Name FROM Folder WHERE Name <> 'company'", 32, false, "ObjectId", new String(), false); testQuery("SELECT Name FROM Folder WHERE Name < 'company'", 6, false, "ObjectId", new String(), false); testQuery("SELECT Name FROM Folder WHERE Name <= 'company'", 7, false, "ObjectId", new String(), false); - testQuery("SELECT Name FROM Folder WHERE Name > 'company'", 31, false, "ObjectId", new String(), false); - testQuery("SELECT Name FROM Folder WHERE Name >= 'company'", 31, false, "ObjectId", new String(), false); + testQuery("SELECT Name FROM Folder WHERE Name > 'company'", 30, false, "ObjectId", new String(), false); + testQuery("SELECT Name FROM Folder WHERE Name >= 'company'", 30, false, "ObjectId", new String(), false); testQuery("SELECT Name FROM Folder WHERE Name IN ('company')", 1, false, "ObjectId", new String(), false); - testQuery("SELECT Name FROM Folder WHERE Name NOT IN ('company')", 33, false, "ObjectId", new String(), false); + testQuery("SELECT Name FROM Folder WHERE Name NOT IN ('company')", 32, false, "ObjectId", new String(), false); testQuery("SELECT Name FROM Folder WHERE Name LIKE 'company'", 1, false, "ObjectId", new String(), false); - testQuery("SELECT Name FROM Folder WHERE Name NOT LIKE 'company'", 33, false, "ObjectId", new String(), false); + testQuery("SELECT Name FROM Folder WHERE Name NOT LIKE 'company'", 32, false, "ObjectId", new String(), false); - testQuery("SELECT Name FROM Folder WHERE Name IS NOT NULL", 34, false, "ObjectId", new String(), false); + testQuery("SELECT Name FROM Folder WHERE Name IS NOT NULL", 33, false, "ObjectId", new String(), false); testQuery("SELECT Name FROM Folder WHERE Name IS NULL", 0, false, "ObjectId", new String(), false); testQuery("SELECT Name FROM Folder WHERE 'company' = ANY Name", 1, false, "ObjectId", new String(), false); - testQuery("SELECT Name FROM Folder WHERE 'company' <> ANY Name", 33, false, "ObjectId", new String(), false); + testQuery("SELECT Name FROM Folder WHERE 'company' <> ANY Name", 32, false, "ObjectId", new String(), false); testQuery("SELECT Name FROM Folder WHERE 'company' < ANY Name", 6, false, "ObjectId", new String(), false); testQuery("SELECT Name FROM Folder WHERE 'company' <= ANY Name", 7, false, "ObjectId", new String(), false); - testQuery("SELECT Name FROM Folder WHERE 'company' > ANY Name", 31, false, "ObjectId", new String(), false); - testQuery("SELECT Name FROM Folder WHERE 'company' >= ANY Name", 31, false, "ObjectId", new String(), false); + testQuery("SELECT Name FROM Folder WHERE 'company' > ANY Name", 30, false, "ObjectId", new String(), false); + testQuery("SELECT Name FROM Folder WHERE 'company' >= ANY Name", 30, false, "ObjectId", new String(), false); testQuery("SELECT Name FROM Folder WHERE ANY Name IN ('company')", 1, false, "ObjectId", new String(), false); - testQuery("SELECT Name FROM Folder WHERE ANY Name NOT IN ('company')", 33, false, "ObjectId", new String(), false); + testQuery("SELECT Name FROM Folder WHERE ANY Name NOT IN ('company')", 32, false, "ObjectId", new String(), false); } public void test_document_Name() @@ -680,30 +680,30 @@ public class QueryTestX extends BaseCMISTest public void test_CHANGE_TOKEN() { testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken = 'test'", 0, false, "ObjectId", new String(), false); - testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken <> 'test'", 34, false, "ObjectId", new String(), false); + testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken <> 'test'", 33, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken < 'test'", 0, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken <= 'test'", 0, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken > 'test'", 0, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken >= 'test'", 0, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken IN ('test')", 0, false, "ObjectId", new String(), false); - testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken NOT IN ('test')", 34, false, "ObjectId", new String(), false); + testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken NOT IN ('test')", 33, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken LIKE 'test'", 0, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken NOT LIKE 'test'", 0, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken IS NOT NULL", 0, false, "ObjectId", new String(), false); - testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken IS NULL", 34, false, "ObjectId", new String(), false); + testQuery("SELECT ChangeToken FROM Folder WHERE ChangeToken IS NULL", 33, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE 'test' = ANY ChangeToken", 0, false, "ObjectId", new String(), false); - testQuery("SELECT ChangeToken FROM Folder WHERE 'test' <> ANY ChangeToken", 34, false, "ObjectId", new String(), false); + testQuery("SELECT ChangeToken FROM Folder WHERE 'test' <> ANY ChangeToken", 33, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE 'test' < ANY ChangeToken", 0, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE 'test' <= ANY ChangeToken", 0, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE 'test' > ANY ChangeToken", 0, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE 'test' >= ANY ChangeToken", 0, false, "ObjectId", new String(), false); testQuery("SELECT ChangeToken FROM Folder WHERE ANY ChangeToken IN ('test')", 0, false, "ObjectId", new String(), false); - testQuery("SELECT ChangeToken FROM Folder WHERE ANY ChangeToken NOT IN ('test')", 34, false, "ObjectId", new String(), false); + testQuery("SELECT ChangeToken FROM Folder WHERE ANY ChangeToken NOT IN ('test')", 33, false, "ObjectId", new String(), false); } public void test_LAST_MODIFICATION_DATE() @@ -1031,30 +1031,30 @@ public class QueryTestX extends BaseCMISTest // FOLDER - testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId = 'Folder'", 34, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId = 'Folder'", 33, false, "ObjectId", new String(), false); testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId <> 'Folder'", 0, false, "ObjectId", new String(), false); testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId < 'Folder'", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId <= 'Folder'", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId > 'Folder'", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId >= 'Folder'", 0, false, "ObjectId", new String(), true); - testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId IN ('Folder')", 34, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId IN ('Folder')", 33, false, "ObjectId", new String(), false); testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId NOT IN ('Folder')", 0, false, "ObjectId", new String(), false); - testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId LIKE 'Folder'", 34, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId LIKE 'Folder'", 33, false, "ObjectId", new String(), false); testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId NOT LIKE 'Folder'", 0, false, "ObjectId", new String(), false); - testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId IS NOT NULL", 34, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId IS NOT NULL", 33, false, "ObjectId", new String(), false); testQuery("SELECT ObjectTypeId FROM Folder WHERE ObjectTypeId IS NULL", 0, false, "ObjectId", new String(), false); - testQuery("SELECT ObjectTypeId FROM Folder WHERE 'Folder' = ANY ObjectTypeId", 34, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectTypeId FROM Folder WHERE 'Folder' = ANY ObjectTypeId", 33, false, "ObjectId", new String(), false); testQuery("SELECT ObjectTypeId FROM Folder WHERE 'Folder' <> ANY ObjectTypeId", 0, false, "ObjectId", new String(), false); testQuery("SELECT ObjectTypeId FROM Folder WHERE 'Folder' < ANY ObjectTypeId", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectTypeId FROM Folder WHERE 'Folder' <= ANY ObjectTypeId", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectTypeId FROM Folder WHERE 'Folder' > ANY ObjectTypeId", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectTypeId FROM Folder WHERE 'Folder' >= ANY ObjectTypeId", 0, false, "ObjectId", new String(), true); - testQuery("SELECT ObjectTypeId FROM Folder WHERE ANY ObjectTypeId IN ('Folder')", 34, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectTypeId FROM Folder WHERE ANY ObjectTypeId IN ('Folder')", 33, false, "ObjectId", new String(), false); testQuery("SELECT ObjectTypeId FROM Folder WHERE ANY ObjectTypeId NOT IN ('Folder')", 0, false, "ObjectId", new String(), false); // RELATIONSHIP @@ -1066,30 +1066,30 @@ public class QueryTestX extends BaseCMISTest public void test_URI() { testQuery("SELECT Uri FROM Folder WHERE Uri = 'test'", 0, false, "ObjectId", new String(), false); - testQuery("SELECT Uri FROM Folder WHERE Uri <> 'test'", 34, false, "ObjectId", new String(), false); + testQuery("SELECT Uri FROM Folder WHERE Uri <> 'test'", 33, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE Uri < 'test'", 0, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE Uri <= 'test'", 0, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE Uri > 'test'", 0, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE Uri >= 'test'", 0, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE Uri IN ('test')", 0, false, "ObjectId", new String(), false); - testQuery("SELECT Uri FROM Folder WHERE Uri NOT IN ('test')", 34, false, "ObjectId", new String(), false); + testQuery("SELECT Uri FROM Folder WHERE Uri NOT IN ('test')", 33, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE Uri LIKE 'test'", 0, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE Uri NOT LIKE 'test'", 0, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE Uri IS NOT NULL", 0, false, "ObjectId", new String(), false); - testQuery("SELECT Uri FROM Folder WHERE Uri IS NULL", 34, false, "ObjectId", new String(), false); + testQuery("SELECT Uri FROM Folder WHERE Uri IS NULL", 33, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE 'test' = ANY Uri", 0, false, "ObjectId", new String(), false); - testQuery("SELECT Uri FROM Folder WHERE 'test' <> ANY Uri", 34, false, "ObjectId", new String(), false); + testQuery("SELECT Uri FROM Folder WHERE 'test' <> ANY Uri", 33, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE 'test' < ANY Uri", 0, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE 'test' <= ANY Uri", 0, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE 'test' > ANY Uri", 0, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE 'test' >= ANY Uri", 0, false, "ObjectId", new String(), false); testQuery("SELECT Uri FROM Folder WHERE ANY Uri IN ('test')", 0, false, "ObjectId", new String(), false); - testQuery("SELECT Uri FROM Folder WHERE ANY Uri NOT IN ('test')", 34, false, "ObjectId", new String(), false); + testQuery("SELECT Uri FROM Folder WHERE ANY Uri NOT IN ('test')", 33, false, "ObjectId", new String(), false); } public void test_ObjectId() @@ -1097,33 +1097,33 @@ public class QueryTestX extends BaseCMISTest String companyHomeId = testQuery("SELECT ObjectId FROM Folder WHERE Name = '\"company home\"'", 1, false, "ObjectId", new String(), false); testQuery("SELECT ObjectId FROM Folder WHERE ObjectId = '" + companyHomeId + "'", 1, false, "ObjectId", new String(), false); - testQuery("SELECT ObjectId FROM Folder WHERE ObjectId <> '" + companyHomeId + "'", 33, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectId FROM Folder WHERE ObjectId <> '" + companyHomeId + "'", 32, false, "ObjectId", new String(), false); testQuery("SELECT ObjectId FROM Folder WHERE ObjectId < '" + companyHomeId + "'", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectId FROM Folder WHERE ObjectId <= '" + companyHomeId + "'", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectId FROM Folder WHERE ObjectId > '" + companyHomeId + "'", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectId FROM Folder WHERE ObjectId >= '" + companyHomeId + "'", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectId FROM Folder WHERE ObjectId IN ('" + companyHomeId + "')", 1, false, "ObjectId", new String(), false); - testQuery("SELECT ObjectId FROM Folder WHERE ObjectId NOT IN ('" + companyHomeId + "')", 33, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectId FROM Folder WHERE ObjectId NOT IN ('" + companyHomeId + "')", 32, false, "ObjectId", new String(), false); testQuery("SELECT ObjectId FROM Folder WHERE ObjectId LIKE '" + companyHomeId + "'", 1, false, "ObjectId", new String(), false); - testQuery("SELECT ObjectId FROM Folder WHERE ObjectId NOT LIKE '" + companyHomeId + "'", 33, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectId FROM Folder WHERE ObjectId NOT LIKE '" + companyHomeId + "'", 32, false, "ObjectId", new String(), false); testQuery("SELECT ObjectId FROM Folder WHERE IN_FOLDER('" + companyHomeId + "')", 4, false, "ObjectId", new String(), false); - testQuery("SELECT ObjectId FROM Folder WHERE IN_TREE ('" + companyHomeId + "')", 33, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectId FROM Folder WHERE IN_TREE ('" + companyHomeId + "')", 32, false, "ObjectId", new String(), false); - testQuery("SELECT ObjectId FROM Folder WHERE ObjectId IS NOT NULL", 34, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectId FROM Folder WHERE ObjectId IS NOT NULL", 33, false, "ObjectId", new String(), false); testQuery("SELECT ObjectId FROM Folder WHERE ObjectId IS NULL", 0, false, "ObjectId", new String(), false); testQuery("SELECT ObjectId FROM Folder WHERE '" + companyHomeId + "' = ANY ObjectId", 1, false, "ObjectId", new String(), false); - testQuery("SELECT ObjectId FROM Folder WHERE '" + companyHomeId + "' <> ANY ObjectId", 33, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectId FROM Folder WHERE '" + companyHomeId + "' <> ANY ObjectId", 32, false, "ObjectId", new String(), false); testQuery("SELECT ObjectId FROM Folder WHERE '" + companyHomeId + "' < ANY ObjectId", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectId FROM Folder WHERE '" + companyHomeId + "' <= ANY ObjectId", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectId FROM Folder WHERE '" + companyHomeId + "' > ANY ObjectId", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectId FROM Folder WHERE '" + companyHomeId + "' >= ANY ObjectId", 0, false, "ObjectId", new String(), true); testQuery("SELECT ObjectId FROM Folder WHERE ANY ObjectId IN ('" + companyHomeId + "')", 1, false, "ObjectId", new String(), false); - testQuery("SELECT ObjectId FROM Folder WHERE ANY ObjectId NOT IN ('" + companyHomeId + "')", 33, false, "ObjectId", new String(), false); + testQuery("SELECT ObjectId FROM Folder WHERE ANY ObjectId NOT IN ('" + companyHomeId + "')", 32, false, "ObjectId", new String(), false); } public void testOrderBy() @@ -1195,7 +1195,7 @@ public class QueryTestX extends BaseCMISTest query = "SELECT * FROM Folder WHERE Name IS NOT NULL AND NOT Name = 'company'"; rs = cmisQueryService.query(query); - assertEquals(33, rs.getLength()); + assertEquals(32, rs.getLength()); for (CMISResultSetRow row : rs) { System.out.println(row.getValue("Name") + " Score " + row.getScore() + " " + row.getScores()); @@ -1225,7 +1225,7 @@ public class QueryTestX extends BaseCMISTest query = "SELECT * FROM Folder WHERE Name IS NOT NULL AND Name <> 'company'"; rs = cmisQueryService.query(query); - assertEquals(33, rs.getLength()); + assertEquals(32, rs.getLength()); for (CMISResultSetRow row : rs) { System.out.println(row.getValue("Name") + " Score " + row.getScore() + " " + row.getScores()); @@ -1255,7 +1255,7 @@ public class QueryTestX extends BaseCMISTest query = "SELECT * FROM Folder WHERE Name IS NOT NULL AND Name > 'company'"; rs = cmisQueryService.query(query); - assertEquals(31, rs.getLength()); + assertEquals(30, rs.getLength()); for (CMISResultSetRow row : rs) { System.out.println(row.getValue("Name") + " Score " + row.getScore() + " " + row.getScores()); @@ -1265,7 +1265,7 @@ public class QueryTestX extends BaseCMISTest query = "SELECT * FROM Folder WHERE Name IS NOT NULL AND Name >= 'company'"; rs = cmisQueryService.query(query); - assertEquals(31, rs.getLength()); + assertEquals(30, rs.getLength()); for (CMISResultSetRow row : rs) { System.out.println(row.getValue("Name") + " Score " + row.getScore() + " " + row.getScores()); @@ -1285,7 +1285,7 @@ public class QueryTestX extends BaseCMISTest query = "SELECT * FROM Folder WHERE Name IS NOT NULL AND Name NOT IN ('company', 'home')"; rs = cmisQueryService.query(query); - assertEquals(32, rs.getLength()); + assertEquals(31, rs.getLength()); for (CMISResultSetRow row : rs) { System.out.println(row.getValue("Name") + " Score " + row.getScore() + " " + row.getScores()); @@ -1305,7 +1305,7 @@ public class QueryTestX extends BaseCMISTest query = "SELECT * FROM Folder WHERE Name IS NOT NULL AND ANY Name NOT IN ('company', 'home')"; rs = cmisQueryService.query(query); - assertEquals(32, rs.getLength()); + assertEquals(31, rs.getLength()); for (CMISResultSetRow row : rs) { System.out.println(row.getValue("Name") + " Score " + row.getScore() + " " + row.getScores()); @@ -1345,7 +1345,7 @@ public class QueryTestX extends BaseCMISTest query = "SELECT * FROM Folder WHERE Name IS NOT NULL AND Name NOT LIKE 'c_m_a_y'"; rs = cmisQueryService.query(query); - assertEquals(33, rs.getLength()); + assertEquals(32, rs.getLength()); for (CMISResultSetRow row : rs) { System.out.println(row.getValue("Name") + " Score " + row.getScore() + " " + row.getScores()); @@ -1427,7 +1427,7 @@ public class QueryTestX extends BaseCMISTest { String query = "SELECT * FROM Folder WHERE Name IS NOT NULL"; CMISResultSet rs = cmisQueryService.query(query); - assertEquals(34, rs.getLength()); + assertEquals(33, rs.getLength()); for (CMISResultSetRow row : rs) { System.out.println(row.getValue("Name") + " Score " + row.getScore() + " " + row.getScores()); @@ -1534,7 +1534,7 @@ public class QueryTestX extends BaseCMISTest String query = "SELECT * FROM Folder WHERE IN_TREE('" + id + "')"; CMISResultSet rs = cmisQueryService.query(query); - assertEquals(33, rs.getLength()); + assertEquals(32, rs.getLength()); for (CMISResultSetRow row : rs) { System.out.println(row.getValue("Name") + " Score " + row.getScore() + " " + row.getScores()); diff --git a/source/java/org/alfresco/repo/domain/hibernate/Transaction.hbm.xml b/source/java/org/alfresco/repo/domain/hibernate/Transaction.hbm.xml index a4f1bc45e5..2accb710a4 100644 --- a/source/java/org/alfresco/repo/domain/hibernate/Transaction.hbm.xml +++ b/source/java/org/alfresco/repo/domain/hibernate/Transaction.hbm.xml @@ -74,6 +74,20 @@ txn.id = :txnId + + select + min(txn.commitTimeMs) + from + org.alfresco.repo.domain.hibernate.TransactionImpl as txn + + + + select + max(txn.commitTimeMs) + from + org.alfresco.repo.domain.hibernate.TransactionImpl as txn + + getTxnsByMinCommitTime(final List includeTxnIds) { @@ -3067,14 +3101,33 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements private static final Long TXN_ID_DUD = Long.valueOf(-1L); private static final Long SERVER_ID_DUD = Long.valueOf(-1L); + private static final long MIN_TIME_QUERY_RANGE = 10L * 60L * 1000L; // 10 minutes + @SuppressWarnings("unchecked") public List getTxnsByCommitTimeAscending( - final long fromTimeInclusive, - final long toTimeExclusive, - final int count, + long fromTimeInclusive, + long toTimeExclusive, + int count, List excludeTxnIds, boolean remoteOnly) { + // Start with some sane defaults + if (fromTimeInclusive < 0L) + { + fromTimeInclusive = getMinTxnCommitTime(); + } + if (toTimeExclusive < 0L || toTimeExclusive == Long.MAX_VALUE) + { + toTimeExclusive = ((long)getMaxTxnCommitTime())+1L; + } + // Get the time difference required + long diffTime = toTimeExclusive - fromTimeInclusive; + if (diffTime <= 0) + { + // There can be no results + return Collections.emptyList(); + } + // Make sure that we have at least one entry in the exclude list final List excludeTxnIdsInner = new ArrayList(excludeTxnIds == null ? 1 : excludeTxnIds.size()); if (excludeTxnIds == null || excludeTxnIds.isEmpty()) @@ -3104,34 +3157,71 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements { excludeServerIds.add(SERVER_ID_DUD); } - HibernateCallback callback = new HibernateCallback() + + List results = new ArrayList(count); + // Each query must be constrained in the time range, + // so query larger and larger sets until enough results are retrieved. + long iteration = 0L; + long queryFromTimeInclusive = fromTimeInclusive; + long queryToTimeExclusive = fromTimeInclusive; + int queryCount = count; + while ((results.size() < count) && (queryToTimeExclusive <= toTimeExclusive)) { - public Object doInHibernate(Session session) + iteration++; + queryFromTimeInclusive = queryToTimeExclusive; + queryToTimeExclusive += (iteration * MIN_TIME_QUERY_RANGE); + queryCount = count - results.size(); + + final long innerQueryFromTimeInclusive = queryFromTimeInclusive; + final long innerQueryToTimeExclusive = queryToTimeExclusive; + final int innerQueryCount = queryCount; + HibernateCallback callback = new HibernateCallback() { - Query query = session.getNamedQuery(QUERY_GET_TXNS_BY_COMMIT_TIME_ASC); - query.setLong("fromTimeInclusive", fromTimeInclusive) - .setLong("toTimeExclusive", toTimeExclusive) - .setParameterList("excludeTxnIds", excludeTxnIdsInner) - .setParameterList("excludeServerIds", excludeServerIds) - .setMaxResults(count) - .setReadOnly(true); - DirtySessionMethodInterceptor.setQueryFlushMode(session, query); - return query.list(); - } - }; - List results = (List) getHibernateTemplate().execute(callback); + public Object doInHibernate(Session session) + { + Query query = session.getNamedQuery(QUERY_GET_TXNS_BY_COMMIT_TIME_ASC); + query.setLong("fromTimeInclusive", innerQueryFromTimeInclusive) + .setLong("toTimeExclusive", innerQueryToTimeExclusive) + .setParameterList("excludeTxnIds", excludeTxnIdsInner) + .setParameterList("excludeServerIds", excludeServerIds) + .setMaxResults(innerQueryCount) + .setReadOnly(true); + return query.list(); + } + }; + List queryResults = (List) getHibernateTemplate().execute(callback); + // Copy results over + results.addAll(queryResults); + } // done return results; } @SuppressWarnings("unchecked") public List getTxnsByCommitTimeDescending( - final long fromTimeInclusive, - final long toTimeExclusive, - final int count, + long fromTimeInclusive, + long toTimeExclusive, + int count, List excludeTxnIds, boolean remoteOnly) { + // Start with some sane defaults + if (fromTimeInclusive < 0L) + { + fromTimeInclusive = getMinTxnCommitTime(); + } + if (toTimeExclusive < 0L || toTimeExclusive == Long.MAX_VALUE) + { + toTimeExclusive = ((long)getMaxTxnCommitTime())+1L; + } + // Get the time difference required + long diffTime = toTimeExclusive - fromTimeInclusive; + if (diffTime <= 0) + { + // There can be no results + return Collections.emptyList(); + } + // Make sure that we have at least one entry in the exclude list final List excludeTxnIdsInner = new ArrayList(excludeTxnIds == null ? 1 : excludeTxnIds.size()); if (excludeTxnIds == null || excludeTxnIds.isEmpty()) @@ -3161,22 +3251,44 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements { excludeServerIds.add(SERVER_ID_DUD); } - HibernateCallback callback = new HibernateCallback() + + + + List results = new ArrayList(count); + // Each query must be constrained in the time range, + // so query larger and larger sets until enough results are retrieved. + long iteration = 0L; + long queryFromTimeInclusive = toTimeExclusive; + long queryToTimeExclusive = toTimeExclusive; + int queryCount = count; + while ((results.size() < count) && (queryFromTimeInclusive >= fromTimeInclusive)) { - public Object doInHibernate(Session session) + iteration++; + queryToTimeExclusive = queryFromTimeInclusive; + queryFromTimeInclusive -= (iteration * MIN_TIME_QUERY_RANGE); + queryCount = count - results.size(); + + final long innerQueryFromTimeInclusive = queryFromTimeInclusive; + final long innerQueryToTimeExclusive = queryToTimeExclusive; + final int innerQueryCount = queryCount; + HibernateCallback callback = new HibernateCallback() { - Query query = session.getNamedQuery(QUERY_GET_TXNS_BY_COMMIT_TIME_DESC); - query.setLong("fromTimeInclusive", fromTimeInclusive) - .setLong("toTimeExclusive", toTimeExclusive) - .setParameterList("excludeTxnIds", excludeTxnIdsInner) - .setParameterList("excludeServerIds", excludeServerIds) - .setMaxResults(count) - .setReadOnly(true); - DirtySessionMethodInterceptor.setQueryFlushMode(session, query); - return query.list(); - } - }; - List results = (List) getHibernateTemplate().execute(callback); + public Object doInHibernate(Session session) + { + Query query = session.getNamedQuery(QUERY_GET_TXNS_BY_COMMIT_TIME_DESC); + query.setLong("fromTimeInclusive", innerQueryFromTimeInclusive) + .setLong("toTimeExclusive", innerQueryToTimeExclusive) + .setParameterList("excludeTxnIds", excludeTxnIdsInner) + .setParameterList("excludeServerIds", excludeServerIds) + .setMaxResults(innerQueryCount) + .setReadOnly(true); + return query.list(); + } + }; + List queryResults = (List) getHibernateTemplate().execute(callback); + // Copy results over + results.addAll(queryResults); + } // done return results; } diff --git a/source/test-resources/tenant/mt-contentstore-context.xml b/source/test-resources/tenant/mt-contentstore-context.xml index dec5bd5289..c413b93cfa 100644 --- a/source/test-resources/tenant/mt-contentstore-context.xml +++ b/source/test-resources/tenant/mt-contentstore-context.xml @@ -38,32 +38,12 @@ - - - - - - - - - - - - - - - 14 - + - - - - -