From aaa009bd86a98a5c16bb306c2cccfbcc447fde05 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Tue, 7 Jul 2015 08:07:53 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.1/Cloud) 107747: Fix for ACE-2125 Boolean properties should be supported in the predicate for transactional metadata queries. - also includes float and double Fix for ACE-2685 Error when using content length and mimetype in the same query - SQL refactor removes this issue Fix for ACE-3889 Support the OR operator with transactional AFTS queries git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@107764 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/bootstrap-context.xml | 12 ++ .../AlfrescoCreate-RepoTables.sql | 3 + .../alfresco/dbscripts/db-schema-context.xml | 1 + .../metadata-query-indexes-2.sql | 24 ++++ .../metadata-query-common-SqlMap.xml | 120 ++++++++++++------ .../messages/patch-service.properties | 4 +- .../alfresco/patch/patch-services-context.xml | 13 ++ config/alfresco/repository.properties | 2 + .../Search/common-opencmis-context.xml | 13 +- .../Search/common-search-context.xml | 8 +- config/alfresco/version.properties | 2 +- .../querymodel/impl/db/AspectSupport.java | 10 +- .../querymodel/impl/db/DBConjunction.java | 4 +- .../querymodel/impl/db/DBDisjunction.java | 28 ++-- .../impl/db/DBFunctionalConstraint.java | 4 +- .../impl/querymodel/impl/db/DBOrdering.java | 4 +- .../impl/querymodel/impl/db/DBQuery.java | 22 +++- .../impl/db/DBQueryBuilderComponent.java | 2 +- .../DBQueryBuilderPredicatePartCommand.java | 36 ++++++ .../querymodel/impl/db/DBQueryEngine.java | 10 +- .../impl/querymodel/impl/db/DBSelector.java | 2 +- .../querymodel/impl/db/ParentSupport.java | 19 ++- .../querymodel/impl/db/PropertySupport.java | 53 ++++---- .../impl/querymodel/impl/db/TypeSupport.java | 3 +- .../impl/querymodel/impl/db/UUIDSupport.java | 3 +- .../querymodel/impl/db/functions/DBChild.java | 2 +- .../impl/db/functions/DBDescendant.java | 2 +- .../impl/db/functions/DBEquals.java | 4 +- .../impl/db/functions/DBExists.java | 4 +- .../impl/db/functions/DBFTSFuzzyTerm.java | 2 +- .../impl/db/functions/DBFTSPhrase.java | 4 +- .../impl/db/functions/DBFTSPrefixTerm.java | 4 +- .../impl/db/functions/DBFTSProximity.java | 2 +- .../impl/db/functions/DBFTSRange.java | 2 +- .../impl/db/functions/DBFTSTerm.java | 4 +- .../impl/db/functions/DBFTSWildTerm.java | 2 +- .../impl/db/functions/DBGreaterThan.java | 4 +- .../db/functions/DBGreaterThanOrEquals.java | 4 +- .../querymodel/impl/db/functions/DBIn.java | 4 +- .../impl/db/functions/DBLessThan.java | 4 +- .../impl/db/functions/DBLessThanOrEquals.java | 4 +- .../querymodel/impl/db/functions/DBLike.java | 4 +- .../querymodel/impl/db/functions/DBLower.java | 2 +- .../impl/db/functions/DBNotEquals.java | 4 +- .../impl/db/functions/DBPropertyAccessor.java | 2 +- .../querymodel/impl/db/functions/DBScore.java | 2 +- .../querymodel/impl/db/functions/DBUpper.java | 2 +- .../search/impl/solr/DbAftsQueryLanguage.java | 26 ++-- .../search/impl/solr/DbCmisQueryLanguage.java | 23 +++- 49 files changed, 355 insertions(+), 164 deletions(-) create mode 100644 config/alfresco/dbscripts/upgrade/5.1/org.hibernate.dialect.Dialect/metadata-query-indexes-2.sql diff --git a/config/alfresco/bootstrap-context.xml b/config/alfresco/bootstrap-context.xml index c8d7080cae..a27671c194 100644 --- a/config/alfresco/bootstrap-context.xml +++ b/config/alfresco/bootstrap-context.xml @@ -407,6 +407,18 @@ + + + + + + + + + + + + diff --git a/config/alfresco/dbscripts/create/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoCreate-RepoTables.sql b/config/alfresco/dbscripts/create/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoCreate-RepoTables.sql index c7f3735fae..0f1f607d27 100644 --- a/config/alfresco/dbscripts/create/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoCreate-RepoTables.sql +++ b/config/alfresco/dbscripts/create/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoCreate-RepoTables.sql @@ -308,6 +308,9 @@ CREATE TABLE alf_node_properties KEY fk_alf_nprop_loc (locale_id), KEY idx_alf_nprop_s (qname_id, string_value(42)), KEY idx_alf_nprop_l (qname_id, long_value), + KEY idx_alf_nprop_b (qname_id, boolean_value), + KEY idx_alf_nprop_f (qname_id, float_value), + KEY idx_alf_nprop_d (qname_id, double_value), CONSTRAINT fk_alf_nprop_loc FOREIGN KEY (locale_id) REFERENCES alf_locale (id), CONSTRAINT fk_alf_nprop_n FOREIGN KEY (node_id) REFERENCES alf_node (id), CONSTRAINT fk_alf_nprop_qn FOREIGN KEY (qname_id) REFERENCES alf_qname (id) diff --git a/config/alfresco/dbscripts/db-schema-context.xml b/config/alfresco/dbscripts/db-schema-context.xml index 337be5db1d..4e0bb43e57 100644 --- a/config/alfresco/dbscripts/db-schema-context.xml +++ b/config/alfresco/dbscripts/db-schema-context.xml @@ -60,6 +60,7 @@ + diff --git a/config/alfresco/dbscripts/upgrade/5.1/org.hibernate.dialect.Dialect/metadata-query-indexes-2.sql b/config/alfresco/dbscripts/upgrade/5.1/org.hibernate.dialect.Dialect/metadata-query-indexes-2.sql new file mode 100644 index 0000000000..b24b3fa7fc --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/5.1/org.hibernate.dialect.Dialect/metadata-query-indexes-2.sql @@ -0,0 +1,24 @@ +-- +-- Title: Update alf_node_properties to support in-transaction metadata queries on remaining property types +-- Database: Generic +-- Since: V5.1 Schema 9004 +-- Author: Andy Hind +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- + +CREATE INDEX idx_alf_nprop_b ON alf_node_properties (qname_id, boolean_value, node_id); --(optional) +CREATE INDEX idx_alf_nprop_f ON alf_node_properties (qname_id, float_value, node_id); --(optional) +CREATE INDEX idx_alf_nprop_d ON alf_node_properties (qname_id, double_value, node_id); --(optional) + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V5.1-metadata-query-indexes'; +INSERT INTO alf_applied_patch + (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) + VALUES + ( + 'patch.db-V5.1-metadata-query-indexes', 'Manually executed script upgrade V5.1: Updates for metadata query', + 0, 9003, -1, 9004, null, 'UNKNOWN', ${TRUE}, ${TRUE}, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/metadata-query-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/metadata-query-common-SqlMap.xml index 3da24bb2f8..cceaeb6cd3 100644 --- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/metadata-query-common-SqlMap.xml +++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/metadata-query-common-SqlMap.xml @@ -33,7 +33,9 @@ node.type_qname_id <> #{sysDeletedType} AND node.store_id = #{storeId} - AND node.transaction_id > #{sinceTxId} + + AND node.transaction_id > #{sinceTxId} + AND @@ -60,47 +62,85 @@ 1 = 0 - - ${item.fieldAndFunction} = #{item.value} - - - ${item.alias}.${item.fieldName} IS NOT NULL - - - ${item.alias}.${item.fieldName} IS NULL - - - ${item.fieldAndFunction} > #{item.value} - - - ${item.fieldAndFunction} >= #{item.value} - - - ${item.fieldAndFunction} < #{item.value} - - - ${item.fieldAndFunction} <= #{item.value} - - - ${item.fieldAndFunction} IN #{val} - - - ${item.fieldAndFunction} NOT IN #{val} - - - ${item.fieldAndFunction} LIKE #{item.value} - - - ${item.fieldAndFunction} NOT LIKE #{item.value} - - - ${item.fieldAndFunction} <> #{item.value} - - EXISTS (select 1 from alf_node_aspects aspect where aspect.node_id = node.id AND - aspect.qname_id IN #{val}) + node.id IN (select aspect.node_id from alf_node_aspects aspect + where aspect.qname_id IN #{val}) - + + + + + + ( + + + node.id IN ( + + + + + + select ${item.alias}.child_node_id from alf_child_assoc ${item.alias} where + + + select ${item.alias}.node_id from alf_node_properties ${item.alias} where (#{item.qnameId} = ${item.alias}.qname_id) AND + + + select ${item.alias}_p.node_id from alf_node_properties ${item.alias}_p + join alf_content_data ${item.alias}_cd on (${item.alias}_cd.id = ${item.alias}_p.long_value) + join alf_mimetype ${item.alias} on (${item.alias}_cd.content_mimetype_id = ${item.alias}.id) + where (#{item.qnameId} = ${item.alias}_p.qname_id) + AND + + + select ${item.alias}_p.node_id from alf_node_properties ${item.alias}_p + join alf_content_data ${item.alias}_cd on (${item.alias}_cd.id = ${item.alias}_p.long_value) + join alf_content_url ${item.alias} on (${item.alias}.id = ${item.alias}_cd.content_url_id) + where (#{item.qnameId} = ${item.alias}_p.qname_id) + AND + + + + + ${item.fieldAndFunction} = #{item.value} + + + ${item.alias}.${item.fieldName} IS NOT NULL + + + ${item.alias}.${item.fieldName} IS NULL + + + ${item.fieldAndFunction} > #{item.value} + + + ${item.fieldAndFunction} >= #{item.value} + + + ${item.fieldAndFunction} < #{item.value} + + + ${item.fieldAndFunction} <= #{item.value} + + + ${item.fieldAndFunction} IN #{val} + + + ${item.fieldAndFunction} NOT IN #{val} + + + ${item.fieldAndFunction} LIKE #{item.value} + + + ${item.fieldAndFunction} NOT LIKE #{item.value} + + + ${item.fieldAndFunction} <> #{item.value} + + + ) + + diff --git a/config/alfresco/messages/patch-service.properties b/config/alfresco/messages/patch-service.properties index 87c2963868..a4daf3f7cb 100644 --- a/config/alfresco/messages/patch-service.properties +++ b/config/alfresco/messages/patch-service.properties @@ -364,4 +364,6 @@ patch.deleteClassifibleAspectForFailedThumbnail.description=Deletes 'cm:generalc patch.downloadsFolder=Adds the System Downloads folder patch.downloadsFolder.description=Ensures the Syste Downloads folder exists. patch.downloadsFolder.result.exists=The System Downloads folder already exists. -patch.downloadsFolder.result.created=The System Downloads folder was created. \ No newline at end of file +patch.downloadsFolder.result.created=The System Downloads folder was created. + +patch.db-V5.1-metadata-query-indexes.description=Add additional indexes to support transactional metadata query direct to the database.>>>>>>> .merge-right.r99951 diff --git a/config/alfresco/patch/patch-services-context.xml b/config/alfresco/patch/patch-services-context.xml index 0a97c78c2e..07ae60251e 100644 --- a/config/alfresco/patch/patch-services-context.xml +++ b/config/alfresco/patch/patch-services-context.xml @@ -1171,4 +1171,17 @@ + + + patch.db-V5.1-metadata-query-indexes + patch.db-V5.1-metadata-query-indexes.description + 0 + 9003 + 9004 + ${system.metadata-query-indexes-more.ignored} + + classpath:alfresco/dbscripts/upgrade/5.1/${db.script.dialect}/metadata-query-indexes-2.sql + + + diff --git a/config/alfresco/repository.properties b/config/alfresco/repository.properties index c58b1fb885..dddfe3edc9 100644 --- a/config/alfresco/repository.properties +++ b/config/alfresco/repository.properties @@ -1039,7 +1039,9 @@ webscripts.setMaxContentSize=4294967296 # Adding each the supporting indexes may take several hours depending on the size of the database. # The required indexes may be added in stages. # See: classpath:alfresco/dbscripts/upgrade/4.2/${db.script.dialect}/metadata-query-indexes.sql +# See: classpath:alfresco/dbscripts/upgrade/5.1/${db.script.dialect}/metadata-query-indexes-2.sql system.metadata-query-indexes.ignored=true +system.metadata-query-indexes-more.ignored=true # # Do we defer running the shared folder patch? diff --git a/config/alfresco/subsystems/Search/common-opencmis-context.xml b/config/alfresco/subsystems/Search/common-opencmis-context.xml index ea1e3e27ce..573f0a2bdc 100644 --- a/config/alfresco/subsystems/Search/common-opencmis-context.xml +++ b/config/alfresco/subsystems/Search/common-opencmis-context.xml @@ -82,9 +82,12 @@ - + + + + @@ -96,12 +99,12 @@ - - - - + + + + diff --git a/config/alfresco/subsystems/Search/common-search-context.xml b/config/alfresco/subsystems/Search/common-search-context.xml index a430825a36..0f17724e98 100644 --- a/config/alfresco/subsystems/Search/common-search-context.xml +++ b/config/alfresco/subsystems/Search/common-search-context.xml @@ -101,9 +101,12 @@ - + + + + @@ -118,6 +121,9 @@ + + + diff --git a/config/alfresco/version.properties b/config/alfresco/version.properties index ba1dbbc1f7..6f8ac5c26b 100644 --- a/config/alfresco/version.properties +++ b/config/alfresco/version.properties @@ -23,4 +23,4 @@ version.build=r@scm-revision@-b@build-number@ # Schema number -version.schema=9006 +version.schema=9007 diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/AspectSupport.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/AspectSupport.java index 5fec808d36..d92644c194 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/AspectSupport.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/AspectSupport.java @@ -68,7 +68,7 @@ public class AspectSupport implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { } @@ -81,12 +81,7 @@ public class AspectSupport implements DBQueryBuilderComponent @Override public void buildJoins(Map singleJoins, List multiJoins) { - DBQueryBuilderJoinCommand join = new DBQueryBuilderJoinCommand(); - alias = "ASPECT_" + multiJoins.size(); - join.setAlias(alias); - join.setOuter(false); - join.setType(DBQueryBuilderJoinCommandType.ASPECT); - multiJoins.add(join); + // Nothing to do (uses semi-join) } @@ -100,6 +95,7 @@ public class AspectSupport implements DBQueryBuilderComponent public void buildPredicateCommands(List predicatePartCommands) { DBQueryBuilderPredicatePartCommand command = new DBQueryBuilderPredicatePartCommand(); + command.setJoinCommandType(DBQueryBuilderJoinCommandType.ASPECT); command.setAlias(alias); command.setType(DBQueryBuilderPredicatePartCommandType.ASPECT); if(qnameIds.size() > 0) diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBConjunction.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBConjunction.java index 7f5e0a1de0..249c8311c2 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBConjunction.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBConjunction.java @@ -63,7 +63,7 @@ public class DBConjunction extends BaseConjunction implements DBQueryBuilderComp */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { for (Constraint constraint : getConstraints()) { @@ -74,7 +74,7 @@ public class DBConjunction extends BaseConjunction implements DBQueryBuilderComp throw new QueryModelException("Disjunctions are not suported"); } DBQueryBuilderComponent dbQueryBuilderComponent = (DBQueryBuilderComponent) constraint; - dbQueryBuilderComponent.prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectors, functionArgs, functionContext); + dbQueryBuilderComponent.prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectors, functionArgs, functionContext, supportBooleanFloatAndDouble); } else { diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBDisjunction.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBDisjunction.java index 4d2f99db87..1f088be04e 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBDisjunction.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBDisjunction.java @@ -63,22 +63,22 @@ public class DBDisjunction extends BaseDisjunction implements DBQueryBuilderComp */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { - throw new QueryModelException("Disjunctions are not suported"); + //throw new QueryModelException("Disjunctions are not suported"); -// for (Constraint constraint : getConstraints()) -// { -// if (constraint instanceof DBQueryBuilderComponent) -// { -// DBQueryBuilderComponent dbQueryBuilderComponent = (DBQueryBuilderComponent) constraint; -// dbQueryBuilderComponent.prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, selectors, functionArgs, functionContext); -// } -// else -// { -// throw new UnsupportedOperationException(); -// } -// } + for (Constraint constraint : getConstraints()) + { + if (constraint instanceof DBQueryBuilderComponent) + { + DBQueryBuilderComponent dbQueryBuilderComponent = (DBQueryBuilderComponent) constraint; + dbQueryBuilderComponent.prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectors, functionArgs, functionContext, supportBooleanFloatAndDouble); + } + else + { + throw new UnsupportedOperationException(); + } + } } /* (non-Javadoc) diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBFunctionalConstraint.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBFunctionalConstraint.java index 2616baf598..06a1fccecf 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBFunctionalConstraint.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBFunctionalConstraint.java @@ -63,7 +63,7 @@ public class DBFunctionalConstraint extends BaseFunctionalConstraint implements * @see org.alfresco.repo.search.impl.querymodel.impl.db.DBQueryBuilderComponent#prepare(org.alfresco.service.namespace.NamespaceService, org.alfresco.service.cmr.dictionary.DictionaryService, org.alfresco.repo.domain.qname.QNameDAO, org.alfresco.repo.domain.node.NodeDAO) */ @Override - public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, Map functionArgs, FunctionEvaluationContext functionContext) + public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { Function function = getFunction(); if(function != null) @@ -71,7 +71,7 @@ public class DBFunctionalConstraint extends BaseFunctionalConstraint implements if(function instanceof DBQueryBuilderComponent) { DBQueryBuilderComponent dbQueryBuilderComponent = (DBQueryBuilderComponent)function; - dbQueryBuilderComponent.prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectors, getFunctionArguments(), functionContext); + dbQueryBuilderComponent.prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectors, getFunctionArguments(), functionContext, supportBooleanFloatAndDouble); } else { diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBOrdering.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBOrdering.java index 4a0f0214a1..8cfb9bdcd6 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBOrdering.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBOrdering.java @@ -71,7 +71,7 @@ public class DBOrdering extends BaseOrdering implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { if (getColumn().getFunction().getName().equals(PropertyAccessor.NAME)) { @@ -154,7 +154,7 @@ public class DBOrdering extends BaseOrdering implements DBQueryBuilderComponent propertySupport.setPropertyQName(propertyQName); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.ORDER); propertySupport.setLeftOuter(true); builderSupport = propertySupport; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQuery.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQuery.java index 586cca5324..cea8690450 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQuery.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQuery.java @@ -194,7 +194,7 @@ public class DBQuery extends BaseQuery implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { selectorGroup = selectors; if (selectorGroup != null) @@ -204,7 +204,7 @@ public class DBQuery extends BaseQuery implements DBQueryBuilderComponent Selector current = getSource().getSelector(selector); if (current instanceof DBQueryBuilderComponent) { - ((DBQueryBuilderComponent) current).prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectorGroup, functionArgs, functionContext); + ((DBQueryBuilderComponent) current).prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectorGroup, functionArgs, functionContext, supportBooleanFloatAndDouble); } else { @@ -217,7 +217,7 @@ public class DBQuery extends BaseQuery implements DBQueryBuilderComponent { if (getConstraint() instanceof DBQueryBuilderComponent) { - ((DBQueryBuilderComponent) getConstraint()).prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectorGroup, functionArgs, functionContext); + ((DBQueryBuilderComponent) getConstraint()).prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectorGroup, functionArgs, functionContext, supportBooleanFloatAndDouble); } else { @@ -231,7 +231,7 @@ public class DBQuery extends BaseQuery implements DBQueryBuilderComponent { if(ordering instanceof DBQueryBuilderComponent) { - ((DBQueryBuilderComponent) ordering).prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectorGroup, functionArgs, functionContext); + ((DBQueryBuilderComponent) ordering).prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectorGroup, functionArgs, functionContext, supportBooleanFloatAndDouble); } else { @@ -744,7 +744,7 @@ public class DBQuery extends BaseQuery implements DBQueryBuilderComponent * @param propertyQName QName * @return String */ - public static String getFieldName(DictionaryService dictionaryService, QName propertyQName) + public static String getFieldName(DictionaryService dictionaryService, QName propertyQName, boolean supportBooleanFloatAndDouble) { if (propertyQName.equals(ContentModel.PROP_CREATED)) { @@ -818,6 +818,18 @@ public class DBQuery extends BaseQuery implements DBQueryBuilderComponent { return "string_value"; } + else if (dataType.getName().equals(DataTypeDefinition.BOOLEAN) && supportBooleanFloatAndDouble) + { + return "boolean_value"; + } + else if (dataType.getName().equals(DataTypeDefinition.FLOAT) && supportBooleanFloatAndDouble) + { + return "float_value"; + } + else if (dataType.getName().equals(DataTypeDefinition.DOUBLE) && supportBooleanFloatAndDouble) + { + return "double_value"; + } else { throw new QueryModelException("Unsupported property type " + dataType.getName()); diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQueryBuilderComponent.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQueryBuilderComponent.java index 438324214a..19a798d567 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQueryBuilderComponent.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQueryBuilderComponent.java @@ -58,7 +58,7 @@ public interface DBQueryBuilderComponent * @param functionArgs Map * @param functionContext FunctionEvaluationContext */ - public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, Map functionArgs, FunctionEvaluationContext functionContext); + public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble); /** * Build the Set of required joins diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQueryBuilderPredicatePartCommand.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQueryBuilderPredicatePartCommand.java index 4cd9d76d6c..25e206a5e3 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQueryBuilderPredicatePartCommand.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQueryBuilderPredicatePartCommand.java @@ -34,8 +34,44 @@ public class DBQueryBuilderPredicatePartCommand Object[] values; String alias; + + private DBQueryBuilderJoinCommandType joinCommandType; private LuceneFunction function; + + private Long qnameId; + + /** + * @return the qnameId + */ + public Long getQnameId() + { + return qnameId; + } + + /** + * @param qnameId the qnameId to set + */ + public void setQnameId(Long qnameId) + { + this.qnameId = qnameId; + } + + /** + * @return the joinCommandType + */ + public String getJoinCommandType() + { + return joinCommandType.toString(); + } + + /** + * @param joinCommandType the joinCommandType to set + */ + public void setJoinCommandType(DBQueryBuilderJoinCommandType joinCommandType) + { + this.joinCommandType = joinCommandType; + } /** * @return the type diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQueryEngine.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQueryEngine.java index 187a49b911..7db08de01c 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQueryEngine.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBQueryEngine.java @@ -27,6 +27,7 @@ import java.util.Map; import java.util.Set; import org.alfresco.model.ContentModel; +import org.alfresco.repo.admin.patch.OptionalPatchApplicationCheckBootstrapBean; import org.alfresco.repo.domain.node.Node; import org.alfresco.repo.domain.node.NodeDAO; import org.alfresco.repo.domain.qname.QNameDAO; @@ -69,6 +70,13 @@ public class DBQueryEngine implements QueryEngine private TenantService tenantService; + private OptionalPatchApplicationCheckBootstrapBean metadataIndexCheck2; + + public void setMetadataIndexCheck2(OptionalPatchApplicationCheckBootstrapBean metadataIndexCheck2) + { + this.metadataIndexCheck2 = metadataIndexCheck2; + } + public void setTenantService(TenantService tenantService) { this.tenantService = tenantService; @@ -184,7 +192,7 @@ public class DBQueryEngine implements QueryEngine } dbQuery.setSinceTxId(sinceTxId); - dbQuery.prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectorGroup, null, functionContext); + dbQuery.prepare(namespaceService, dictionaryService, qnameDAO, nodeDAO, tenantService, selectorGroup, null, functionContext, metadataIndexCheck2.getPatchApplied()); List nodes = template.selectList(SELECT_BY_DYNAMIC_QUERY, dbQuery); LinkedHashSet set = new LinkedHashSet(nodes.size()); for(Node node : nodes) diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBSelector.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBSelector.java index 0b85a008a3..2c0046eea7 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBSelector.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/DBSelector.java @@ -75,7 +75,7 @@ public class DBSelector extends BaseSelector implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { ClassDefinition classDef = dictionaryService.getClass(getType()); List qnameIds = new ArrayList(); diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/ParentSupport.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/ParentSupport.java index 7cf4296eaf..8b5aea78b3 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/ParentSupport.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/ParentSupport.java @@ -90,7 +90,7 @@ public class ParentSupport implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { } @@ -103,12 +103,16 @@ public class ParentSupport implements DBQueryBuilderComponent @Override public void buildJoins(Map singleJoins, List multiJoins) { - DBQueryBuilderJoinCommand join = new DBQueryBuilderJoinCommand(); - alias = "PARENT_" + multiJoins.size(); - join.setAlias(alias); - join.setOuter(leftOuter); - join.setType(DBQueryBuilderJoinCommandType.PARENT); - multiJoins.add(join); + alias = "PARENT"; + if(commandType == DBQueryBuilderPredicatePartCommandType.ORDER) + { + DBQueryBuilderJoinCommand join = new DBQueryBuilderJoinCommand(); + alias = "PARENT_" + multiJoins.size(); + join.setAlias(alias); + join.setOuter(leftOuter); + join.setType(DBQueryBuilderJoinCommandType.PARENT); + multiJoins.add(join); + } } @@ -122,6 +126,7 @@ public class ParentSupport implements DBQueryBuilderComponent public void buildPredicateCommands(List predicatePartCommands) { DBQueryBuilderPredicatePartCommand command = new DBQueryBuilderPredicatePartCommand(); + command.setJoinCommandType(DBQueryBuilderJoinCommandType.PARENT); command.setAlias(alias); command.setType(commandType); command.setValue(dbid); diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/PropertySupport.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/PropertySupport.java index 124b8c6c9b..1892c87548 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/PropertySupport.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/PropertySupport.java @@ -153,7 +153,7 @@ public class PropertySupport implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { } @@ -166,31 +166,36 @@ public class PropertySupport implements DBQueryBuilderComponent @Override public void buildJoins(Map singleJoins, List multiJoins) { - DBQueryBuilderJoinCommand join = singleJoins.get(propertyQName); - if (join == null) + // JOIN is only required for ordering - predicts are done via semi-join + alias = "PROP"; + if(commandType == DBQueryBuilderPredicatePartCommandType.ORDER) { - if (pair != null) + DBQueryBuilderJoinCommand join = singleJoins.get(propertyQName); + if (join == null) { - join = new DBQueryBuilderJoinCommand(); - alias = "PROP_" + singleJoins.size(); - join.setAlias(alias); - join.setOuter(leftOuter); - join.setType(joinCommandType); - join.setQnameId(pair.getFirst()); - singleJoins.put(propertyQName, join); + if (pair != null) + { + join = new DBQueryBuilderJoinCommand(); + alias = "PROP_" + singleJoins.size(); + join.setAlias(alias); + join.setOuter(leftOuter); + join.setType(joinCommandType); + join.setQnameId(pair.getFirst()); + singleJoins.put(propertyQName, join); + } + else + { + // there is no value for this property in the DB + } } - else + + if(join != null) { - // there is no value for this property in the DB - } - } - - if(join != null) - { - alias = join.getAlias(); - if(leftOuter) - { - join.setOuter(true); + alias = join.getAlias(); + if(leftOuter) + { + join.setOuter(true); + } } } } @@ -206,6 +211,7 @@ public class PropertySupport implements DBQueryBuilderComponent if (pair == null) { DBQueryBuilderPredicatePartCommand command = new DBQueryBuilderPredicatePartCommand(); + command.setJoinCommandType(DBQueryBuilderJoinCommandType.NODE); switch(joinCommandType) { case NODE: @@ -232,8 +238,9 @@ public class PropertySupport implements DBQueryBuilderComponent } else { - DBQueryBuilderPredicatePartCommand command = new DBQueryBuilderPredicatePartCommand(); + command.setJoinCommandType(joinCommandType); + command.setQnameId(pair.getFirst()); switch(joinCommandType) { case NODE: diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/TypeSupport.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/TypeSupport.java index a8f409d928..df1ad34415 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/TypeSupport.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/TypeSupport.java @@ -78,7 +78,7 @@ public class TypeSupport implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { } @@ -105,6 +105,7 @@ public class TypeSupport implements DBQueryBuilderComponent public void buildPredicateCommands(List predicatePartCommands) { DBQueryBuilderPredicatePartCommand command = new DBQueryBuilderPredicatePartCommand(); + command.setJoinCommandType(DBQueryBuilderJoinCommandType.NODE); command.setAlias("node"); command.setFieldName("type_qname_id"); command.setType(commandType); diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/UUIDSupport.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/UUIDSupport.java index 1a23e9f3a7..6645e1f2a4 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/UUIDSupport.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/UUIDSupport.java @@ -104,7 +104,7 @@ public class UUIDSupport implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { } @@ -125,6 +125,7 @@ public class UUIDSupport implements DBQueryBuilderComponent public void buildPredicateCommands(List predicatePartCommands) { DBQueryBuilderPredicatePartCommand command = new DBQueryBuilderPredicatePartCommand(); + command.setJoinCommandType(DBQueryBuilderJoinCommandType.NODE); command.setAlias("node"); command.setType(commandType); command.setFieldName("uuid"); diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBChild.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBChild.java index 787424c63c..2102b43fa5 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBChild.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBChild.java @@ -61,7 +61,7 @@ public class DBChild extends Child implements DBQueryBuilderComponent * @see org.alfresco.repo.search.impl.querymodel.impl.db.DBQueryBuilderComponent#prepare(org.alfresco.service.namespace.NamespaceService, org.alfresco.service.cmr.dictionary.DictionaryService, org.alfresco.repo.domain.qname.QNameDAO, org.alfresco.repo.domain.node.NodeDAO) */ @Override - public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, Map functionArgs, FunctionEvaluationContext functionContext) + public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { Argument argument = functionArgs.get(ARG_PARENT); diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBDescendant.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBDescendant.java index dda39a9792..9cc701f888 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBDescendant.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBDescendant.java @@ -63,7 +63,7 @@ public class DBDescendant extends Descendant implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { throw new QueryModelException("Descendant/IN_TREE() is unsupported"); } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBEquals.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBEquals.java index 9c3db66e1e..e4e688c891 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBEquals.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBEquals.java @@ -72,7 +72,7 @@ public class DBEquals extends Equals implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { setPropertyAndStaticArguments(functionArgs); Serializable staticValue = getStaticArgument().getValue(functionContext); @@ -150,7 +150,7 @@ public class DBEquals extends Equals implements DBQueryBuilderComponent propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName)); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EQUALS); propertySupport.setLuceneFunction(functionContext.getLuceneFunction(getFunctionArgument())); builderSupport = propertySupport; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBExists.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBExists.java index ee39e20411..1b99436007 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBExists.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBExists.java @@ -73,7 +73,7 @@ public class DBExists extends Exists implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { PropertyArgument propertyArgument = (PropertyArgument) functionArgs.get(ARG_PROPERTY); Argument inverseArgument = functionArgs.get(ARG_NOT); @@ -186,7 +186,7 @@ public class DBExists extends Exists implements DBQueryBuilderComponent propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName)); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); if ((not != null) && (not.equals(Boolean.TRUE))) { propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEXISTS); diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSFuzzyTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSFuzzyTerm.java index 2e8dafae09..097bd8f097 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSFuzzyTerm.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSFuzzyTerm.java @@ -57,7 +57,7 @@ public class DBFTSFuzzyTerm extends FTSFuzzyTerm implements DBQueryBuilderCompo */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { throw new QueryModelException("Fuzzy term is unsupported"); } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSPhrase.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSPhrase.java index 5ae2c6cf94..ab8b390eb9 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSPhrase.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSPhrase.java @@ -73,7 +73,7 @@ public class DBFTSPhrase extends FTSPhrase implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { Argument argument = functionArgs.get(ARG_PHRASE); @@ -135,7 +135,7 @@ public class DBFTSPhrase extends FTSPhrase implements DBQueryBuilderComponent propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName)); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EQUALS); builderSupport = propertySupport; } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSPrefixTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSPrefixTerm.java index 3c34c0828e..f35e11d295 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSPrefixTerm.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSPrefixTerm.java @@ -68,7 +68,7 @@ public class DBFTSPrefixTerm extends FTSPrefixTerm implements DBQueryBuilderComp */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { Argument argument = functionArgs.get(ARG_TERM); String term = (String) argument.getValue(functionContext); @@ -91,7 +91,7 @@ public class DBFTSPrefixTerm extends FTSPrefixTerm implements DBQueryBuilderComp propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName)); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.LIKE); builderSupport = propertySupport; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSProximity.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSProximity.java index 0de69ce6dd..4a5a7fbf71 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSProximity.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSProximity.java @@ -57,7 +57,7 @@ public class DBFTSProximity extends FTSProximity implements DBQueryBuilderCompon */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { throw new QueryModelException("Proximity term is unsupported"); } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSRange.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSRange.java index 6dace0d545..d3d8b21ff3 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSRange.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSRange.java @@ -57,7 +57,7 @@ public class DBFTSRange extends FTSRange implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { throw new QueryModelException("Range term is unsupported"); } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSTerm.java index 7e6989533c..26bdcf4e3f 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSTerm.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSTerm.java @@ -72,7 +72,7 @@ public class DBFTSTerm extends FTSTerm implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { Argument argument = functionArgs.get(ARG_TERM); String term = (String) argument.getValue(functionContext); @@ -133,7 +133,7 @@ public class DBFTSTerm extends FTSTerm implements DBQueryBuilderComponent propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName)); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EQUALS); builderSupport = propertySupport; } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSWildTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSWildTerm.java index fa5ababd09..784cd87d63 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSWildTerm.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBFTSWildTerm.java @@ -57,7 +57,7 @@ public class DBFTSWildTerm extends FTSWildTerm implements DBQueryBuilderCompone */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { throw new QueryModelException("Wild term is unsupported"); } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBGreaterThan.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBGreaterThan.java index 1a6998d904..e0e0670e5b 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBGreaterThan.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBGreaterThan.java @@ -64,7 +64,7 @@ public class DBGreaterThan extends GreaterThan implements DBQueryBuilderComponen */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { setPropertyAndStaticArguments(functionArgs); Serializable staticValue = getStaticArgument().getValue(functionContext); @@ -109,7 +109,7 @@ public class DBGreaterThan extends GreaterThan implements DBQueryBuilderComponen propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName)); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); propertySupport.setCommandType(getStaticPosition().equals(ARG_RHS) ? DBQueryBuilderPredicatePartCommandType.GT : DBQueryBuilderPredicatePartCommandType.GT.propertyAndValueReversed()); propertySupport.setLuceneFunction(functionContext.getLuceneFunction(getFunctionArgument())); builderSupport = propertySupport; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBGreaterThanOrEquals.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBGreaterThanOrEquals.java index f34bafe58d..bac9e31b69 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBGreaterThanOrEquals.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBGreaterThanOrEquals.java @@ -69,7 +69,7 @@ public class DBGreaterThanOrEquals extends GreaterThanOrEquals implements DBQuer */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { setPropertyAndStaticArguments(functionArgs); Serializable staticValue = getStaticArgument().getValue(functionContext); @@ -114,7 +114,7 @@ public class DBGreaterThanOrEquals extends GreaterThanOrEquals implements DBQuer propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName)); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); propertySupport.setCommandType(getStaticPosition().equals(ARG_RHS) ? DBQueryBuilderPredicatePartCommandType.GTE : DBQueryBuilderPredicatePartCommandType.GTE.propertyAndValueReversed()); propertySupport.setLuceneFunction(functionContext.getLuceneFunction(getFunctionArgument())); builderSupport = propertySupport; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBIn.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBIn.java index 826261b24b..09f92be5e5 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBIn.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBIn.java @@ -73,7 +73,7 @@ public class DBIn extends In implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { PropertyArgument propertyArgument = (PropertyArgument) functionArgs.get(ARG_PROPERTY); @@ -209,7 +209,7 @@ public class DBIn extends In implements DBQueryBuilderComponent propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName)); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); if((not != null) && (not.equals(Boolean.TRUE))) { propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTIN); diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLessThan.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLessThan.java index 59e5eb928a..1ce1c606b8 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLessThan.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLessThan.java @@ -69,7 +69,7 @@ public class DBLessThan extends LessThan implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { setPropertyAndStaticArguments(functionArgs); Serializable staticValue = getStaticArgument().getValue(functionContext); @@ -114,7 +114,7 @@ public class DBLessThan extends LessThan implements DBQueryBuilderComponent propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName)); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); propertySupport.setCommandType(getStaticPosition().equals(ARG_RHS) ? DBQueryBuilderPredicatePartCommandType.LT : DBQueryBuilderPredicatePartCommandType.LT.propertyAndValueReversed()); propertySupport.setLuceneFunction(functionContext.getLuceneFunction(getFunctionArgument())); builderSupport = propertySupport; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLessThanOrEquals.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLessThanOrEquals.java index c33fedae62..f0fab7b7eb 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLessThanOrEquals.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLessThanOrEquals.java @@ -64,7 +64,7 @@ public class DBLessThanOrEquals extends LessThanOrEquals implements DBQueryBuild */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { setPropertyAndStaticArguments(functionArgs); Serializable staticValue = getStaticArgument().getValue(functionContext); @@ -109,7 +109,7 @@ public class DBLessThanOrEquals extends LessThanOrEquals implements DBQueryBuild propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName)); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); propertySupport.setCommandType(getStaticPosition().equals(ARG_RHS) ? DBQueryBuilderPredicatePartCommandType.LTE : DBQueryBuilderPredicatePartCommandType.LTE.propertyAndValueReversed()); propertySupport.setLuceneFunction(functionContext.getLuceneFunction(getFunctionArgument())); builderSupport = propertySupport; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLike.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLike.java index cba4a85e50..52a662e498 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLike.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLike.java @@ -64,7 +64,7 @@ public class DBLike extends Like implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { PropertyArgument propertyArgument = (PropertyArgument) functionArgs.get(ARG_PROPERTY); Argument inverseArgument = functionArgs.get(ARG_NOT); @@ -103,7 +103,7 @@ public class DBLike extends Like implements DBQueryBuilderComponent propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName)); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); if((not != null) && (not.equals(Boolean.TRUE))) { propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTLIKE); diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLower.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLower.java index 4b39fad5af..50d5ed9f59 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLower.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBLower.java @@ -59,7 +59,7 @@ public class DBLower extends Lower implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { // TODO Auto-generated method stub diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBNotEquals.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBNotEquals.java index 72465c98fe..0485d6b62f 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBNotEquals.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBNotEquals.java @@ -67,7 +67,7 @@ public class DBNotEquals extends NotEquals implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { setPropertyAndStaticArguments(functionArgs); Serializable staticValue = getStaticArgument().getValue(functionContext); @@ -143,7 +143,7 @@ public class DBNotEquals extends NotEquals implements DBQueryBuilderComponent propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName)); propertySupport.setPair(qnameDAO.getQName(propertyQName)); propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName)); - propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName)); + propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble)); propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEQUALS); propertySupport.setLuceneFunction(functionContext.getLuceneFunction(getFunctionArgument())); builderSupport = propertySupport; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBPropertyAccessor.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBPropertyAccessor.java index b54275e08b..b0bd418b5b 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBPropertyAccessor.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBPropertyAccessor.java @@ -57,7 +57,7 @@ public class DBPropertyAccessor extends PropertyAccessor implements DBQueryBuild */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { // TODO Auto-generated method stub diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBScore.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBScore.java index efd2914c1c..a22a4744b8 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBScore.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBScore.java @@ -57,7 +57,7 @@ public class DBScore extends Score implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { // TODO Auto-generated method stub diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBUpper.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBUpper.java index ef396782a6..71bad1f387 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBUpper.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/db/functions/DBUpper.java @@ -57,7 +57,7 @@ public class DBUpper extends Upper implements DBQueryBuilderComponent */ @Override public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set selectors, - Map functionArgs, FunctionEvaluationContext functionContext) + Map functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) { // TODO Auto-generated method stub diff --git a/source/java/org/alfresco/repo/search/impl/solr/DbAftsQueryLanguage.java b/source/java/org/alfresco/repo/search/impl/solr/DbAftsQueryLanguage.java index 67856a8156..f2bf88c83c 100644 --- a/source/java/org/alfresco/repo/search/impl/solr/DbAftsQueryLanguage.java +++ b/source/java/org/alfresco/repo/search/impl/solr/DbAftsQueryLanguage.java @@ -18,10 +18,7 @@ */ package org.alfresco.repo.search.impl.solr; -import org.alfresco.repo.admin.patch.AppliedPatch; import org.alfresco.repo.admin.patch.OptionalPatchApplicationCheckBootstrapBean; -import org.alfresco.repo.admin.patch.PatchService; -import org.alfresco.repo.search.IndexerAndSearcher; import org.alfresco.repo.search.impl.lucene.ADMLuceneSearcherImpl; import org.alfresco.repo.search.impl.lucene.AbstractAlfrescoFtsQueryLanguage; import org.alfresco.repo.search.impl.querymodel.QueryModelException; @@ -30,7 +27,6 @@ import org.alfresco.service.cmr.search.ResultSet; import org.alfresco.service.cmr.search.SearchParameters; import org.alfresco.service.namespace.NamespacePrefixResolver; import org.alfresco.service.namespace.NamespaceService; -import org.springframework.beans.factory.InitializingBean; /** * @author Andy @@ -42,18 +38,28 @@ public class DbAftsQueryLanguage extends AbstractAlfrescoFtsQueryLanguage DictionaryService dictionaryService; - OptionalPatchApplicationCheckBootstrapBean optionalPatchApplicationCheckBootstrapBean; + OptionalPatchApplicationCheckBootstrapBean metadataIndexCheck1; + OptionalPatchApplicationCheckBootstrapBean metadataIndexCheck2; + /** - * @param optionalPatchApplicationCheckBootstrapBean the optionalPatchApplicationCheckBootstrapBean to set + * @param metadataIndexCheck1 the metadataIndexCheck1 to set */ - public void setOptionalPatchApplicationCheckBootstrapBean(OptionalPatchApplicationCheckBootstrapBean optionalPatchApplicationCheckBootstrapBean) + public void setMetadataIndexCheck1(OptionalPatchApplicationCheckBootstrapBean metadataIndexCheck1) { - this.optionalPatchApplicationCheckBootstrapBean = optionalPatchApplicationCheckBootstrapBean; + this.metadataIndexCheck1 = metadataIndexCheck1; } /** - * @param namespaceService the namespaceService to set + * @param metadataIndexCheck2 the metadataIndexCheck2 to set + */ + public void setMetadataIndexCheck2(OptionalPatchApplicationCheckBootstrapBean metadataIndexCheck2) + { + this.metadataIndexCheck2 = metadataIndexCheck2; + } + + /** + ** @param namespaceService the namespaceService to set */ public void setNamespaceService(NamespaceService namespaceService) { @@ -94,7 +100,7 @@ public class DbAftsQueryLanguage extends AbstractAlfrescoFtsQueryLanguage @Override public ResultSet executeQuery(SearchParameters searchParameters, ADMLuceneSearcherImpl admLuceneSearcher) { - if(optionalPatchApplicationCheckBootstrapBean.getPatchApplied()) + if(metadataIndexCheck1.getPatchApplied()) { return super.executeQuery(searchParameters, admLuceneSearcher); } diff --git a/source/java/org/alfresco/repo/search/impl/solr/DbCmisQueryLanguage.java b/source/java/org/alfresco/repo/search/impl/solr/DbCmisQueryLanguage.java index 25adf78c44..f164c0ca40 100644 --- a/source/java/org/alfresco/repo/search/impl/solr/DbCmisQueryLanguage.java +++ b/source/java/org/alfresco/repo/search/impl/solr/DbCmisQueryLanguage.java @@ -50,14 +50,27 @@ public class DbCmisQueryLanguage extends AbstractLuceneQueryLanguage private CMISDictionaryService cmisDictionaryService; - OptionalPatchApplicationCheckBootstrapBean optionalPatchApplicationCheckBootstrapBean; + OptionalPatchApplicationCheckBootstrapBean metadataIndexCheck1; + OptionalPatchApplicationCheckBootstrapBean metadataIndexCheck2; + + + /** - * @param optionalPatchApplicationCheckBootstrapBean the optionalPatchApplicationCheckBootstrapBean to set + * @param metadataIndexCheck1 the metadataIndexCheck1 to set */ - public void setOptionalPatchApplicationCheckBootstrapBean(OptionalPatchApplicationCheckBootstrapBean optionalPatchApplicationCheckBootstrapBean) + public void setMetadataIndexCheck1(OptionalPatchApplicationCheckBootstrapBean metadataIndexCheck1) { - this.optionalPatchApplicationCheckBootstrapBean = optionalPatchApplicationCheckBootstrapBean; + this.metadataIndexCheck1 = metadataIndexCheck1; + } + + + /** + * @param metadataIndexCheck2 the metadataIndexCheck2 to set + */ + public void setMetadataIndexCheck2(OptionalPatchApplicationCheckBootstrapBean metadataIndexCheck2) + { + this.metadataIndexCheck2 = metadataIndexCheck2; } @@ -90,7 +103,7 @@ public class DbCmisQueryLanguage extends AbstractLuceneQueryLanguage @Override public ResultSet executeQuery(SearchParameters searchParameters, ADMLuceneSearcherImpl admLuceneSearcher) { - if(optionalPatchApplicationCheckBootstrapBean.getPatchApplied()) + if(metadataIndexCheck1.getPatchApplied()) { return executeQueryImpl(searchParameters, admLuceneSearcher); }