Michael Blow has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/2480
Change subject: [ASTERIXDB-2330][*DB][RT] Add IFunctionRegistrant for dynamic function registration ...................................................................... [ASTERIXDB-2330][*DB][RT] Add IFunctionRegistrant for dynamic function registration - user model changes: no - storage format changes: no - interface changes: yes Details: - Look for IFunctionRegistrant service instances at runtime, and use these to dynamically register non-core functions with *DB - Extract fuzzyjoin functions from core runtime Change-Id: Ia88590280cbf476e08b905d9e1d62c68667a2569 --- M asterixdb/asterix-app/pom.xml M asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/NullMissingTest.java M asterixdb/asterix-fuzzyjoin/pom.xml A asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/FuzzyJoinFunctionRegistrant.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceContainsEvaluator.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityFiltersCache.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedCheckEvaluator.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedEvaluator.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/CountHashedGramTokensDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/CountHashedWordTokensDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceCheckDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceContainsDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceListIsFilterableDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableEvaluator.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/GramTokensDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashedGramTokensDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashedWordTokensDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenJaccardDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardCheckDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardPrefixCheckDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardPrefixDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardSortedCheckDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardSortedDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialIntersectDescriptor.java R asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/WordTokensDescriptor.java A asterixdb/asterix-fuzzyjoin/src/main/resources/META-INF/services/org.apache.asterix.om.functions.IFunctionRegistrant A asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionCollection.java A asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionRegistrant.java R asterixdb/asterix-om/src/main/java/org/apache/asterix/runtime/evaluators/base/AbstractScalarFunctionDynamicDescriptor.java M asterixdb/asterix-runtime/pom.xml M asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java M asterixdb/asterix-server/pom.xml 44 files changed, 220 insertions(+), 176 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/80/2480/1 diff --git a/asterixdb/asterix-app/pom.xml b/asterixdb/asterix-app/pom.xml index e75ad42..b51d499 100644 --- a/asterixdb/asterix-app/pom.xml +++ b/asterixdb/asterix-app/pom.xml @@ -152,6 +152,7 @@ </ignoredUsedUndeclaredDependencies> <usedDependencies combine.children="append"> <usedDependency>org.apache.hadoop:hadoop-common</usedDependency> + <usedDependency>org.apache.asterix:asterix-fuzzyjoin</usedDependency> </usedDependencies> <ignoredUnusedDeclaredDependencies> <ignoredUnusedDeclaredDependency>org.apache.asterix:asterix-external-data:zip:*</ignoredUnusedDeclaredDependency> @@ -643,5 +644,11 @@ <artifactId>log4j-jul</artifactId> <version>2.10.0</version> </dependency> + <dependency> + <groupId>org.apache.asterix</groupId> + <artifactId>asterix-fuzzyjoin</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> </dependencies> </project> diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/NullMissingTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/NullMissingTest.java index 3b33868..5bda29f 100644 --- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/NullMissingTest.java +++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/NullMissingTest.java @@ -55,8 +55,8 @@ ++testedFunctions; } } - // 208 is the current number of functions with generated code. - Assert.assertTrue(testedFunctions >= 208); + // 217 is the current number of functions with generated code. + Assert.assertTrue("expected >= 217 generated functions to be tested, but was " + testedFunctions, testedFunctions >= 217); } private void testFunction(IFunctionDescriptorFactory funcFactory) throws Exception { diff --git a/asterixdb/asterix-fuzzyjoin/pom.xml b/asterixdb/asterix-fuzzyjoin/pom.xml index 236bcc7..8056cdf 100644 --- a/asterixdb/asterix-fuzzyjoin/pom.xml +++ b/asterixdb/asterix-fuzzyjoin/pom.xml @@ -23,7 +23,6 @@ <groupId>org.apache.asterix</groupId> <version>0.9.4-SNAPSHOT</version> </parent> - <groupId>org.apache.asterix</groupId> <artifactId>asterix-fuzzyjoin</artifactId> <licenses> @@ -42,6 +41,23 @@ <build> <plugins> <plugin> + <groupId>org.apache.asterix</groupId> + <artifactId>asterix-evaluator-generator-maven-plugin</artifactId> + <version>${project.version}</version> + <configuration> + <evaluatorPackagePrefix>org.apache.asterix.runtime.evaluators</evaluatorPackagePrefix> + </configuration> + <executions> + <execution> + <id>generate-evaluator</id> + <phase>process-classes</phase> + <goals> + <goal>generate-evaluator</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <executions> @@ -52,17 +68,6 @@ <phase>test-compile</phase> </execution> </executions> - <configuration> - <outputDirectory>${basedir}/target</outputDirectory> - <includes> - <include>**/*.class</include> - <include>**/*.txt</include> - <include>**/README*</include> - <include>**/NOTICE*</include> - <include>**/LICENSE*</include> - <include>**/DEPENDENCIES*</include> - </includes> - </configuration> </plugin> <plugin> <groupId>org.apache.rat</groupId> @@ -102,6 +107,41 @@ <groupId>org.apache.hyracks</groupId> <artifactId>hyracks-data-std</artifactId> </dependency> + <dependency> + <groupId>org.apache.asterix</groupId> + <artifactId>asterix-om</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.asterix</groupId> + <artifactId>asterix-runtime</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.hyracks</groupId> + <artifactId>algebricks-common</artifactId> + </dependency> + <dependency> + <groupId>org.apache.hyracks</groupId> + <artifactId>algebricks-core</artifactId> + </dependency> + <dependency> + <groupId>org.apache.hyracks</groupId> + <artifactId>hyracks-storage-am-lsm-invertedindex</artifactId> + </dependency> + <dependency> + <groupId>org.apache.hyracks</groupId> + <artifactId>algebricks-runtime</artifactId> + </dependency> + <dependency> + <groupId>org.apache.asterix</groupId> + <artifactId>asterix-common</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.hyracks</groupId> + <artifactId>hyracks-dataflow-common</artifactId> + </dependency> </dependencies> </project> diff --git a/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/FuzzyJoinFunctionRegistrant.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/FuzzyJoinFunctionRegistrant.java new file mode 100644 index 0000000..35d8727 --- /dev/null +++ b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/FuzzyJoinFunctionRegistrant.java @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.asterix.runtime; + +import org.apache.asterix.om.functions.IFunctionCollection; +import org.apache.asterix.om.functions.IFunctionRegistrant; +import org.apache.asterix.runtime.evaluators.functions.CountHashedGramTokensDescriptor; +import org.apache.asterix.runtime.evaluators.functions.CountHashedWordTokensDescriptor; +import org.apache.asterix.runtime.evaluators.functions.EditDistanceCheckDescriptor; +import org.apache.asterix.runtime.evaluators.functions.EditDistanceContainsDescriptor; +import org.apache.asterix.runtime.evaluators.functions.EditDistanceDescriptor; +import org.apache.asterix.runtime.evaluators.functions.EditDistanceListIsFilterableDescriptor; +import org.apache.asterix.runtime.evaluators.functions.EditDistanceStringIsFilterableDescriptor; +import org.apache.asterix.runtime.evaluators.functions.GramTokensDescriptor; +import org.apache.asterix.runtime.evaluators.functions.HashedGramTokensDescriptor; +import org.apache.asterix.runtime.evaluators.functions.HashedWordTokensDescriptor; +import org.apache.asterix.runtime.evaluators.functions.PrefixLenJaccardDescriptor; +import org.apache.asterix.runtime.evaluators.functions.SimilarityJaccardCheckDescriptor; +import org.apache.asterix.runtime.evaluators.functions.SimilarityJaccardDescriptor; +import org.apache.asterix.runtime.evaluators.functions.SimilarityJaccardPrefixCheckDescriptor; +import org.apache.asterix.runtime.evaluators.functions.SimilarityJaccardPrefixDescriptor; +import org.apache.asterix.runtime.evaluators.functions.SimilarityJaccardSortedCheckDescriptor; +import org.apache.asterix.runtime.evaluators.functions.SimilarityJaccardSortedDescriptor; +import org.apache.asterix.runtime.evaluators.functions.SpatialIntersectDescriptor; +import org.apache.asterix.runtime.evaluators.functions.WordTokensDescriptor; + +public class FuzzyJoinFunctionRegistrant implements IFunctionRegistrant { + @Override + public void register(IFunctionCollection fc) { + // TODO: decide how should we deal these two weird functions as + // the number of arguments of the function depend on the first few arguments. + fc.add(SimilarityJaccardPrefixDescriptor.FACTORY); + fc.add(SimilarityJaccardPrefixCheckDescriptor.FACTORY); + + // Spatial + fc.addGenerated(SpatialIntersectDescriptor.FACTORY); + + // fuzzyjoin function + fc.addGenerated(PrefixLenJaccardDescriptor.FACTORY); + fc.addGenerated(WordTokensDescriptor.FACTORY); + fc.addGenerated(HashedWordTokensDescriptor.FACTORY); + fc.addGenerated(CountHashedWordTokensDescriptor.FACTORY); + fc.addGenerated(GramTokensDescriptor.FACTORY); + fc.addGenerated(HashedGramTokensDescriptor.FACTORY); + fc.addGenerated(CountHashedGramTokensDescriptor.FACTORY); + fc.addGenerated(EditDistanceDescriptor.FACTORY); + fc.addGenerated(EditDistanceCheckDescriptor.FACTORY); + fc.addGenerated(EditDistanceStringIsFilterableDescriptor.FACTORY); + fc.addGenerated(EditDistanceListIsFilterableDescriptor.FACTORY); + fc.addGenerated(EditDistanceContainsDescriptor.FACTORY); + fc.addGenerated(SimilarityJaccardDescriptor.FACTORY); + fc.addGenerated(SimilarityJaccardCheckDescriptor.FACTORY); + fc.addGenerated(SimilarityJaccardSortedDescriptor.FACTORY); + fc.addGenerated(SimilarityJaccardSortedCheckDescriptor.FACTORY); + } +} diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceCheckEvaluator.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceContainsEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceContainsEvaluator.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceContainsEvaluator.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceContainsEvaluator.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/EditDistanceEvaluator.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/GramTokensEvaluator.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityFiltersCache.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityFiltersCache.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityFiltersCache.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityFiltersCache.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardCheckEvaluator.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardPrefixEvaluator.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedCheckEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedCheckEvaluator.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedCheckEvaluator.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedCheckEvaluator.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedEvaluator.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedEvaluator.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardSortedEvaluator.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/common/WordTokensEvaluator.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CountHashedGramTokensDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/CountHashedGramTokensDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CountHashedGramTokensDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/CountHashedGramTokensDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CountHashedWordTokensDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/CountHashedWordTokensDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CountHashedWordTokensDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/CountHashedWordTokensDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceCheckDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceCheckDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceCheckDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceCheckDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceContainsDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceContainsDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceContainsDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceContainsDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceListIsFilterableDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceListIsFilterableDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceListIsFilterableDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceListIsFilterableDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableEvaluator.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableEvaluator.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableEvaluator.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/EditDistanceStringIsFilterableEvaluator.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/GramTokensDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/GramTokensDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/GramTokensDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/GramTokensDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashedGramTokensDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashedGramTokensDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashedGramTokensDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashedGramTokensDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashedWordTokensDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashedWordTokensDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashedWordTokensDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashedWordTokensDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenJaccardDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenJaccardDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenJaccardDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/PrefixLenJaccardDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardCheckDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardCheckDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardCheckDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardCheckDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardPrefixCheckDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardPrefixCheckDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardPrefixCheckDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardPrefixCheckDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardPrefixDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardPrefixDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardPrefixDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardPrefixDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardSortedCheckDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardSortedCheckDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardSortedCheckDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardSortedCheckDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardSortedDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardSortedDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardSortedDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SimilarityJaccardSortedDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialIntersectDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialIntersectDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialIntersectDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/SpatialIntersectDescriptor.java diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/WordTokensDescriptor.java b/asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/WordTokensDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/WordTokensDescriptor.java rename to asterixdb/asterix-fuzzyjoin/src/main/java/org/apache/asterix/runtime/evaluators/functions/WordTokensDescriptor.java diff --git a/asterixdb/asterix-fuzzyjoin/src/main/resources/META-INF/services/org.apache.asterix.om.functions.IFunctionRegistrant b/asterixdb/asterix-fuzzyjoin/src/main/resources/META-INF/services/org.apache.asterix.om.functions.IFunctionRegistrant new file mode 100644 index 0000000..c981de2 --- /dev/null +++ b/asterixdb/asterix-fuzzyjoin/src/main/resources/META-INF/services/org.apache.asterix.om.functions.IFunctionRegistrant @@ -0,0 +1,20 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +org.apache.asterix.runtime.FuzzyJoinFunctionRegistrant diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionCollection.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionCollection.java new file mode 100644 index 0000000..90c742c --- /dev/null +++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionCollection.java @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.asterix.om.functions; + +import java.io.Serializable; + +public interface IFunctionCollection extends Serializable { + void add(IFunctionDescriptorFactory descriptorFactory); + + void addGenerated(IFunctionDescriptorFactory descriptorFactory); +} diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionRegistrant.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionRegistrant.java new file mode 100644 index 0000000..2fa83fc --- /dev/null +++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionRegistrant.java @@ -0,0 +1,25 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.asterix.om.functions; + +import java.io.Serializable; + +public interface IFunctionRegistrant extends Serializable { + void register(IFunctionCollection collection); +} diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/base/AbstractScalarFunctionDynamicDescriptor.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/runtime/evaluators/base/AbstractScalarFunctionDynamicDescriptor.java similarity index 100% rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/base/AbstractScalarFunctionDynamicDescriptor.java rename to asterixdb/asterix-om/src/main/java/org/apache/asterix/runtime/evaluators/base/AbstractScalarFunctionDynamicDescriptor.java diff --git a/asterixdb/asterix-runtime/pom.xml b/asterixdb/asterix-runtime/pom.xml index 239b01a..22d1bfc 100644 --- a/asterixdb/asterix-runtime/pom.xml +++ b/asterixdb/asterix-runtime/pom.xml @@ -92,12 +92,6 @@ <scope>compile</scope> </dependency> <dependency> - <groupId>org.apache.asterix</groupId> - <artifactId>asterix-fuzzyjoin</artifactId> - <version>${project.version}</version> - <scope>compile</scope> - </dependency> - <dependency> <groupId>org.apache.hyracks</groupId> <artifactId>hyracks-storage-am-btree</artifactId> </dependency> diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java index df09ca6..a037af2 100644 --- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java +++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java @@ -22,9 +22,12 @@ import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; +import java.util.ServiceLoader; import org.apache.asterix.common.utils.CodeGenHelper; +import org.apache.asterix.om.functions.IFunctionCollection; import org.apache.asterix.om.functions.IFunctionDescriptorFactory; +import org.apache.asterix.om.functions.IFunctionRegistrant; import org.apache.asterix.runtime.aggregates.collections.FirstElementAggregateDescriptor; import org.apache.asterix.runtime.aggregates.collections.ListifyAggregateDescriptor; import org.apache.asterix.runtime.aggregates.collections.LocalFirstElementAggregateDescriptor; @@ -133,136 +136,7 @@ import org.apache.asterix.runtime.evaluators.constructors.OpenRecordConstructorDescriptor; import org.apache.asterix.runtime.evaluators.constructors.OrderedListConstructorDescriptor; import org.apache.asterix.runtime.evaluators.constructors.UnorderedListConstructorDescriptor; -import org.apache.asterix.runtime.evaluators.functions.AndDescriptor; -import org.apache.asterix.runtime.evaluators.functions.AnyCollectionMemberDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CastTypeDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CastTypeLaxDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CheckUnknownDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CodePointToStringDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CountHashedGramTokensDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CountHashedWordTokensDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CreateCircleDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CreateLineDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CreateMBRDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CreatePointDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CreatePolygonDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CreateQueryUIDDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CreateRectangleDescriptor; -import org.apache.asterix.runtime.evaluators.functions.CreateUUIDDescriptor; -import org.apache.asterix.runtime.evaluators.functions.DeepEqualityDescriptor; -import org.apache.asterix.runtime.evaluators.functions.EditDistanceCheckDescriptor; -import org.apache.asterix.runtime.evaluators.functions.EditDistanceContainsDescriptor; -import org.apache.asterix.runtime.evaluators.functions.EditDistanceDescriptor; -import org.apache.asterix.runtime.evaluators.functions.EditDistanceListIsFilterableDescriptor; -import org.apache.asterix.runtime.evaluators.functions.EditDistanceStringIsFilterableDescriptor; -import org.apache.asterix.runtime.evaluators.functions.FullTextContainsDescriptor; -import org.apache.asterix.runtime.evaluators.functions.FullTextContainsWithoutOptionDescriptor; -import org.apache.asterix.runtime.evaluators.functions.GetItemDescriptor; -import org.apache.asterix.runtime.evaluators.functions.GetJobParameterByNameDescriptor; -import org.apache.asterix.runtime.evaluators.functions.GramTokensDescriptor; -import org.apache.asterix.runtime.evaluators.functions.HashedGramTokensDescriptor; -import org.apache.asterix.runtime.evaluators.functions.HashedWordTokensDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IfInfDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IfNanOrInfDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IfMissingDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IfMissingOrNullDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IfNanDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IfNullDescriptor; -import org.apache.asterix.runtime.evaluators.functions.InjectFailureDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IsArrayDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IsAtomicDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IsBooleanDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IsMissingDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IsNullDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IsNumberDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IsObjectDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IsStringDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IsSystemNullDescriptor; -import org.apache.asterix.runtime.evaluators.functions.IsUnknownDescriptor; -import org.apache.asterix.runtime.evaluators.functions.LenDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NotDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericACosDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericASinDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericATan2Descriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericATanDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericAbsDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericAddDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericCaretDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericCeilingDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericCosDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericDivideDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericExpDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericFloorDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericLnDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericLogDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericModuloDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericMultiplyDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericRoundDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericRoundHalfToEven2Descriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericRoundHalfToEvenDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericSignDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericSinDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericSqrtDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericSubDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericTanDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericTruncDescriptor; -import org.apache.asterix.runtime.evaluators.functions.NumericUnaryMinusDescriptor; -import org.apache.asterix.runtime.evaluators.functions.OrDescriptor; -import org.apache.asterix.runtime.evaluators.functions.PrefixLenJaccardDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SimilarityJaccardCheckDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SimilarityJaccardDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SimilarityJaccardPrefixCheckDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SimilarityJaccardPrefixDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SimilarityJaccardSortedCheckDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SimilarityJaccardSortedDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SleepDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SpatialAreaDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SpatialCellDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SpatialDistanceDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SpatialIntersectDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringConcatDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringContainsDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringEndsWithDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringEqualDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringInitCapDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringJoinDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringLTrim2Descriptor; -import org.apache.asterix.runtime.evaluators.functions.StringLTrimDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringLengthDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringLikeDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringLowerCaseDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringPositionDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringRTrim2Descriptor; -import org.apache.asterix.runtime.evaluators.functions.StringRTrimDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringRegExpContainsDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringRegExpContainsWithFlagDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringRegExpLikeDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringRegExpLikeWithFlagDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringRegExpPositionDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringRegExpPositionWithFlagDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringRegExpReplaceDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringRegExpReplaceWithFlagsDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringRepeatDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringReplaceDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringReplaceWithLimitDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringSplitDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringStartsWithDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringToCodePointDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringTrim2Descriptor; -import org.apache.asterix.runtime.evaluators.functions.StringTrimDescriptor; -import org.apache.asterix.runtime.evaluators.functions.StringUpperCaseDescriptor; -import org.apache.asterix.runtime.evaluators.functions.Substring2Descriptor; -import org.apache.asterix.runtime.evaluators.functions.SubstringAfterDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SubstringBeforeDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SubstringDescriptor; -import org.apache.asterix.runtime.evaluators.functions.SwitchCaseDescriptor; -import org.apache.asterix.runtime.evaluators.functions.ToBigIntDescriptor; -import org.apache.asterix.runtime.evaluators.functions.ToBooleanDescriptor; -import org.apache.asterix.runtime.evaluators.functions.ToDoubleDescriptor; -import org.apache.asterix.runtime.evaluators.functions.ToNumberDescriptor; -import org.apache.asterix.runtime.evaluators.functions.ToStringDescriptor; -import org.apache.asterix.runtime.evaluators.functions.UUIDDescriptor; -import org.apache.asterix.runtime.evaluators.functions.WordTokensDescriptor; +import org.apache.asterix.runtime.evaluators.functions.*; import org.apache.asterix.runtime.evaluators.functions.binary.BinaryConcatDescriptor; import org.apache.asterix.runtime.evaluators.functions.binary.BinaryLengthDescriptor; import org.apache.asterix.runtime.evaluators.functions.binary.FindBinaryDescriptor; @@ -343,16 +217,18 @@ /** * This class holds a list of function descriptor factories. */ -public final class FunctionCollection { +public final class FunctionCollection implements IFunctionCollection { private static final String FACTORY = "FACTORY"; - private final List<IFunctionDescriptorFactory> descriptorFactories = new ArrayList<>(); + private final ArrayList<IFunctionDescriptorFactory> descriptorFactories = new ArrayList<>(); + @Override public void add(IFunctionDescriptorFactory descriptorFactory) { descriptorFactories.add(descriptorFactory); } + @Override public void addGenerated(IFunctionDescriptorFactory descriptorFactory) { add(getGeneratedFunctionDescriptorFactory(descriptorFactory.createFunctionDescriptor().getClass())); } @@ -472,11 +348,6 @@ fc.add(CurrentDateDescriptor.FACTORY); fc.add(CurrentTimeDescriptor.FACTORY); fc.add(CurrentDateTimeDescriptor.FACTORY); - - // TODO: decide how should we deal these two weird functions as - // the number of arguments of the function depend on the first few arguments. - fc.add(SimilarityJaccardPrefixDescriptor.FACTORY); - fc.add(SimilarityJaccardPrefixCheckDescriptor.FACTORY); // functions that need generated class for null-handling. @@ -614,7 +485,6 @@ fc.addGenerated(CreateRectangleDescriptor.FACTORY); fc.addGenerated(SpatialAreaDescriptor.FACTORY); fc.addGenerated(SpatialDistanceDescriptor.FACTORY); - fc.addGenerated(SpatialIntersectDescriptor.FACTORY); fc.addGenerated(CreateMBRDescriptor.FACTORY); fc.addGenerated(SpatialCellDescriptor.FACTORY); fc.addGenerated(PointXCoordinateAccessor.FACTORY); @@ -622,24 +492,6 @@ fc.addGenerated(CircleRadiusAccessor.FACTORY); fc.addGenerated(CircleCenterAccessor.FACTORY); fc.addGenerated(LineRectanglePolygonAccessor.FACTORY); - - // fuzzyjoin function - fc.addGenerated(PrefixLenJaccardDescriptor.FACTORY); - fc.addGenerated(WordTokensDescriptor.FACTORY); - fc.addGenerated(HashedWordTokensDescriptor.FACTORY); - fc.addGenerated(CountHashedWordTokensDescriptor.FACTORY); - fc.addGenerated(GramTokensDescriptor.FACTORY); - fc.addGenerated(HashedGramTokensDescriptor.FACTORY); - fc.addGenerated(CountHashedGramTokensDescriptor.FACTORY); - fc.addGenerated(EditDistanceDescriptor.FACTORY); - fc.addGenerated(EditDistanceCheckDescriptor.FACTORY); - fc.addGenerated(EditDistanceStringIsFilterableDescriptor.FACTORY); - fc.addGenerated(EditDistanceListIsFilterableDescriptor.FACTORY); - fc.addGenerated(EditDistanceContainsDescriptor.FACTORY); - fc.addGenerated(SimilarityJaccardDescriptor.FACTORY); - fc.addGenerated(SimilarityJaccardCheckDescriptor.FACTORY); - fc.addGenerated(SimilarityJaccardSortedDescriptor.FACTORY); - fc.addGenerated(SimilarityJaccardSortedCheckDescriptor.FACTORY); // full-text function fc.addGenerated(FullTextContainsDescriptor.FACTORY); @@ -742,6 +594,7 @@ // Record function fc.addGenerated(RecordPairsDescriptor.FACTORY); + ServiceLoader.load(IFunctionRegistrant.class).iterator().forEachRemaining(c -> c.register(fc)); return fc; } diff --git a/asterixdb/asterix-server/pom.xml b/asterixdb/asterix-server/pom.xml index 8a28a49..7e86edc 100644 --- a/asterixdb/asterix-server/pom.xml +++ b/asterixdb/asterix-server/pom.xml @@ -371,6 +371,7 @@ <usedDependency>org.apache.hyracks:hyracks-nc-service</usedDependency> <usedDependency>org.apache.asterix:asterix-external-data</usedDependency> <usedDependency>org.codehaus.mojo.appassembler:appassembler-booter</usedDependency> + <usedDependency>org.apache.asterix:asterix-fuzzyjoin</usedDependency> </usedDependencies> </configuration> </plugin> @@ -614,5 +615,10 @@ <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> </dependency> + <dependency> + <groupId>org.apache.asterix</groupId> + <artifactId>asterix-fuzzyjoin</artifactId> + <version>${project.version}</version> + </dependency> </dependencies> </project> -- To view, visit https://asterix-gerrit.ics.uci.edu/2480 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia88590280cbf476e08b905d9e1d62c68667a2569 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael Blow <mb...@apache.org>