Merge 0.9.5/0.3.5 release branch
Change-Id: I32cf2146a35e461d522c87f67e4d8304f6f9ab11
diff --git a/asterixdb/asterix-algebra/pom.xml b/asterixdb/asterix-algebra/pom.xml
index 1013261..1a1af8f 100644
--- a/asterixdb/asterix-algebra/pom.xml
+++ b/asterixdb/asterix-algebra/pom.xml
@@ -40,28 +40,6 @@
<build>
<plugins>
<plugin>
- <groupId>org.apache.asterix</groupId>
- <artifactId>asterix-grammar-extension-maven-plugin</artifactId>
- <version>${project.version}</version>
- <configuration>
- <base>${project.basedir}</base>
- <gbase>../asterix-lang-aql/src/main/javacc/AQL.jj</gbase>
- <gextension>src/main/javacc/AQLPlusExtension.jj</gextension>
- <output>target/generated-resources/javacc/AQLPlus.jj</output>
- <parserClassModifier>public</parserClassModifier>
- <parserClassName>AQLPlusParser</parserClassName>
- <packageName>org.apache.asterix.aqlplus.parser</packageName>
- </configuration>
- <executions>
- <execution>
- <phase>generate-sources</phase>
- <goals>
- <goal>grammarix</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>javacc-maven-plugin</artifactId>
<version>2.6</version>
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalMergeJoinPOperator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalMergeJoinPOperator.java
new file mode 100644
index 0000000..2b96176
--- /dev/null
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/IntervalMergeJoinPOperator.java
@@ -0,0 +1,195 @@
+/*
+ * 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.algebra.operators.physical;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.asterix.optimizer.rules.util.IntervalPartitions;
+import org.apache.asterix.runtime.operators.joins.interval.IntervalMergeJoinOperatorDescriptor;
+import org.apache.asterix.runtime.operators.joins.interval.utils.IIntervalJoinUtilFactory;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.IHyracksJobBuilder;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator.JoinKind;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.AbstractJoinPOperator;
+import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.INodeDomain;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningRequirementsCoordinator;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
+import org.apache.hyracks.algebricks.core.algebra.properties.LocalOrderProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
+import org.apache.hyracks.algebricks.core.algebra.properties.OrderedPartitionedProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.PartialBroadcastOrderedFollowingProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.PartialBroadcastOrderedIntersectProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
+import org.apache.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
+import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
+import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenHelper;
+import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public class IntervalMergeJoinPOperator extends AbstractJoinPOperator {
+
+ private final List<LogicalVariable> keysLeftBranch;
+ private final List<LogicalVariable> keysRightBranch;
+ protected final IIntervalJoinUtilFactory mjcf;
+ protected final IntervalPartitions intervalPartitions;
+
+ private final int memSizeInFrames;
+
+ public IntervalMergeJoinPOperator(JoinKind kind, JoinPartitioningType partitioningType,
+ List<LogicalVariable> sideLeftOfEqualities, List<LogicalVariable> sideRightOfEqualities,
+ int memSizeInFrames, IIntervalJoinUtilFactory mjcf, IntervalPartitions intervalPartitions) {
+ super(kind, partitioningType);
+ this.keysLeftBranch = sideLeftOfEqualities;
+ this.keysRightBranch = sideRightOfEqualities;
+ this.mjcf = mjcf;
+ this.intervalPartitions = intervalPartitions;
+ this.memSizeInFrames = memSizeInFrames;
+ }
+
+ public IIntervalJoinUtilFactory getIntervalMergeJoinCheckerFactory() {
+ return mjcf;
+ }
+
+ @Override
+ public PhysicalOperatorTag getOperatorTag() {
+ return PhysicalOperatorTag.INTERVAL_MERGE_JOIN;
+ }
+
+ @Override
+ public String toString() {
+ return "INTERVAL_MERGE_JOIN" + " " + keysLeftBranch + " " + keysRightBranch;
+ }
+
+ @Override
+ public boolean isMicroOperator() {
+ return false;
+ }
+
+ @Override
+ public void computeDeliveredProperties(ILogicalOperator iop, IOptimizationContext context) {
+ List<OrderColumn> order = intervalPartitions.getLeftStartColumn();
+ IPartitioningProperty pp = new OrderedPartitionedProperty(order, null, intervalPartitions.getRangeMap());
+ List<ILocalStructuralProperty> propsLocal = new ArrayList<>();
+ propsLocal.add(new LocalOrderProperty(intervalPartitions.getLeftStartColumn()));
+ deliveredProperties = new StructuralPropertiesVector(pp, propsLocal);
+ }
+
+ @Override
+ public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator iop,
+ IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
+ StructuralPropertiesVector[] pv = new StructuralPropertiesVector[2];
+ AbstractLogicalOperator op = (AbstractLogicalOperator) iop;
+
+ //Create Left Local Order Column
+ IPartitioningProperty ppLeft = null;
+ List<ILocalStructuralProperty> ispLeft = new ArrayList<>();
+ ArrayList<OrderColumn> leftLocalOrderColumn = new ArrayList<>();
+ for (LogicalVariable v : keysLeftBranch) {
+ leftLocalOrderColumn.add(new OrderColumn(v, intervalPartitions.getLeftIntervalColumn().get(0).getOrder()));
+ }
+ ispLeft.add(new LocalOrderProperty(leftLocalOrderColumn));
+
+ //Create Right Local Order Column
+ IPartitioningProperty ppRight = null;
+ List<ILocalStructuralProperty> ispRight = new ArrayList<>();
+ ArrayList<OrderColumn> rightLocalOrderColumn = new ArrayList<>();
+ for (LogicalVariable v : keysRightBranch) {
+ rightLocalOrderColumn
+ .add(new OrderColumn(v, intervalPartitions.getRightIntervalColumn().get(0).getOrder()));
+ }
+ ispRight.add(new LocalOrderProperty(rightLocalOrderColumn));
+
+ if (op.getExecutionMode() == AbstractLogicalOperator.ExecutionMode.PARTITIONED) {
+ INodeDomain targetNodeDomain = context.getComputationNodeDomain();
+
+ RangeMap rangeMapHint = intervalPartitions.getRangeMap();
+
+ //Assign Property
+ switch (intervalPartitions.getLeftPartitioningType()) {
+ case ORDERED_PARTITIONED:
+ ppLeft = new OrderedPartitionedProperty(intervalPartitions.getLeftStartColumn(), targetNodeDomain,
+ rangeMapHint);
+ break;
+ case PARTIAL_BROADCAST_ORDERED_FOLLOWING:
+ ppLeft = new PartialBroadcastOrderedFollowingProperty(intervalPartitions.getLeftStartColumn(),
+ targetNodeDomain, rangeMapHint);
+ break;
+ case PARTIAL_BROADCAST_ORDERED_INTERSECT:
+ ppLeft = new PartialBroadcastOrderedIntersectProperty(intervalPartitions.getLeftIntervalColumn(),
+ targetNodeDomain, rangeMapHint);
+ break;
+ }
+ switch (intervalPartitions.getRightPartitioningType()) {
+ case ORDERED_PARTITIONED:
+ ppRight = new OrderedPartitionedProperty(intervalPartitions.getRightStartColumn(), targetNodeDomain,
+ rangeMapHint);
+ break;
+ case PARTIAL_BROADCAST_ORDERED_FOLLOWING:
+ ppRight = new PartialBroadcastOrderedFollowingProperty(intervalPartitions.getRightStartColumn(),
+ targetNodeDomain, rangeMapHint);
+ break;
+ case PARTIAL_BROADCAST_ORDERED_INTERSECT:
+ ppRight = new PartialBroadcastOrderedIntersectProperty(intervalPartitions.getRightIntervalColumn(),
+ targetNodeDomain, rangeMapHint);
+ break;
+ }
+ }
+ pv[0] = new StructuralPropertiesVector(ppLeft, ispLeft);
+ pv[1] = new StructuralPropertiesVector(ppRight, ispRight);
+ IPartitioningRequirementsCoordinator prc = IPartitioningRequirementsCoordinator.NO_COORDINATION;
+ return new PhysicalRequirements(pv, prc);
+ }
+
+ @Override
+ public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
+ IOperatorSchema opSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
+ throws AlgebricksException {
+ int[] keysBuild = JobGenHelper.variablesToFieldIndexes(keysLeftBranch, inputSchemas[0]);
+ int[] keysProbe = JobGenHelper.variablesToFieldIndexes(keysRightBranch, inputSchemas[1]);
+
+ IOperatorDescriptorRegistry spec = builder.getJobSpec();
+ RecordDescriptor recordDescriptor =
+ JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), opSchema, context);
+
+ IOperatorDescriptor opDesc = getIntervalOperatorDescriptor(keysBuild, keysProbe, spec, recordDescriptor, mjcf);
+ contributeOpDesc(builder, (AbstractLogicalOperator) op, opDesc);
+
+ ILogicalOperator src1 = op.getInputs().get(0).getValue();
+ builder.contributeGraphEdge(src1, 0, op, 0);
+ ILogicalOperator src2 = op.getInputs().get(1).getValue();
+ builder.contributeGraphEdge(src2, 0, op, 1);
+ }
+
+ IOperatorDescriptor getIntervalOperatorDescriptor(int[] keysBuild, int[] keysProbe,
+ IOperatorDescriptorRegistry spec, RecordDescriptor recordDescriptor, IIntervalJoinUtilFactory mjcf) {
+ return new IntervalMergeJoinOperatorDescriptor(spec, memSizeInFrames, keysBuild, keysProbe, recordDescriptor,
+ mjcf);
+ }
+}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
index 662010f..4a6735a 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
@@ -21,7 +21,7 @@
import org.apache.asterix.algebra.base.ILangExpressionToPlanTranslatorFactory;
import org.apache.asterix.algebra.base.ILangExtension;
import org.apache.asterix.lang.aql.parser.AQLParserFactory;
-import org.apache.asterix.lang.aql.rewrites.AQLRewriterFactory;
+import org.apache.asterix.lang.aql.rewrites.AqlRewriterFactory;
import org.apache.asterix.lang.aql.visitor.AQLAstPrintVisitorFactory;
import org.apache.asterix.lang.common.base.IAstPrintVisitorFactory;
import org.apache.asterix.lang.common.base.IParserFactory;
@@ -42,7 +42,7 @@
@Override
public IRewriterFactory getRewriterFactory() {
- return new AQLRewriterFactory(getParserFactory());
+ return new AqlRewriterFactory(getParserFactory());
}
@Override
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
index eb41204..ba42036 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
@@ -62,8 +62,6 @@
.add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection()));
defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildLoadFieldsRuleCollection(appCtx)));
defaultLogicalRewrites
- .add(new Pair<>(seqFirstRuleGateKeeperDfs, RuleCollections.buildFuzzyJoinRuleCollection()));
- defaultLogicalRewrites
.add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildNormalizationRuleCollection(appCtx)));
defaultLogicalRewrites
.add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection()));
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/AsterixOptimizationContext.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/AsterixOptimizationContext.java
index 20673eb..51c03eb 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/AsterixOptimizationContext.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/AsterixOptimizationContext.java
@@ -23,7 +23,6 @@
import java.util.Set;
import org.apache.asterix.metadata.declared.DataSource;
-import org.apache.asterix.metadata.declared.DataSourceId;
import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
import org.apache.hyracks.algebricks.core.algebra.expressions.IConflictingTypeResolver;
import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionEvalSizeComputer;
@@ -40,7 +39,7 @@
public final class AsterixOptimizationContext extends AlgebricksOptimizationContext {
- private final Int2ObjectMap<Set<DataSourceId>> dataSourceMap = new Int2ObjectOpenHashMap<>();
+ private final Int2ObjectMap<Set<DataSource>> dataSourceMap = new Int2ObjectOpenHashMap<>();
public AsterixOptimizationContext(int varCounter, IExpressionEvalSizeComputer expressionEvalSizeComputer,
IMergeAggregationExpressionFactory mergeAggregationExpressionFactory,
@@ -55,15 +54,15 @@
public void addDataSource(DataSource dataSource) {
byte type = dataSource.getDatasourceType();
- Set<DataSourceId> set = dataSourceMap.get(type);
+ Set<DataSource> set = dataSourceMap.get(type);
if (set == null) {
set = new HashSet<>();
dataSourceMap.put(type, set);
}
- set.add(dataSource.getId());
+ set.add(dataSource);
}
- public Int2ObjectMap<Set<DataSourceId>> getDataSourceMap() {
+ public Int2ObjectMap<Set<DataSource>> getDataSourceMap() {
return dataSourceMap;
}
}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
index 5b1ed0f..57ae375 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
@@ -30,7 +30,7 @@
import org.apache.asterix.optimizer.rules.AsterixExtractFunctionsFromJoinConditionRule;
import org.apache.asterix.optimizer.rules.AsterixInlineVariablesRule;
import org.apache.asterix.optimizer.rules.AsterixIntroduceGroupByCombinerRule;
-import org.apache.asterix.optimizer.rules.AsterixPushAssignBelowUnionAllRule;
+import org.apache.asterix.optimizer.rules.AsterixPushMapOperatorThroughUnionRule;
import org.apache.asterix.optimizer.rules.ByNameToByIndexFieldAccessRule;
import org.apache.asterix.optimizer.rules.CancelUnnestSingletonListRule;
import org.apache.asterix.optimizer.rules.CancelUnnestWithNestedListifyRule;
@@ -48,7 +48,6 @@
import org.apache.asterix.optimizer.rules.FixReplicateOperatorOutputsRule;
import org.apache.asterix.optimizer.rules.FullTextContainsParameterCheckRule;
import org.apache.asterix.optimizer.rules.FuzzyEqRule;
-import org.apache.asterix.optimizer.rules.FuzzyJoinRule;
import org.apache.asterix.optimizer.rules.InjectTypeCastForFunctionArgumentsRule;
import org.apache.asterix.optimizer.rules.InjectTypeCastForUnionRule;
import org.apache.asterix.optimizer.rules.InlineUnnestFunctionRule;
@@ -95,6 +94,7 @@
import org.apache.asterix.optimizer.rules.subplan.AsterixMoveFreeVariableOperatorOutOfSubplanRule;
import org.apache.asterix.optimizer.rules.subplan.InlineSubplanInputForNestedTupleSourceRule;
import org.apache.asterix.optimizer.rules.temporal.TranslateIntervalExpressionRule;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
import org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer;
import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
import org.apache.hyracks.algebricks.rewriter.rules.BreakSelectIntoConjunctsRule;
@@ -128,10 +128,10 @@
import org.apache.hyracks.algebricks.rewriter.rules.PushSelectIntoJoinRule;
import org.apache.hyracks.algebricks.rewriter.rules.PushSortDownRule;
import org.apache.hyracks.algebricks.rewriter.rules.PushSubplanWithAggregateDownThroughProductRule;
-import org.apache.hyracks.algebricks.rewriter.rules.PushUnnestDownThroughUnionRule;
import org.apache.hyracks.algebricks.rewriter.rules.ReinferAllTypesRule;
import org.apache.hyracks.algebricks.rewriter.rules.RemoveCartesianProductWithEmptyBranchRule;
import org.apache.hyracks.algebricks.rewriter.rules.RemoveRedundantGroupByDecorVarsRule;
+import org.apache.hyracks.algebricks.rewriter.rules.RemoveRedundantVariablesInUnionRule;
import org.apache.hyracks.algebricks.rewriter.rules.RemoveRedundantVariablesRule;
import org.apache.hyracks.algebricks.rewriter.rules.RemoveRedundantWindowOperatorsRule;
import org.apache.hyracks.algebricks.rewriter.rules.RemoveUnnecessarySortMergeExchange;
@@ -231,6 +231,8 @@
condPushDownAndJoinInference.add(new RemoveCartesianProductWithEmptyBranchRule());
condPushDownAndJoinInference.add(new PushMapOperatorDownThroughProductRule());
condPushDownAndJoinInference.add(new PushSubplanWithAggregateDownThroughProductRule());
+ condPushDownAndJoinInference
+ .add(new AsterixPushMapOperatorThroughUnionRule(LogicalOperatorTag.ASSIGN, LogicalOperatorTag.SELECT));
condPushDownAndJoinInference.add(new SubplanOutOfGroupRule());
// The following rule must run before PushAggregateIntoNestedSubplanRule
// (before common subplans diverge due to aggregate pushdown)
@@ -278,20 +280,6 @@
return fieldLoads;
}
- public static final List<IAlgebraicRewriteRule> buildFuzzyJoinRuleCollection() {
- List<IAlgebraicRewriteRule> fuzzy = new LinkedList<>();
- fuzzy.add(new FuzzyJoinRule());
- fuzzy.add(new ExtractCommonExpressionsRule());
- fuzzy.add(new NestedSubplanToJoinRule());
- fuzzy.add(new PushSelectIntoJoinRule());
- fuzzy.add(new RemoveUnusedAssignAndAggregateRule());
- fuzzy.add(new InlineSubplanInputForNestedTupleSourceRule());
- fuzzy.add(new RemoveRedundantVariablesRule());
- fuzzy.add(new AsterixInlineVariablesRule());
- fuzzy.add(new RemoveUnusedAssignAndAggregateRule());
- return fuzzy;
- }
-
public static final List<IAlgebraicRewriteRule> buildConsolidationRuleCollection() {
List<IAlgebraicRewriteRule> consolidation = new LinkedList<>();
consolidation.add(new ConsolidateSelectsRule());
@@ -306,8 +294,8 @@
consolidation.add(new CountVarToCountOneRule());
consolidation.add(new RemoveUnusedAssignAndAggregateRule());
consolidation.add(new RemoveRedundantGroupByDecorVarsRule());
- //PushUnnestDownUnion => RemoveRedundantListifyRule cause these rules are correlated
- consolidation.add(new PushUnnestDownThroughUnionRule());
+ //PushUnnestThroughUnion => RemoveRedundantListifyRule cause these rules are correlated
+ consolidation.add(new AsterixPushMapOperatorThroughUnionRule(LogicalOperatorTag.UNNEST));
consolidation.add(new RemoveRedundantListifyRule());
// Window operator consolidation rules
consolidation.add(new AsterixConsolidateWindowOperatorsRule());
@@ -333,9 +321,10 @@
public static final List<IAlgebraicRewriteRule> buildPlanCleanupRuleCollection() {
List<IAlgebraicRewriteRule> planCleanupRules = new LinkedList<>();
planCleanupRules.add(new SwitchInnerJoinBranchRule());
- planCleanupRules.add(new AsterixPushAssignBelowUnionAllRule());
+ planCleanupRules.add(new AsterixPushMapOperatorThroughUnionRule(LogicalOperatorTag.ASSIGN));
planCleanupRules.add(new ExtractCommonExpressionsRule());
planCleanupRules.add(new RemoveRedundantVariablesRule());
+ planCleanupRules.add(new RemoveRedundantVariablesInUnionRule()); // relies on RemoveUnusedAssignAndAggregateRule
planCleanupRules.add(new PushProjectDownRule());
planCleanupRules.add(new PushSelectDownRule());
planCleanupRules.add(new SetClosedRecordConstructorsRule());
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/AsterixPushAssignBelowUnionAllRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/AsterixPushAssignBelowUnionAllRule.java
deleted file mode 100644
index 23ff7c6..0000000
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/AsterixPushAssignBelowUnionAllRule.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * 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.optimizer.rules;
-
-import java.util.List;
-
-import org.apache.asterix.om.base.AInt32;
-import org.apache.asterix.om.constants.AsterixConstantValue;
-import org.apache.asterix.om.functions.BuiltinFunctions;
-import org.apache.asterix.om.types.ARecordType;
-import org.apache.asterix.om.utils.ConstantExpressionUtil;
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.common.utils.Triple;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnionAllOperator;
-import org.apache.hyracks.algebricks.rewriter.rules.PushAssignBelowUnionAllRule;
-
-public class AsterixPushAssignBelowUnionAllRule extends PushAssignBelowUnionAllRule {
-
- // modifies field-access-by-index by adjusting the index to match the one in the branch where assign is moved to
- @Override
- protected boolean modifyExpression(ILogicalExpression expression, UnionAllOperator unionOp,
- IOptimizationContext ctx, int inputIndex) throws AlgebricksException {
- if (expression.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
- return true; // expressions other than functions need not be modified
- }
- AbstractFunctionCallExpression functionCall = (AbstractFunctionCallExpression) expression;
- List<Mutable<ILogicalExpression>> arguments = functionCall.getArguments();
- for (int k = 0, size = arguments.size(); k < size; k++) {
- if (!modifyExpression(arguments.get(k).getValue(), unionOp, ctx, inputIndex)) {
- return false;
- }
- }
- // return true if any function other than field-access-by-index. otherwise, try to map the index.
- return !functionCall.getFunctionIdentifier().equals(BuiltinFunctions.FIELD_ACCESS_BY_INDEX)
- || mapFieldIndex(functionCall, unionOp, ctx, inputIndex);
- }
-
- private static boolean mapFieldIndex(AbstractFunctionCallExpression functionCall, UnionAllOperator unionOp,
- IOptimizationContext ctx, int inputIndex) throws AlgebricksException {
- // the record variable in the field access should match the output variable from union, i.e. $2.getField
- ILogicalExpression recordExpr = functionCall.getArguments().get(0).getValue();
- if (recordExpr.getExpressionTag() != LogicalExpressionTag.VARIABLE) {
- return false;
- }
- Integer fieldIndex = ConstantExpressionUtil.getIntArgument(functionCall, 1);
- if (fieldIndex == null) {
- return false;
- }
- LogicalVariable recordVar = ((VariableReferenceExpression) recordExpr).getVariableReference();
- for (Triple<LogicalVariable, LogicalVariable, LogicalVariable> varMap : unionOp.getVariableMappings()) {
- if (varMap.third.equals(recordVar)) {
- ARecordType unionType = (ARecordType) ctx.getOutputTypeEnvironment(unionOp).getVarType(varMap.third);
- ILogicalOperator inputOpToUnion = unionOp.getInputs().get(inputIndex).getValue();
- ARecordType inputType;
- if (inputIndex == 0) {
- inputType = (ARecordType) ctx.getOutputTypeEnvironment(inputOpToUnion).getVarType(varMap.first);
- } else {
- inputType = (ARecordType) ctx.getOutputTypeEnvironment(inputOpToUnion).getVarType(varMap.second);
- }
- String fieldName = unionType.getFieldNames()[fieldIndex];
- fieldIndex = inputType.getFieldIndex(fieldName);
- if (fieldIndex < 0) {
- return false;
- }
- functionCall.getArguments().get(1)
- .setValue(new ConstantExpression(new AsterixConstantValue(new AInt32(fieldIndex))));
- return true;
- }
- }
- return false;
- }
-}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/AsterixPushMapOperatorThroughUnionRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/AsterixPushMapOperatorThroughUnionRule.java
new file mode 100644
index 0000000..20ad536
--- /dev/null
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/AsterixPushMapOperatorThroughUnionRule.java
@@ -0,0 +1,263 @@
+/*
+ * 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.optimizer.rules;
+
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.om.base.AInt32;
+import org.apache.asterix.om.constants.AsterixConstantValue;
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.asterix.om.utils.ConstantExpressionUtil;
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.common.utils.Triple;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnionAllOperator;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
+import org.apache.hyracks.algebricks.rewriter.rules.PushMapOperatorThroughUnionRule;
+
+public class AsterixPushMapOperatorThroughUnionRule extends PushMapOperatorThroughUnionRule {
+
+ private final FieldAccessByIndexCollector fieldAccessByIndexCollector = new FieldAccessByIndexCollector();
+
+ private final FieldAccessByIndexTransformer fieldAccessByIndexTransformer = new FieldAccessByIndexTransformer();
+
+ private final Set<LogicalOperatorTag> allowedKinds;
+
+ public AsterixPushMapOperatorThroughUnionRule(LogicalOperatorTag... allowedKinds) {
+ if (allowedKinds.length == 0) {
+ throw new IllegalArgumentException();
+ }
+ this.allowedKinds = EnumSet.noneOf(LogicalOperatorTag.class);
+ Collections.addAll(this.allowedKinds, allowedKinds);
+ }
+
+ @Override
+ protected boolean isOperatorKindPushableThroughUnion(ILogicalOperator op) {
+ //TODO(dmitry): support subplan operator
+ return allowedKinds.contains(op.getOperatorTag()) && super.isOperatorKindPushableThroughUnion(op);
+ }
+
+ @Override
+ protected Pair<ILogicalOperator, Map<LogicalVariable, LogicalVariable>> deepCopyForBranch(ILogicalOperator op,
+ Set<LogicalVariable> opUsedVars, UnionAllOperator unionAllOp, int branchIdx, IOptimizationContext context)
+ throws AlgebricksException {
+
+ if (((AbstractLogicalOperator) op).hasNestedPlans()) {
+ //TODO(dmitry): support subplan operator
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, op.getSourceLocation(),
+ op.getOperatorTag().toString());
+ }
+
+ fieldAccessByIndexCollector.reset(unionAllOp, branchIdx, context);
+ op.acceptExpressionTransform(fieldAccessByIndexCollector);
+ if (fieldAccessByIndexCollector.failed) {
+ fieldAccessByIndexCollector.clear();
+ return null;
+ }
+
+ Pair<ILogicalOperator, Map<LogicalVariable, LogicalVariable>> newOpPair =
+ super.deepCopyForBranch(op, opUsedVars, unionAllOp, branchIdx, context);
+
+ if (fieldAccessByIndexCollector.hasFieldAccessMappings()) {
+ fieldAccessByIndexTransformer.reset(unionAllOp, branchIdx, context);
+ newOpPair.first.acceptExpressionTransform(fieldAccessByIndexTransformer);
+ fieldAccessByIndexTransformer.clear();
+ }
+
+ fieldAccessByIndexCollector.clear();
+ return newOpPair;
+ }
+
+ private static final class FieldAccessByIndexCollector extends AbstractFieldAccessByIndexTransformer {
+
+ private final Map<Pair<LogicalVariable, Integer>, Integer> fieldIndexMap = new HashMap<>();
+
+ private boolean failed;
+
+ @Override
+ void reset(UnionAllOperator unionAllOp, int branchIdx, IOptimizationContext context) {
+ super.reset(unionAllOp, branchIdx, context);
+ fieldIndexMap.clear();
+ failed = false;
+ }
+
+ @Override
+ void clear() {
+ super.clear();
+ fieldIndexMap.clear();
+ }
+
+ boolean hasFieldAccessMappings() {
+ return !fieldIndexMap.isEmpty();
+ }
+
+ @Override
+ public boolean transform(Mutable<ILogicalExpression> exprRef) throws AlgebricksException {
+ visit(exprRef);
+ return false;
+ }
+
+ private void visit(Mutable<ILogicalExpression> exprRef) throws AlgebricksException {
+ ILogicalExpression expr = exprRef.getValue();
+ if (expr.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
+ return;
+ }
+ AbstractFunctionCallExpression callExpr = (AbstractFunctionCallExpression) expr;
+ for (Mutable<ILogicalExpression> argExpr : callExpr.getArguments()) {
+ visit(argExpr);
+ if (failed) {
+ return;
+ }
+ }
+
+ if (callExpr.getFunctionIdentifier().equals(BuiltinFunctions.FIELD_ACCESS_BY_INDEX)) {
+ boolean mapped = mapFieldIndex(callExpr);
+ if (!mapped) {
+ failed = true;
+ }
+ }
+ }
+
+ private boolean mapFieldIndex(AbstractFunctionCallExpression callExpr) throws AlgebricksException {
+ // the record variable in the field access should match the output variable from union, i.e. $2.getField
+ ILogicalExpression recordExpr = callExpr.getArguments().get(0).getValue();
+ if (recordExpr.getExpressionTag() != LogicalExpressionTag.VARIABLE) {
+ return false;
+ }
+ Integer fieldIndexPostUnion = ConstantExpressionUtil.getIntArgument(callExpr, 1);
+ if (fieldIndexPostUnion == null) {
+ return false;
+ }
+ LogicalVariable recordVarPostUnion = ((VariableReferenceExpression) recordExpr).getVariableReference();
+ // 'recordVarPostUnion' is a post-union var, we need to find corresponding pre-union var
+ for (Triple<LogicalVariable, LogicalVariable, LogicalVariable> varMap : unionAllOp.getVariableMappings()) {
+ if (varMap.third.equals(recordVarPostUnion)) {
+ LogicalVariable recordVarPreUnion = branchIdx == 0 ? varMap.first : varMap.second;
+
+ IVariableTypeEnvironment typeEnvPostUnion = context.getOutputTypeEnvironment(unionAllOp);
+ ARecordType recordTypePostUnion = (ARecordType) typeEnvPostUnion.getVarType(recordVarPostUnion);
+ String fieldName = recordTypePostUnion.getFieldNames()[fieldIndexPostUnion];
+
+ ILogicalOperator inputOpToUnion = unionAllOp.getInputs().get(branchIdx).getValue();
+ IVariableTypeEnvironment typeEnvPreUnion = context.getOutputTypeEnvironment(inputOpToUnion);
+ ARecordType recordTypePreUnion = (ARecordType) typeEnvPreUnion.getVarType(recordVarPreUnion);
+
+ int fieldIndexPreUnion = recordTypePreUnion.getFieldIndex(fieldName);
+ if (fieldIndexPreUnion >= 0) {
+ // we save 'recordVar' pre-union because super.deepCopyForBranch() will replace
+ // post-union variables with pre-union variables in the operator's expressions
+ fieldIndexMap.put(new Pair<>(recordVarPreUnion, fieldIndexPostUnion), fieldIndexPreUnion);
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ }
+ return false;
+ }
+
+ }
+
+ private final class FieldAccessByIndexTransformer extends AbstractFieldAccessByIndexTransformer {
+
+ @Override
+ public boolean transform(Mutable<ILogicalExpression> exprRef) throws AlgebricksException {
+ ILogicalExpression expr = exprRef.getValue();
+ if (expr.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
+ return false;
+ }
+ boolean applied = false;
+ AbstractFunctionCallExpression callExpr = (AbstractFunctionCallExpression) expr;
+ for (Mutable<ILogicalExpression> argument : callExpr.getArguments()) {
+ applied |= transform(argument);
+ }
+
+ if (callExpr.getFunctionIdentifier().equals(BuiltinFunctions.FIELD_ACCESS_BY_INDEX)) {
+ transformFieldIndex(callExpr);
+ applied = true;
+ }
+ return applied;
+ }
+
+ private void transformFieldIndex(AbstractFunctionCallExpression callExpr) throws AlgebricksException {
+ ILogicalExpression recordExpr = callExpr.getArguments().get(0).getValue();
+ if (recordExpr.getExpressionTag() != LogicalExpressionTag.VARIABLE) {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, callExpr.getSourceLocation(),
+ recordExpr.getExpressionTag().toString());
+ }
+ Integer fieldIndexPostUnion = ConstantExpressionUtil.getIntArgument(callExpr, 1);
+ if (fieldIndexPostUnion == null) {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, callExpr.getSourceLocation(), "");
+ }
+ // this 'recordVar' is pre-union because super.deepCopyForBranch() replaced
+ // post-union variables with pre-union variables in the operator's expressions
+ LogicalVariable recordVarPreUnion = ((VariableReferenceExpression) recordExpr).getVariableReference();
+ Integer fieldIndexPreUnion =
+ fieldAccessByIndexCollector.fieldIndexMap.get(new Pair<>(recordVarPreUnion, fieldIndexPostUnion));
+ if (fieldIndexPreUnion == null) {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, callExpr.getSourceLocation(),
+ recordVarPreUnion.toString());
+ }
+ callExpr.getArguments().get(1)
+ .setValue(new ConstantExpression(new AsterixConstantValue(new AInt32(fieldIndexPreUnion))));
+ }
+ }
+
+ private abstract static class AbstractFieldAccessByIndexTransformer
+ implements ILogicalExpressionReferenceTransform {
+
+ protected UnionAllOperator unionAllOp;
+
+ protected int branchIdx;
+
+ protected IOptimizationContext context;
+
+ void reset(UnionAllOperator unionAllOp, int branchIdx, IOptimizationContext context) {
+ this.unionAllOp = unionAllOp;
+ this.branchIdx = branchIdx;
+ this.context = context;
+ }
+
+ void clear() {
+ unionAllOp = null;
+ context = null;
+ }
+ }
+}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
index 8c35ea3..4c227fa 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
@@ -57,6 +57,7 @@
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.om.types.TypeTagUtil;
import org.apache.asterix.om.utils.ConstantExpressionUtil;
+import org.apache.asterix.runtime.base.UnnestingPositionWriterFactory;
import org.apache.asterix.runtime.evaluators.functions.PointableHelper;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -71,6 +72,7 @@
import org.apache.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.ExpressionRuntimeProvider;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IAlgebricksConstantValue;
import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
import org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.StatefulFunctionCallExpression;
@@ -145,7 +147,8 @@
jobGenCtx = new JobGenContext(null, metadataProvider, appCtx, SerializerDeserializerProvider.INSTANCE,
BinaryHashFunctionFactoryProvider.INSTANCE, BinaryHashFunctionFamilyProvider.INSTANCE,
BinaryComparatorFactoryProvider.INSTANCE, TypeTraitProvider.INSTANCE, BinaryBooleanInspector.FACTORY,
- BinaryIntegerInspector.FACTORY, ADMPrinterFactoryProvider.INSTANCE, MissingWriterFactory.INSTANCE, null,
+ BinaryIntegerInspector.FACTORY, ADMPrinterFactoryProvider.INSTANCE, MissingWriterFactory.INSTANCE,
+ UnnestingPositionWriterFactory.INSTANCE, null,
new ExpressionRuntimeProvider(new QueryLogicalExpressionJobGen(metadataProvider.getFunctionManager())),
ExpressionTypeComputer.INSTANCE, null, null, null, null, GlobalConfig.DEFAULT_FRAME_SIZE, null,
NoOpWarningCollector.INSTANCE, 0);
@@ -209,7 +212,21 @@
public Pair<Boolean, ILogicalExpression> visitScalarFunctionCallExpression(ScalarFunctionCallExpression expr,
Void arg) throws AlgebricksException {
boolean changed = constantFoldArgs(expr, arg);
- if (!allArgsConstant(expr) || !expr.isFunctional() || !canConstantFold(expr)) {
+ List<Mutable<ILogicalExpression>> argList = expr.getArguments();
+ int argConstantCount = countConstantArgs(argList);
+ if (argConstantCount != argList.size()) {
+ if (argConstantCount > 0 && expr.getFunctionIdentifier().equals(BuiltinFunctions.OR)
+ && expr.isFunctional()) {
+ if (foldOrArgs(expr)) {
+ ILogicalExpression changedExpr =
+ expr.getArguments().size() == 1 ? expr.getArguments().get(0).getValue() : expr;
+ return new Pair<>(true, changedExpr);
+ }
+ }
+ return new Pair<>(changed, expr);
+ }
+
+ if (!expr.isFunctional() || !canConstantFold(expr)) {
return new Pair<>(changed, expr);
}
@@ -353,13 +370,14 @@
return false;
}
- private boolean allArgsConstant(AbstractFunctionCallExpression expr) {
- for (Mutable<ILogicalExpression> r : expr.getArguments()) {
- if (r.getValue().getExpressionTag() != LogicalExpressionTag.CONSTANT) {
- return false;
+ private int countConstantArgs(List<Mutable<ILogicalExpression>> argList) {
+ int n = 0;
+ for (Mutable<ILogicalExpression> r : argList) {
+ if (r.getValue().getExpressionTag() == LogicalExpressionTag.CONSTANT) {
+ n++;
}
}
- return true;
+ return n;
}
private boolean canConstantFold(ScalarFunctionCallExpression function) throws AlgebricksException {
@@ -402,6 +420,38 @@
return true;
}
+ private boolean foldOrArgs(ScalarFunctionCallExpression expr) {
+ // or(true,x,y) -> true; or(false,x,y) -> or(x,y)
+ boolean changed = false;
+ List<Mutable<ILogicalExpression>> argList = expr.getArguments();
+ Iterator<Mutable<ILogicalExpression>> argIter = argList.iterator();
+ Mutable<ILogicalExpression> argFalse = null;
+ while (argIter.hasNext()) {
+ Mutable<ILogicalExpression> argExprRef = argIter.next();
+ ILogicalExpression argExpr = argExprRef.getValue();
+ if (argExpr.getExpressionTag() != LogicalExpressionTag.CONSTANT) {
+ continue;
+ }
+ ConstantExpression cExpr = (ConstantExpression) argExpr;
+ IAlgebricksConstantValue cValue = cExpr.getValue();
+ if (cValue.isTrue()) {
+ // or(true,x,y) -> true;
+ argList.clear();
+ argList.add(argExprRef);
+ return true;
+ } else if (cValue.isFalse()) {
+ // remove 'false' from arg list, but save the expression.
+ argFalse = argExprRef;
+ argIter.remove();
+ changed = true;
+ }
+ }
+ if (argList.isEmpty() && argFalse != null) {
+ argList.add(argFalse);
+ }
+ return changed;
+ }
+
// IEvaluatorContext
@Override
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/DisjunctivePredicateToJoinRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/DisjunctivePredicateToJoinRule.java
index 916fd75..e1bbacf 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/DisjunctivePredicateToJoinRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/DisjunctivePredicateToJoinRule.java
@@ -18,9 +18,13 @@
*/
package org.apache.asterix.optimizer.rules;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
+import org.apache.asterix.common.annotations.SkipSecondaryIndexSearchExpressionAnnotation;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.om.base.AOrderedList;
import org.apache.asterix.om.constants.AsterixConstantValue;
@@ -39,6 +43,7 @@
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.BroadcastExpressionAnnotation;
import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionAnnotation;
import org.apache.hyracks.algebricks.core.algebra.expressions.IndexedNLJoinExpressionAnnotation;
import org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
@@ -89,6 +94,7 @@
VariableReferenceExpression varEx = null;
IAType valType = null;
HashSet<AsterixConstantValue> values = new HashSet<AsterixConstantValue>();
+ Map<Object, IExpressionAnnotation> allAnnotations = Collections.emptyMap();
for (Mutable<ILogicalExpression> arg : args) {
AbstractFunctionCallExpression fctCall;
@@ -128,6 +134,12 @@
if (!(haveVar && haveConst)) {
return false;
}
+ if (!fctCall.getAnnotations().isEmpty()) {
+ if (allAnnotations.isEmpty()) {
+ allAnnotations = new HashMap<>();
+ }
+ allAnnotations.putAll(fctCall.getAnnotations());
+ }
}
SourceLocation sourceLoc = select.getSourceLocation();
@@ -142,8 +154,9 @@
ILogicalExpression cExp = new ConstantExpression(new AsterixConstantValue(list));
Mutable<ILogicalExpression> mutCExp = new MutableObject<>(cExp);
- IFunctionInfo scanFctInfo = BuiltinFunctions.getAsterixFunctionInfo(BuiltinFunctions.SCAN_COLLECTION);
- UnnestingFunctionCallExpression scanExp = new UnnestingFunctionCallExpression(scanFctInfo, mutCExp);
+ UnnestingFunctionCallExpression scanExp = new UnnestingFunctionCallExpression(
+ BuiltinFunctions.getBuiltinFunctionInfo(BuiltinFunctions.SCAN_COLLECTION));
+ scanExp.getArguments().add(mutCExp);
scanExp.setSourceLocation(sourceLoc);
LogicalVariable scanVar = context.newVar();
UnnestOperator unn = new UnnestOperator(scanVar, new MutableObject<>(scanExp));
@@ -151,18 +164,21 @@
unn.getInputs().add(new MutableObject<>(ets));
context.computeAndSetTypeEnvironmentForOperator(unn);
- IFunctionInfo eqFctInfo = BuiltinFunctions.getAsterixFunctionInfo(AlgebricksBuiltinFunctions.EQ);
+ IFunctionInfo eqFctInfo = BuiltinFunctions.getBuiltinFunctionInfo(AlgebricksBuiltinFunctions.EQ);
AbstractFunctionCallExpression eqExp = new ScalarFunctionCallExpression(eqFctInfo);
eqExp.setSourceLocation(sourceLoc);
VariableReferenceExpression scanVarRef = new VariableReferenceExpression(scanVar);
scanVarRef.setSourceLocation(sourceLoc);
eqExp.getArguments().add(new MutableObject<>(scanVarRef));
eqExp.getArguments().add(new MutableObject<>(varEx.cloneExpression()));
- eqExp.getAnnotations().put(IndexedNLJoinExpressionAnnotation.INSTANCE,
- IndexedNLJoinExpressionAnnotation.INSTANCE);
+ if (!allAnnotations.containsKey(SkipSecondaryIndexSearchExpressionAnnotation.INSTANCE)) {
+ eqExp.getAnnotations().put(IndexedNLJoinExpressionAnnotation.INSTANCE,
+ IndexedNLJoinExpressionAnnotation.INSTANCE);
+ }
BroadcastExpressionAnnotation bcast = new BroadcastExpressionAnnotation();
bcast.setObject(BroadcastExpressionAnnotation.BroadcastSide.LEFT); // Broadcast the OR predicates branch.
eqExp.getAnnotations().put(bcast, bcast);
+ eqExp.getAnnotations().putAll(allAnnotations);
InnerJoinOperator jOp = new InnerJoinOperator(new MutableObject<>(eqExp));
jOp.setSourceLocation(sourceLoc);
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/FuzzyJoinRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/FuzzyJoinRule.java
deleted file mode 100644
index cc91c06..0000000
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/FuzzyJoinRule.java
+++ /dev/null
@@ -1,504 +0,0 @@
-/*
- * 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.optimizer.rules;
-
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.asterix.aqlplus.parser.AQLPlusParser;
-import org.apache.asterix.aqlplus.parser.ParseException;
-import org.apache.asterix.common.exceptions.CompilationException;
-import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.lang.common.base.Clause;
-import org.apache.asterix.lang.common.struct.VarIdentifier;
-import org.apache.asterix.lang.common.util.FunctionUtil;
-import org.apache.asterix.metadata.declared.MetadataProvider;
-import org.apache.asterix.om.base.AFloat;
-import org.apache.asterix.om.constants.AsterixConstantValue;
-import org.apache.asterix.om.functions.BuiltinFunctions;
-import org.apache.asterix.om.typecomputer.impl.TypeComputeUtils;
-import org.apache.asterix.om.types.BuiltinType;
-import org.apache.asterix.om.types.IAType;
-import org.apache.asterix.optimizer.base.FuzzyUtils;
-import org.apache.asterix.translator.AqlPlusExpressionToPlanTranslator;
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.base.Counter;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-import org.apache.hyracks.algebricks.core.algebra.expressions.IndexedNLJoinExpressionAnnotation;
-import org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
-import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import org.apache.hyracks.algebricks.core.algebra.functions.AlgebricksBuiltinFunctions;
-import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.IsomorphismUtilities;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.LogicalOperatorDeepCopyWithNewVariablesVisitor;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
-import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-
-public class FuzzyJoinRule implements IAlgebraicRewriteRule {
-
- private static HashSet<FunctionIdentifier> simFuncs = new HashSet<>();
-
- static {
- simFuncs.add(BuiltinFunctions.SIMILARITY_JACCARD_CHECK);
- }
-
- private final List<Collection<LogicalVariable>> previousPKs = new ArrayList<>();
-
- // Please correspond the value to the anchors $$RIGHT_##_0 and ##RIGHT_3 in AQLPLUS.
- private static final int SUBSET_RIGHT_INDEX = 1; // Corresponds to $$RIGHT_1_0 and ##RIGHT_1
- // private static final int LENGTH_LEFT_INDEX = 2; // Corresponds to $$RIGHT_2_0 and ##RIGHT_2
- private static final int LENGTH_RIGHT_INDEX = 3; // Corresponds to $$RIGHT_3_0 and ##RIGHT_3
-
- // Step1: Initialize the host embedding aql to substitute the fuzzy equal condition such as $r.a ~= $s.b
- private static final String AQLPLUS = ""
- //
- // -- - Stage 3 - --
- //
- + "((##LEFT_0), " + " (join((##RIGHT_0), "
- //
- // -- -- - Stage 2 - --
- //
- + " (" + "join( " + "( " + "##RIGHT_1 " + " let $tokensUnrankedRight := %s($$RIGHT_1) "
- + " let $lenRight := len($tokensUnrankedRight) " + " let $tokensRight := "
- + " for $token in $tokensUnrankedRight " + "for $tokenRanked at $i in "
- //
- // -- -- -- - Stage 1 - --
- // Since we use the right join branch R to generate our token order, this can shorten the prefix length of S
- // in case of R ~= S, where some tokens are in S but not in R.
- + " ##RIGHT_3 " + "let $id := $$RIGHTPK_3_0 " + "for $token in %s($$RIGHT_3) "
- + " /*+ hash */ " + "group by $tokenGroupped := $token with $id "
- + " order by count($id), $tokenGroupped return $tokenGroupped "
- //
- // -- -- -- -
- //
- + " where $token = /*+ hash-bcast */ $tokenRanked " + "order by $i " + "return $i "
- + " for $prefixTokenRight in subset-collection($tokensRight, 0, prefix-len-%s(len($tokensRight), %ff)) "
- + " ), " + "( " + "##LEFT_1 " + "let $tokensUnrankedLeft := %s($$LEFT_1) "
- + " let $lenLeft := len($tokensUnrankedLeft) " + "let $tokensLeft := "
- + " for $token in $tokensUnrankedLeft " + "for $tokenRanked at $i in "
- //
- // -- -- -- - Stage 1 - --
- + " ##RIGHT_2 " + "let $id := $$RIGHTPK_2_0 " + "for $token in %s($$RIGHT_2) "
- + " /*+ hash */ " + "group by $tokenGroupped := $token with $id "
- + " order by count($id), $tokenGroupped return $tokenGroupped "
- //
- // -- -- -- -
- //
- + " where $token = /*+ hash-bcast */ $tokenRanked " + "order by $i " + "return $i "
- // We use the input string $tokensUnrankedLeft instead of $tokensLeft to ensure it will not miss similar
- // pairs when the prefix of S has been reduced in case of R ~= S, where some tokens are in S but not in R.
- + " let $actualPreLen := prefix-len-%s(len($tokensUnrankedLeft), %ff) - $lenLeft + len($tokensLeft) "
- + " for $prefixTokenLeft in subset-collection($tokensLeft, 0, $actualPreLen)) "
- + " , $prefixTokenLeft = $prefixTokenRight) "
- + "let $sim := similarity-%s-prefix($lenRight, $tokensRight, $lenLeft, $tokensLeft, $prefixTokenLeft, %ff) "
- + "where $sim >= %ff " + "/*+ hash*/ " + "group by %s, %s with $sim "
- //
- // -- -- -
- //
- + " ), %s)), %s)";
-
- private static final String GROUPBY_LEFT = "$idLeft_%d := $$LEFTPK_1_%d";
- private static final String GROUPBY_RIGHT = "$idRight_%d := $$RIGHTPK_1_%d";
- private static final String JOIN_COND_LEFT = "$$LEFTPK_0_%d = $idLeft_%d";
- private static final String JOIN_COND_RIGHT = "$$RIGHTPK_0_%d = $idRight_%d";
- private static final String AQLPLUS_INNER_JOIN = "join";
- private static final String AQLPLUS_LEFTOUTER_JOIN = "loj";
-
- @Override
- public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
- throws AlgebricksException {
-
- AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
- // current operator should be a join.
- if (op.getOperatorTag() != LogicalOperatorTag.INNERJOIN
- && op.getOperatorTag() != LogicalOperatorTag.LEFTOUTERJOIN) {
- return false;
- }
-
- // Finds GET_ITEM function in the join condition.
- AbstractBinaryJoinOperator joinOp = (AbstractBinaryJoinOperator) op;
- Mutable<ILogicalExpression> exprRef = joinOp.getCondition();
- Mutable<ILogicalExpression> getItemExprRef = getSimilarityExpression(exprRef);
- if (getItemExprRef == null) {
- return false;
- }
- // Checks if the GET_ITEM function is on the one of the supported similarity-check functions.
- AbstractFunctionCallExpression getItemFuncExpr = (AbstractFunctionCallExpression) getItemExprRef.getValue();
- Mutable<ILogicalExpression> argRef = getItemFuncExpr.getArguments().get(0);
- AbstractFunctionCallExpression simFuncExpr = (AbstractFunctionCallExpression) argRef.getValue();
- if (!simFuncs.contains(simFuncExpr.getFunctionIdentifier())) {
- return false;
- }
- // Skips this rule based on annotations.
- if (simFuncExpr.getAnnotations().containsKey(IndexedNLJoinExpressionAnnotation.INSTANCE)) {
- return false;
- }
-
- // Gets both input branches of fuzzy join.
- List<Mutable<ILogicalOperator>> inputOps = joinOp.getInputs();
- ILogicalOperator leftInputOp = inputOps.get(0).getValue();
- ILogicalOperator rightInputOp = inputOps.get(1).getValue();
-
- List<Mutable<ILogicalExpression>> inputExprs = simFuncExpr.getArguments();
- if (inputExprs.size() != 3) {
- return false;
- }
-
- // Extracts Fuzzy similarity function.
- ILogicalExpression leftOperatingExpr = inputExprs.get(0).getValue();
- ILogicalExpression rightOperatingExpr = inputExprs.get(1).getValue();
- ILogicalExpression thresholdConstantExpr = inputExprs.get(2).getValue();
-
- // left and right expressions should be variables.
- if (leftOperatingExpr.getExpressionTag() != LogicalExpressionTag.VARIABLE
- || rightOperatingExpr.getExpressionTag() != LogicalExpressionTag.VARIABLE
- || thresholdConstantExpr.getExpressionTag() != LogicalExpressionTag.CONSTANT) {
- return false;
- }
-
- LogicalVariable inputVar0 = ((VariableReferenceExpression) leftOperatingExpr).getVariableReference();
- LogicalVariable inputVar1 = ((VariableReferenceExpression) rightOperatingExpr).getVariableReference();
-
- LogicalVariable leftInputVar;
- LogicalVariable rightInputVar;
- Collection<LogicalVariable> liveVars = new HashSet<>();
- VariableUtilities.getLiveVariables(leftInputOp, liveVars);
- if (liveVars.contains(inputVar0)) {
- leftInputVar = inputVar0;
- rightInputVar = inputVar1;
- } else {
- leftInputVar = inputVar1;
- rightInputVar = inputVar0;
- }
- // leftInputPKs in currrentPKs keeps all PKs derived from the left branch in the current similarity fuzzyjoin.
- List<LogicalVariable> leftInputPKs = findPrimaryKeysInSubplan(liveVars, context);
- liveVars.clear();
- VariableUtilities.getLiveVariables(rightInputOp, liveVars);
- // rightInputPKs in currentPKs keeps all PKs derived from the right branch in the current similarity fuzzyjoin.
- List<LogicalVariable> rightInputPKs = findPrimaryKeysInSubplan(liveVars, context);
- IAType leftType = (IAType) context.getOutputTypeEnvironment(leftInputOp).getVarType(leftInputVar);
- if (!isPrefixFuzzyJoin(context, leftInputOp, rightInputOp, rightInputVar, leftInputPKs, rightInputPKs,
- leftType)) {
- return false;
- }
-
- //
- // -- - FIRE - --
- //
- MetadataProvider metadataProvider = ((MetadataProvider) context.getMetadataProvider());
- // Steps 1 and 2. Generate the prefix-based fuzzy jon template.
- String aqlPlus = generateAqlTemplate(metadataProvider, joinOp, simFuncExpr, leftInputPKs, leftType,
- rightInputPKs, thresholdConstantExpr);
- // Steps 3 and 4. Generate the prefix-based fuzzy join subplan.
- ILogicalOperator outputOp = generatePrefixFuzzyJoinSubplan(context, metadataProvider, aqlPlus, leftInputOp,
- leftInputPKs, leftInputVar, rightInputOp, rightInputPKs, rightInputVar);
-
- // Step 5. Bind the plan to the parent op referred by the following opRef.
- SelectOperator extraSelect;
- if (getItemExprRef != exprRef) {
- // more than one join condition
- getItemExprRef.setValue(ConstantExpression.TRUE);
- switch (joinOp.getJoinKind()) {
- case INNER: {
- extraSelect = new SelectOperator(exprRef, false, null);
- extraSelect.setSourceLocation(exprRef.getValue().getSourceLocation());
- extraSelect.getInputs().add(new MutableObject<>(outputOp));
- outputOp = extraSelect;
- break;
- }
- case LEFT_OUTER: {
- LeftOuterJoinOperator topJoin = (LeftOuterJoinOperator) outputOp;
- setConditionForLeftOuterJoin(topJoin, exprRef);
- break;
- }
- default: {
- throw new IllegalStateException();
- }
- }
- }
- opRef.setValue(outputOp);
- OperatorPropertiesUtil.typeOpRec(opRef, context);
- return true;
- }
-
- /**
- * To handle multiple fuzzy-join conditions on a same pair of datasets, this rule checks the PKs in bottom-up way.
- * The previousPKs list incrementally maintains the PKs from a previous fuzzy-join operator's input branches.
- * In addition, the given fuzzy-join operator has been successfully translated into a prefix-based fuzzy join
- * sub-plan of the current fuzzy-join operator. There are two cases:
- * 1. If the previousPKs list contains the currentPKs list (the PKs from the input branches of the current
- * fuzzy-join operator), this means that the current fuzzy-join condition has no new input branch. This case
- * SHOULD BE regarded as a SELECT over one of the previous fuzzy-joins.
- * 2. Otherwise, we can apply this rule to the current fuzzy-join operator to a new prefix-based fuzzy-join plan.
- */
- private boolean isPrefixFuzzyJoin(IOptimizationContext context, ILogicalOperator leftInputOp,
- ILogicalOperator rightInputOp, LogicalVariable rightInputVar, List<LogicalVariable> leftInputPKs,
- List<LogicalVariable> rightInputPKs, IAType leftType) throws AlgebricksException {
- Collection<LogicalVariable> currentPKs = new HashSet<>();
- currentPKs.addAll(leftInputPKs);
- currentPKs.addAll(rightInputPKs);
- // If PKs derived from the both branches are SAME as that of a previous fuzzyjoin, we treat this fuzzyjoin
- // condition as a select over that fuzzyjoin.
- for (int i = 0; i < previousPKs.size(); i++) {
- if (previousPKs.get(i).containsAll(currentPKs) && currentPKs.containsAll(previousPKs.get(i))) {
- return false;
- }
- }
-
- //Suppose we want to query on the same dataset on the different fields, i.e. A.a1 ~= B.b1 AND A.a2 ~= B.b2
- //We conduct this query as a select over a fuzzyjoin based on the PK inclusion relationship.
- previousPKs.add(currentPKs);
- // Avoids the duplicated PK generation in findPrimaryKeysInSubplan, especially for multiway fuzzy join.
- // Refer to fj-dblp-csx-hybrid.aql in the optimized tests for example.
- IsomorphismUtilities.mergeHomogeneousPK(leftInputOp, leftInputPKs);
- // Fails if primary keys could not be inferred.
- if (leftInputPKs.isEmpty() || rightInputPKs.isEmpty()) {
- return false;
- }
-
- IAType rightType = (IAType) context.getOutputTypeEnvironment(rightInputOp).getVarType(rightInputVar);
- // left-hand side and right-hand side of fuzzyjoin should be the same type
- IAType actualLeftType = TypeComputeUtils.getActualType(leftType);
- IAType actualRightType = TypeComputeUtils.getActualType(rightType);
- if (!actualLeftType.deepEqual(actualRightType)) {
- return false;
- }
- return true;
- }
-
- private String generateAqlTemplate(MetadataProvider metadataProvider, AbstractBinaryJoinOperator joinOp,
- AbstractFunctionCallExpression simFuncExpr, List<LogicalVariable> leftInputPKs, IAType leftType,
- List<LogicalVariable> rightInputPKs, ILogicalExpression thresholdConstantExpr) throws AlgebricksException {
- FunctionIdentifier funcId = FuzzyUtils.getTokenizer(leftType.getTypeTag());
- String tokenizer = "";
- if (funcId != null) {
- tokenizer = funcId.getName();
- }
-
- String simFunction = FuzzyUtils.getSimFunction(simFuncExpr.getFunctionIdentifier());
- float simThreshold;
- ConstantExpression constExpr = (ConstantExpression) thresholdConstantExpr;
- AsterixConstantValue constVal = (AsterixConstantValue) constExpr.getValue();
- if (constVal.getObject().getType().equals(BuiltinType.AFLOAT)) {
- simThreshold = ((AFloat) constVal.getObject()).getFloatValue();
- } else {
- simThreshold = FuzzyUtils.getSimThreshold(metadataProvider);
- }
-
- // finalize AQL+ query
- String prepareJoin;
- switch (joinOp.getJoinKind()) {
- case INNER:
- prepareJoin = AQLPLUS_INNER_JOIN + AQLPLUS;
- break;
- case LEFT_OUTER:
- prepareJoin = AQLPLUS_LEFTOUTER_JOIN + AQLPLUS;
- break;
- default:
- throw new CompilationException(ErrorCode.COMPILATION_INVALID_EXPRESSION);
- }
- String groupByLeft = "";
- String joinCondLeft = "";
- // Step2. By default, we triggered the prefix fuzzy join strategy, which needs to initialize the mapping from
- // the shared token to the actual tuples of the both sides. left(right)InputPKs is used to extract those
- // mappings from prefix tokens to tuples.
- for (int i = 0; i < leftInputPKs.size(); i++) {
- if (i > 0) {
- groupByLeft += ", ";
- joinCondLeft += " and ";
- }
- groupByLeft += String.format(Locale.US, GROUPBY_LEFT, i, i);
- joinCondLeft += String.format(Locale.US, JOIN_COND_LEFT, i, i);
- }
-
- String groupByRight = "";
- String joinCondRight = "";
- for (int i = 0; i < rightInputPKs.size(); i++) {
- if (i > 0) {
- groupByRight += ", ";
- joinCondRight += " and ";
- }
- groupByRight += String.format(Locale.US, GROUPBY_RIGHT, i, i);
- joinCondRight += String.format(Locale.US, JOIN_COND_RIGHT, i, i);
- }
- return String.format(Locale.US, prepareJoin, tokenizer, tokenizer, simFunction, simThreshold, tokenizer,
- tokenizer, simFunction, simThreshold, simFunction, simThreshold, simThreshold, groupByLeft,
- groupByRight, joinCondRight, joinCondLeft);
- }
-
- private ILogicalOperator generatePrefixFuzzyJoinSubplan(IOptimizationContext context,
- MetadataProvider metadataProvider, String aqlPlus, ILogicalOperator leftInputOp,
- List<LogicalVariable> leftInputPKs, LogicalVariable leftInputVar, ILogicalOperator rightInputOp,
- List<LogicalVariable> rightInputPKs, LogicalVariable rightInputVar) throws AlgebricksException {
- // Step3. Translate the tokenizer, join condition and group by (shared token) as shown
- // in the above AQLPLUS template.
- Counter counter = new Counter(context.getVarCounter());
- // The translator will compile metadata internally. Run this compilation
- // under the same transaction id as the "outer" compilation.
- AqlPlusExpressionToPlanTranslator translator = new AqlPlusExpressionToPlanTranslator(metadataProvider, counter);
-
- LogicalOperatorDeepCopyWithNewVariablesVisitor copyVisitor =
- new LogicalOperatorDeepCopyWithNewVariablesVisitor(context, context);
-
- // Step3.1. Substitute the variable references of the above AQLPLUS template with
- // the actually attached variables.
- translator.addOperatorToMetaScope(new VarIdentifier("##LEFT_0"), leftInputOp);
- translator.addVariableToMetaScope(new VarIdentifier("$$LEFT_0"), leftInputVar);
- for (int i = 0; i < leftInputPKs.size(); i++) {
- translator.addVariableToMetaScope(new VarIdentifier("$$LEFTPK_0_" + i), leftInputPKs.get(i));
- }
-
- // Step3.2. right side again.
- translator.addOperatorToMetaScope(new VarIdentifier("##RIGHT_0"), rightInputOp);
- translator.addVariableToMetaScope(new VarIdentifier("$$RIGHT_0"), rightInputVar);
- for (int i = 0; i < rightInputPKs.size(); i++) {
- translator.addVariableToMetaScope(new VarIdentifier("$$RIGHTPK_0_" + i), rightInputPKs.get(i));
- }
-
- // Step3.3. the suffix 0-3 is used for identifying the different level of variable references.
- ILogicalOperator leftInputOpCopy = copyVisitor.deepCopy(leftInputOp);
- translator.addOperatorToMetaScope(new VarIdentifier("##LEFT_1"), leftInputOpCopy);
- LogicalVariable leftInputVarCopy = copyVisitor.varCopy(leftInputVar);
- translator.addVariableToMetaScope(new VarIdentifier("$$LEFT_1"), leftInputVarCopy);
- for (int i = 0; i < leftInputPKs.size(); i++) {
- leftInputVarCopy = copyVisitor.varCopy(leftInputPKs.get(i));
- translator.addVariableToMetaScope(new VarIdentifier("$$LEFTPK_1_" + i), leftInputVarCopy);
- }
- copyVisitor.updatePrimaryKeys(context);
- copyVisitor.reset();
-
- // Notice: pick side to run Stage 1, currently always picks RIGHT side. It means that the right side will
- // produce the token order as well as its own token list.
- for (int i = SUBSET_RIGHT_INDEX; i <= LENGTH_RIGHT_INDEX; i++) {
- translator.addOperatorToMetaScope(new VarIdentifier("##RIGHT_" + i), copyVisitor.deepCopy(rightInputOp));
- LogicalVariable rightInputVarCopy = copyVisitor.varCopy(rightInputVar);
- translator.addVariableToMetaScope(new VarIdentifier("$$RIGHT_" + i), rightInputVarCopy);
- for (int j = 0; j < rightInputPKs.size(); j++) {
- rightInputVarCopy = copyVisitor.varCopy(rightInputPKs.get(j));
- translator.addVariableToMetaScope(new VarIdentifier("$$RIGHTPK_" + i + "_" + j), rightInputVarCopy);
- }
- copyVisitor.updatePrimaryKeys(context);
- copyVisitor.reset();
- }
- counter.set(context.getVarCounter());
-
- AQLPlusParser parser = new AQLPlusParser(new StringReader(aqlPlus));
- parser.initScope();
- parser.setVarCounter(counter);
- List<Clause> clauses;
- try {
- clauses = parser.Clauses();
- } catch (ParseException e) {
- throw CompilationException.create(ErrorCode.COMPILATION_TRANSLATION_ERROR, e);
- }
-
- // Step 4. The essential substitution with translator.
- ILogicalPlan plan;
- try {
- plan = translator.translate(clauses);
- } catch (CompilationException e) {
- throw CompilationException.create(ErrorCode.COMPILATION_TRANSLATION_ERROR, e);
- }
- context.setVarCounter(counter.get());
-
- return plan.getRoots().get(0).getValue();
- }
-
- // Since the generatePrefixFuzzyJoinSubplan generates the prefix-based join operators for the partial simJoin
- // of expRef, we need to add the full condition expRef\getItemExprRef into the top-level operator of the plan.
- // Notice: Any composite select on leftOuterJoin with fuzzyjoin condition inlined can be regarded as its example.
- // Example: leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.aql or with more extra conditions inlined.
- private void setConditionForLeftOuterJoin(LeftOuterJoinOperator topJoin, Mutable<ILogicalExpression> expRef) {
- // Combine the conditions of top join of aqlplus plan and the original join
- AbstractFunctionCallExpression andFunc =
- new ScalarFunctionCallExpression(FunctionUtil.getFunctionInfo(AlgebricksBuiltinFunctions.AND));
-
- List<Mutable<ILogicalExpression>> conjs = new ArrayList<>();
- if (topJoin.getCondition().getValue().splitIntoConjuncts(conjs)) {
- andFunc.getArguments().addAll(conjs);
- } else {
- andFunc.getArguments().add(new MutableObject<>(topJoin.getCondition().getValue()));
- }
-
- List<Mutable<ILogicalExpression>> conjs2 = new ArrayList<>();
- if (expRef.getValue().splitIntoConjuncts(conjs2)) {
- andFunc.getArguments().addAll(conjs2);
- } else {
- andFunc.getArguments().add(expRef);
- }
- topJoin.getCondition().setValue(andFunc);
- }
-
- /**
- * Look for GET_ITEM function call.
- */
- private Mutable<ILogicalExpression> getSimilarityExpression(Mutable<ILogicalExpression> exprRef) {
- ILogicalExpression exp = exprRef.getValue();
- if (exp.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
- AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) exp;
- if (funcExpr.getFunctionIdentifier().equals(BuiltinFunctions.GET_ITEM)) {
- return exprRef;
- }
- if (funcExpr.getFunctionIdentifier().equals(AlgebricksBuiltinFunctions.AND)) {
- for (Mutable<ILogicalExpression> arg : funcExpr.getArguments()) {
- Mutable<ILogicalExpression> expRefRet = getSimilarityExpression(arg);
- if (expRefRet != null) {
- return expRefRet;
- }
- }
- }
- }
- return null;
- }
-
- // To extract all the PKs of the liveVars referenced by on of the fuzzyjoin branch branch.
- private List<LogicalVariable> findPrimaryKeysInSubplan(Collection<LogicalVariable> liveVars,
- IOptimizationContext context) {
- Collection<LogicalVariable> primaryKeys = new HashSet<>();
- for (LogicalVariable var : liveVars) {
- List<LogicalVariable> pks = context.findPrimaryKey(var);
- if (pks != null) {
- primaryKeys.addAll(pks);
- }
- }
- if (primaryKeys.isEmpty()) {
- return new ArrayList<>();
- }
- return new ArrayList<>(primaryKeys);
- }
-}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceDynamicTypeCastForExternalFunctionRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceDynamicTypeCastForExternalFunctionRule.java
index a00933a..d3eb0c2 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceDynamicTypeCastForExternalFunctionRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceDynamicTypeCastForExternalFunctionRule.java
@@ -19,9 +19,8 @@
package org.apache.asterix.optimizer.rules;
-import org.apache.asterix.lang.common.util.FunctionUtil;
-import org.apache.asterix.metadata.functions.ExternalScalarFunctionInfo;
import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.ExternalFunctionInfo;
import org.apache.asterix.om.typecomputer.base.TypeCastUtils;
import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.ATypeTag;
@@ -69,7 +68,7 @@
}
}
// if the current function is builtin function, skip the type casting
- if (BuiltinFunctions.getBuiltinFunctionIdentifier(funcCallExpr.getFunctionIdentifier()) != null) {
+ if (BuiltinFunctions.getBuiltinFunctionInfo(funcCallExpr.getFunctionIdentifier()) != null) {
return changed;
}
IAType inputType;
@@ -78,7 +77,7 @@
for (int i = 0; i < funcCallExpr.getArguments().size(); i++) {
Mutable<ILogicalExpression> argExpr = funcCallExpr.getArguments().get(i);
inputType = (IAType) op.computeOutputTypeEnvironment(context).getType(argExpr.getValue());
- reqArgType = ((ExternalScalarFunctionInfo) funcCallExpr.getFunctionInfo()).getArgumentTypes().get(i);
+ reqArgType = ((ExternalFunctionInfo) funcCallExpr.getFunctionInfo()).getParameterTypes().get(i);
if (reqArgType.getTypeTag() == ATypeTag.OBJECT) {
castFlag = !IntroduceDynamicTypeCastRule.compatible((ARecordType) reqArgType, inputType,
@@ -97,8 +96,8 @@
checkUnknown = true;
}
if (castFlag || checkUnknown) {
- AbstractFunctionCallExpression castFunc =
- new ScalarFunctionCallExpression(FunctionUtil.getFunctionInfo(BuiltinFunctions.CAST_TYPE));
+ AbstractFunctionCallExpression castFunc = new ScalarFunctionCallExpression(
+ BuiltinFunctions.getBuiltinFunctionInfo(BuiltinFunctions.CAST_TYPE));
castFunc.setSourceLocation(argExpr.getValue().getSourceLocation());
castFunc.getArguments().add(argExpr);
TypeCastUtils.setRequiredAndInputTypes(castFunc, reqArgType, inputType);
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceMaterializationForInsertWithSelfScanRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceMaterializationForInsertWithSelfScanRule.java
index f4d8419..d838d71 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceMaterializationForInsertWithSelfScanRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceMaterializationForInsertWithSelfScanRule.java
@@ -70,10 +70,12 @@
materializeOperator.getInputs()
.add(new MutableObject<ILogicalOperator>(insertOp.getInputs().get(0).getValue()));
context.computeAndSetTypeEnvironmentForOperator(materializeOperator);
+ materializeOperator.recomputeSchema();
insertOp.getInputs().clear();
insertOp.getInputs().add(new MutableObject<ILogicalOperator>(materializeOperator));
context.computeAndSetTypeEnvironmentForOperator(insertOp);
+ insertOp.recomputeSchema();
return true;
} else {
return false;
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceRandomPartitioningFeedComputationRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceRandomPartitioningFeedComputationRule.java
index 4a75cb3..9195c5e 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceRandomPartitioningFeedComputationRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceRandomPartitioningFeedComputationRule.java
@@ -75,6 +75,7 @@
exchangeOp.setExecutionMode(em);
exchangeOp.computeDeliveredPhysicalProperties(context);
context.computeAndSetTypeEnvironmentForOperator(exchangeOp);
+ exchangeOp.recomputeSchema();
AssignOperator assignOp = (AssignOperator) opRef.getValue();
AssignPOperator assignPhyOp = (AssignPOperator) assignOp.getPhysicalOperator();
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
index 0b75be6..ed35026 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
@@ -76,6 +76,7 @@
import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator.Kind;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.TokenizeOperator;
+import org.apache.hyracks.algebricks.core.algebra.util.OperatorManipulationUtil;
import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
import org.apache.hyracks.api.exceptions.SourceLocation;
@@ -351,31 +352,40 @@
// TokenizeOperator to tokenize [SK, PK] pairs
TokenizeOperator tokenUpdate = new TokenizeOperator(dataSourceIndex,
- primaryIndexModificationOp.getPrimaryKeyExpressions(), secondaryExpressions,
- tokenizeKeyVars, filterExpression, primaryIndexModificationOp.getOperation(),
- primaryIndexModificationOp.isBulkload(), isPartitioned, varTypes);
+ OperatorManipulationUtil
+ .cloneExpressions(primaryIndexModificationOp.getPrimaryKeyExpressions()),
+ secondaryExpressions, tokenizeKeyVars,
+ filterExpression != null
+ ? new MutableObject<>(filterExpression.getValue().cloneExpression()) : null,
+ primaryIndexModificationOp.getOperation(), primaryIndexModificationOp.isBulkload(),
+ isPartitioned, varTypes);
tokenUpdate.setSourceLocation(sourceLoc);
tokenUpdate.getInputs().add(new MutableObject<ILogicalOperator>(currentTop));
context.computeAndSetTypeEnvironmentForOperator(tokenUpdate);
replicateOutput = tokenUpdate;
indexUpdate = new IndexInsertDeleteUpsertOperator(dataSourceIndex,
- primaryIndexModificationOp.getPrimaryKeyExpressions(), tokenizeKeyExprs, filterExpression,
- primaryIndexModificationOp.getOperation(), primaryIndexModificationOp.isBulkload(),
- primaryIndexModificationOp.getAdditionalNonFilteringExpressions() == null ? 0
- : primaryIndexModificationOp.getAdditionalNonFilteringExpressions().size());
- indexUpdate.setSourceLocation(sourceLoc);
- indexUpdate.setAdditionalFilteringExpressions(filteringExpressions);
- indexUpdate.getInputs().add(new MutableObject<ILogicalOperator>(tokenUpdate));
- } else {
- // When TokenizeOperator is not needed
- indexUpdate = new IndexInsertDeleteUpsertOperator(dataSourceIndex,
- primaryIndexModificationOp.getPrimaryKeyExpressions(), secondaryExpressions,
- filterExpression, primaryIndexModificationOp.getOperation(),
+ OperatorManipulationUtil
+ .cloneExpressions(primaryIndexModificationOp.getPrimaryKeyExpressions()),
+ tokenizeKeyExprs, filterExpression, primaryIndexModificationOp.getOperation(),
primaryIndexModificationOp.isBulkload(),
primaryIndexModificationOp.getAdditionalNonFilteringExpressions() == null ? 0
: primaryIndexModificationOp.getAdditionalNonFilteringExpressions().size());
indexUpdate.setSourceLocation(sourceLoc);
- indexUpdate.setAdditionalFilteringExpressions(filteringExpressions);
+ indexUpdate.setAdditionalFilteringExpressions(
+ OperatorManipulationUtil.cloneExpressions(filteringExpressions));
+ indexUpdate.getInputs().add(new MutableObject<ILogicalOperator>(tokenUpdate));
+ } else {
+ // When TokenizeOperator is not needed
+ indexUpdate = new IndexInsertDeleteUpsertOperator(dataSourceIndex,
+ OperatorManipulationUtil
+ .cloneExpressions(primaryIndexModificationOp.getPrimaryKeyExpressions()),
+ secondaryExpressions, filterExpression, primaryIndexModificationOp.getOperation(),
+ primaryIndexModificationOp.isBulkload(),
+ primaryIndexModificationOp.getAdditionalNonFilteringExpressions() == null ? 0
+ : primaryIndexModificationOp.getAdditionalNonFilteringExpressions().size());
+ indexUpdate.setSourceLocation(sourceLoc);
+ indexUpdate.setAdditionalFilteringExpressions(
+ OperatorManipulationUtil.cloneExpressions(filteringExpressions));
replicateOutput = indexUpdate;
// We add the necessary expressions for upsert
if (primaryIndexModificationOp.getOperation() == Kind.UPSERT) {
@@ -479,12 +489,15 @@
}
DataSourceIndex dataSourceIndex = new DataSourceIndex(index, dataverseName, datasetName, mp);
indexUpdate = new IndexInsertDeleteUpsertOperator(dataSourceIndex,
- primaryIndexModificationOp.getPrimaryKeyExpressions(), secondaryExpressions, filterExpression,
- primaryIndexModificationOp.getOperation(), primaryIndexModificationOp.isBulkload(),
+ OperatorManipulationUtil
+ .cloneExpressions(primaryIndexModificationOp.getPrimaryKeyExpressions()),
+ secondaryExpressions, filterExpression, primaryIndexModificationOp.getOperation(),
+ primaryIndexModificationOp.isBulkload(),
primaryIndexModificationOp.getAdditionalNonFilteringExpressions() == null ? 0
: primaryIndexModificationOp.getAdditionalNonFilteringExpressions().size());
indexUpdate.setSourceLocation(sourceLoc);
- indexUpdate.setAdditionalFilteringExpressions(filteringExpressions);
+ indexUpdate.setAdditionalFilteringExpressions(
+ OperatorManipulationUtil.cloneExpressions(filteringExpressions));
if (primaryIndexModificationOp.getOperation() == Kind.UPSERT) {
// set before op secondary key expressions
if (filteringFields != null) {
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/LoadRecordFieldsRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/LoadRecordFieldsRule.java
index 6762e77..ce1312f 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/LoadRecordFieldsRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/LoadRecordFieldsRule.java
@@ -292,7 +292,7 @@
VariableUtilities.getLiveVariables(assign, liveInputVars);
usedVariables.removeAll(liveInputVars);
if (usedVariables.isEmpty()) {
- assign.getExpressions().get(0).setValue(fldExpr);
+ assign.getExpressions().get(0).setValue(fldExpr.cloneExpression());
return true;
} else {
return false;
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/RewriteDistinctAggregateRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/RewriteDistinctAggregateRule.java
index 92b1ab6..9d0ee59 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/RewriteDistinctAggregateRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/RewriteDistinctAggregateRule.java
@@ -321,7 +321,7 @@
if (regularAggForDistinct == null) {
throw new IllegalStateException(String.valueOf(callExpr.getFunctionIdentifier()));
}
- callExpr.setFunctionInfo(BuiltinFunctions.getAsterixFunctionInfo(regularAggForDistinct));
+ callExpr.setFunctionInfo(BuiltinFunctions.getBuiltinFunctionInfo(regularAggForDistinct));
if (assignOp != null) {
callExpr.getArguments().get(0).setValue(distinctVarRef.cloneExpression());
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixMemoryRequirementsRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixMemoryRequirementsRule.java
index f4f8fa2..abe4b71 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixMemoryRequirementsRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixMemoryRequirementsRule.java
@@ -22,9 +22,8 @@
import java.util.Set;
import java.util.function.Predicate;
-import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.metadata.declared.DataSource;
-import org.apache.asterix.metadata.declared.DataSourceId;
+import org.apache.asterix.metadata.declared.FunctionDataSource;
import org.apache.asterix.metadata.utils.MetadataConstants;
import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.asterix.optimizer.base.AsterixOptimizationContext;
@@ -53,13 +52,13 @@
}
private boolean forceMinMemoryBudget(AsterixOptimizationContext context) {
- Int2ObjectMap<Set<DataSourceId>> dataSourceMap = context.getDataSourceMap();
+ Int2ObjectMap<Set<DataSource>> dataSourceMap = context.getDataSourceMap();
if (dataSourceMap.isEmpty()) {
return false;
}
- for (Int2ObjectMap.Entry<Set<DataSourceId>> me : dataSourceMap.int2ObjectEntrySet()) {
+ for (Int2ObjectMap.Entry<Set<DataSource>> me : dataSourceMap.int2ObjectEntrySet()) {
int dataSourceType = me.getIntKey();
- Predicate<DataSourceId> dataSourceTest;
+ Predicate<DataSource> dataSourceTest;
switch (dataSourceType) {
case DataSource.Type.INTERNAL_DATASET:
dataSourceTest = SetAsterixMemoryRequirementsRule::isMinMemoryBudgetDataset;
@@ -77,13 +76,13 @@
return true;
}
- private static boolean isMinMemoryBudgetDataset(DataSourceId dsId) {
- return MetadataConstants.METADATA_DATAVERSE_NAME.equals(dsId.getDataverseName());
+ private static boolean isMinMemoryBudgetDataset(DataSource ds) {
+ return MetadataConstants.METADATA_DATAVERSE_NAME.equals(ds.getId().getDataverseName());
}
- private static boolean isMinMemoryBudgetFunction(DataSourceId dsId) {
- return BuiltinFunctions.builtinFunctionHasProperty(
- FunctionSignature.createFunctionIdentifier(dsId.getDataverseName(), dsId.getDatasourceName()),
+ private static boolean isMinMemoryBudgetFunction(DataSource ds) {
+ FunctionDataSource fds = (FunctionDataSource) ds;
+ return BuiltinFunctions.builtinFunctionHasProperty(fds.getFunctionId(),
BuiltinFunctions.DataSourceFunctionProperty.MIN_MEMORY_BUDGET);
}
}
\ No newline at end of file
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixPhysicalOperatorsRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixPhysicalOperatorsRule.java
index 31de7ee..e662737 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixPhysicalOperatorsRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixPhysicalOperatorsRule.java
@@ -34,6 +34,7 @@
import org.apache.asterix.optimizer.base.AnalysisUtil;
import org.apache.asterix.optimizer.rules.am.AccessMethodJobGenParams;
import org.apache.asterix.optimizer.rules.am.BTreeJobGenParams;
+import org.apache.asterix.optimizer.rules.util.AsterixJoinUtils;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.commons.lang3.mutable.MutableObject;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -53,6 +54,8 @@
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractUnnestMapOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestMapOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.WindowOperator;
@@ -79,6 +82,26 @@
}
@Override
+ public IPhysicalOperator visitInnerJoinOperator(InnerJoinOperator op, Boolean topLevelOp)
+ throws AlgebricksException {
+ AsterixJoinUtils.setJoinAlgorithmAndExchangeAlgo(op, topLevelOp, context);
+ if (op.getPhysicalOperator() != null) {
+ return op.getPhysicalOperator();
+ }
+ return super.visitInnerJoinOperator(op, topLevelOp);
+ }
+
+ @Override
+ public IPhysicalOperator visitLeftOuterJoinOperator(LeftOuterJoinOperator op, Boolean topLevelOp)
+ throws AlgebricksException {
+ AsterixJoinUtils.setJoinAlgorithmAndExchangeAlgo(op, topLevelOp, context);
+ if (op.getPhysicalOperator() != null) {
+ return op.getPhysicalOperator();
+ }
+ return super.visitLeftOuterJoinOperator(op, topLevelOp);
+ }
+
+ @Override
public ExternalGroupByPOperator createExternalGroupByPOperator(GroupByOperator gby) throws AlgebricksException {
Mutable<ILogicalOperator> r0 = gby.getNestedPlans().get(0).getRoots().get(0);
if (!r0.getValue().getOperatorTag().equals(LogicalOperatorTag.AGGREGATE)) {
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetupCommitExtensionOpRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetupCommitExtensionOpRule.java
index cc50dce4..fbf086b 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetupCommitExtensionOpRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetupCommitExtensionOpRule.java
@@ -110,6 +110,7 @@
//update plan link
extensionOperator.getInputs().add(eOp.getInputs().get(0));
context.computeAndSetTypeEnvironmentForOperator(extensionOperator);
+ extensionOperator.recomputeSchema();
opRef.setValue(extensionOperator);
return true;
}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/UnnestToDataScanRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/UnnestToDataScanRule.java
index 0d02385..eabe977 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/UnnestToDataScanRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/UnnestToDataScanRule.java
@@ -19,6 +19,7 @@
package org.apache.asterix.optimizer.rules;
import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionToDataSourceRewriter;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
@@ -46,7 +47,12 @@
if (f == null) {
return false;
}
- return BuiltinFunctions.getDatasourceTransformer(f.getFunctionIdentifier()).rewrite(opRef, context);
+ IFunctionToDataSourceRewriter transformer =
+ BuiltinFunctions.getDatasourceTransformer(f.getFunctionIdentifier());
+ if (transformer == null) {
+ return false;
+ }
+ return transformer.rewrite(opRef, context);
}
public static AbstractFunctionCallExpression getFunctionCall(Mutable<ILogicalOperator> opRef) {
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
index 164a505..87a2d03 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
@@ -792,6 +792,9 @@
} else {
keyVar = ((VariableReferenceExpression) searchKeyExpr).getVariableReference();
if (constExpression != null) {
+ if (constExpression.getExpressionTag() != LogicalExpressionTag.CONSTANT) {
+ constExpression = constExpression.cloneExpression();
+ }
assignKeyExprList.add(new MutableObject<>(constExpression));
assignKeyVarList.add(constExprVars[i]);
}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java
index 95b7e17..bd5d82a 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java
@@ -89,21 +89,26 @@
AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
Dataset dataset = getDataset(op, context);
+ Integer filterSourceIndicator = null;
List<String> filterFieldName = null;
- ARecordType recType = null;
+ ARecordType itemType = null;
MetadataProvider mp = (MetadataProvider) context.getMetadataProvider();
if (dataset != null && dataset.getDatasetType() == DatasetType.INTERNAL) {
+ filterSourceIndicator = DatasetUtil.getFilterSourceIndicator(dataset);
filterFieldName = DatasetUtil.getFilterField(dataset);
- IAType itemType = mp.findType(dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
- if (itemType.getTypeTag() == ATypeTag.OBJECT) {
- recType = (ARecordType) itemType;
+ IAType filterSourceType = filterSourceIndicator == null || filterSourceIndicator == 0
+ ? mp.findType(dataset.getItemTypeDataverseName(), dataset.getItemTypeName())
+ : mp.findType(dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName());
+
+ if (filterSourceType.getTypeTag() == ATypeTag.OBJECT) {
+ itemType = (ARecordType) filterSourceType;
}
}
- if (filterFieldName == null || recType == null) {
+ if (filterFieldName == null || itemType == null) {
return false;
}
- IAType filterType = recType.getSubFieldType(filterFieldName);
+ IAType filterType = itemType.getSubFieldType(filterFieldName);
typeEnvironment = context.getOutputTypeEnvironment(op);
ILogicalExpression condExpr = ((SelectOperator) op).getCondition().getValue();
@@ -116,10 +121,11 @@
for (int i = 0; i < analysisCtx.getMatchedFuncExprs().size(); i++) {
IOptimizableFuncExpr optFuncExpr = analysisCtx.getMatchedFuncExpr(i);
- boolean found = findMacthedExprFieldName(optFuncExpr, op, dataset, recType, datasetIndexes, context);
- // the field name source should be from the dataset record, i.e. source should be == 0
+ boolean found = findMacthedExprFieldName(optFuncExpr, op, dataset, itemType, datasetIndexes, context,
+ filterSourceIndicator);
+ // the field name source should be consistent with the filter source indicator
if (found && optFuncExpr.getFieldName(0).equals(filterFieldName)
- && optFuncExpr.getFieldSource(0) == 0) {
+ && optFuncExpr.getFieldSource(0) == filterSourceIndicator) {
optFuncExprs.add(optFuncExpr);
}
}
@@ -490,8 +496,8 @@
}
private boolean findMacthedExprFieldName(IOptimizableFuncExpr optFuncExpr, AbstractLogicalOperator op,
- Dataset dataset, ARecordType recType, List<Index> datasetIndexes, IOptimizationContext context)
- throws AlgebricksException {
+ Dataset dataset, ARecordType filterSourceType, List<Index> datasetIndexes, IOptimizationContext context,
+ Integer filterSourceIndicator) throws AlgebricksException {
AbstractLogicalOperator descendantOp = (AbstractLogicalOperator) op.getInputs().get(0).getValue();
while (descendantOp != null) {
if (descendantOp.getOperatorTag() == LogicalOperatorTag.ASSIGN) {
@@ -503,13 +509,16 @@
if (funcVarIndex == -1) {
continue;
}
- // TODO(ali): this SQ NPE should be investigated
- List<String> fieldName =
- getFieldNameFromSubAssignTree(optFuncExpr, descendantOp, varIndex, recType).second;
- if (fieldName == null) {
+ Pair<ARecordType, List<String>> fieldNamePairs =
+ getFieldNameFromSubAssignTree(optFuncExpr, descendantOp, varIndex, filterSourceType,
+ filterSourceIndicator, dataset.getPrimaryKeys().size());
+ if (fieldNamePairs == null) {
return false;
}
- optFuncExpr.setFieldName(funcVarIndex, fieldName, 0);
+ List<String> fieldName = fieldNamePairs.second;
+ // Since we validated the filter source in getFieldNameFromSubAssignTree, we can safely set the
+ // fieldSource to be filterSourceIndicator
+ optFuncExpr.setFieldName(funcVarIndex, fieldName, filterSourceIndicator);
return true;
}
} else if (descendantOp.getOperatorTag() == LogicalOperatorTag.DATASOURCESCAN) {
@@ -563,8 +572,11 @@
IAType metaItemType = ((MetadataProvider) context.getMetadataProvider())
.findType(dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName());
+ IAType recordItemType = ((MetadataProvider) context.getMetadataProvider())
+ .findType(dataset.getMetaItemTypeDataverseName(), dataset.getItemTypeName());
+ ARecordType recordType = (ARecordType) recordItemType;
ARecordType metaRecType = (ARecordType) metaItemType;
- int numSecondaryKeys = KeyFieldTypeUtil.getNumSecondaryKeys(index, recType, metaRecType);
+ int numSecondaryKeys = KeyFieldTypeUtil.getNumSecondaryKeys(index, recordType, metaRecType);
List<String> fieldName;
int keySource;
if (varIndex >= numSecondaryKeys) {
@@ -596,7 +608,8 @@
}
private Pair<ARecordType, List<String>> getFieldNameFromSubAssignTree(IOptimizableFuncExpr optFuncExpr,
- AbstractLogicalOperator op, int varIndex, ARecordType recType) {
+ AbstractLogicalOperator op, int varIndex, ARecordType filterSourceType, Integer filterSourceIndicator,
+ int numOfPKeys) {
AbstractLogicalExpression expr = null;
if (op.getOperatorTag() == LogicalOperatorTag.ASSIGN) {
AssignOperator assignOp = (AssignOperator) op;
@@ -619,8 +632,12 @@
for (int varCheck = 0; varCheck < op.getInputs().size(); varCheck++) {
AbstractLogicalOperator nestedOp = (AbstractLogicalOperator) op.getInputs().get(varCheck).getValue();
if (nestedOp.getOperatorTag() != LogicalOperatorTag.ASSIGN) {
- if (varCheck == op.getInputs().size() - 1) {
-
+ if (nestedOp.getOperatorTag() != LogicalOperatorTag.DATASOURCESCAN) {
+ return null;
+ }
+ List<LogicalVariable> scannedVars = ((DataSourceScanOperator) nestedOp).getScanVariables();
+ if (scannedVars.indexOf(usedVar) != filterSourceIndicator + numOfPKeys) {
+ return null;
}
} else {
int nestedAssignVar = ((AssignOperator) nestedOp).getVariables().indexOf(usedVar);
@@ -630,9 +647,10 @@
//get the nested info from the lower input
Pair<ARecordType, List<String>> lowerInfo = getFieldNameFromSubAssignTree(optFuncExpr,
(AbstractLogicalOperator) op.getInputs().get(varCheck).getValue(), nestedAssignVar,
- recType);
+ filterSourceType, filterSourceIndicator, numOfPKeys);
if (lowerInfo != null) {
- recType = lowerInfo.first;
+ // propagate filterSourceType in case the filter value comes from a nested attribute.
+ filterSourceType = lowerInfo.first;
returnList = lowerInfo.second;
}
}
@@ -644,18 +662,18 @@
return null;
}
returnList.add(fieldName);
- return new Pair<>(recType, returnList);
+ return new Pair<>(filterSourceType, returnList);
} else if (funcIdent == BuiltinFunctions.FIELD_ACCESS_BY_INDEX) {
Integer fieldIndex = ConstantExpressionUtil.getIntArgument(funcExpr, 1);
if (fieldIndex == null) {
return null;
}
- returnList.add(recType.getFieldNames()[fieldIndex]);
- IAType subType = recType.getFieldTypes()[fieldIndex];
+ returnList.add(filterSourceType.getFieldNames()[fieldIndex]);
+ IAType subType = filterSourceType.getFieldTypes()[fieldIndex];
if (subType.getTypeTag() == ATypeTag.OBJECT) {
- recType = (ARecordType) subType;
+ filterSourceType = (ARecordType) subType;
}
- return new Pair<>(recType, returnList);
+ return new Pair<>(filterSourceType, returnList);
}
}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/AsterixJoinUtils.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/AsterixJoinUtils.java
new file mode 100644
index 0000000..3a07e10
--- /dev/null
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/AsterixJoinUtils.java
@@ -0,0 +1,85 @@
+/*
+ * 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.optimizer.rules.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.asterix.common.annotations.RangeAnnotation;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator;
+import org.apache.hyracks.api.exceptions.ErrorCode;
+import org.apache.hyracks.api.exceptions.IWarningCollector;
+import org.apache.hyracks.api.exceptions.Warning;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public class AsterixJoinUtils {
+
+ private static final int LEFT = 0;
+ private static final int RIGHT = 1;
+
+ private AsterixJoinUtils() {
+ }
+
+ public static void setJoinAlgorithmAndExchangeAlgo(AbstractBinaryJoinOperator op, Boolean topLevelOp,
+ IOptimizationContext context) throws AlgebricksException {
+ if (!topLevelOp) {
+ return;
+ }
+ ILogicalExpression conditionLE = op.getCondition().getValue();
+ if (conditionLE.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
+ return;
+ }
+ List<LogicalVariable> sideLeft = new ArrayList<>(1);
+ List<LogicalVariable> sideRight = new ArrayList<>(1);
+ List<LogicalVariable> varsLeft = op.getInputs().get(LEFT).getValue().getSchema();
+ List<LogicalVariable> varsRight = op.getInputs().get(RIGHT).getValue().getSchema();
+ AbstractFunctionCallExpression fexp = (AbstractFunctionCallExpression) conditionLE;
+ FunctionIdentifier fi =
+ IntervalJoinUtils.isIntervalJoinCondition(fexp, varsLeft, varsRight, sideLeft, sideRight, LEFT, RIGHT);
+ if (fi == null) {
+ return;
+ }
+ RangeAnnotation rangeAnnotation = IntervalJoinUtils.findRangeAnnotation(fexp);
+ if (rangeAnnotation == null) {
+ return;
+ }
+ //Check RangeMap type
+ RangeMap rangeMap = (RangeMap) rangeAnnotation.getObject();
+ if (rangeMap.getTag(0, 0) != ATypeTag.DATETIME.serialize() && rangeMap.getTag(0, 0) != ATypeTag.DATE.serialize()
+ && rangeMap.getTag(0, 0) != ATypeTag.TIME.serialize()) {
+ IWarningCollector warningCollector = context.getWarningCollector();
+ if (warningCollector.shouldWarn()) {
+ warningCollector.warn(Warning.forHyracks(op.getSourceLocation(), ErrorCode.INAPPLICABLE_HINT,
+ "Date, DateTime, and Time are only range hints types supported for interval joins"));
+ }
+ return;
+ }
+ IntervalPartitions intervalPartitions =
+ IntervalJoinUtils.createIntervalPartitions(op, fi, sideLeft, sideRight, rangeMap, context, LEFT, RIGHT);
+ IntervalJoinUtils.setSortMergeIntervalJoinOp(op, fi, sideLeft, sideRight, context, intervalPartitions);
+ }
+}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/IntervalJoinUtils.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/IntervalJoinUtils.java
new file mode 100644
index 0000000..fa5ef51
--- /dev/null
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/IntervalJoinUtils.java
@@ -0,0 +1,252 @@
+/*
+ * 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.optimizer.rules.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.asterix.algebra.operators.physical.IntervalMergeJoinPOperator;
+import org.apache.asterix.common.annotations.RangeAnnotation;
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.lang.common.util.FunctionUtil;
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.runtime.operators.joins.interval.utils.AfterIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.BeforeIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.CoveredByIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.CoversIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.IIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.OverlappedByIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.OverlappingIntervalJoinUtilFactory;
+import org.apache.asterix.runtime.operators.joins.interval.utils.OverlapsIntervalJoinUtilFactory;
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionAnnotation;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.AbstractJoinPOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.AssignPOperator;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty.PartitioningType;
+import org.apache.hyracks.algebricks.core.algebra.properties.IntervalColumn;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public class IntervalJoinUtils {
+
+ private static final Map<FunctionIdentifier, FunctionIdentifier> INTERVAL_JOIN_CONDITIONS = new HashMap<>();
+
+ static {
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_AFTER, BuiltinFunctions.INTERVAL_BEFORE);
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_BEFORE, BuiltinFunctions.INTERVAL_AFTER);
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_COVERED_BY, BuiltinFunctions.INTERVAL_COVERS);
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_COVERS, BuiltinFunctions.INTERVAL_COVERED_BY);
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_OVERLAPPED_BY, BuiltinFunctions.INTERVAL_OVERLAPS);
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_OVERLAPPING, BuiltinFunctions.INTERVAL_OVERLAPPING);
+ INTERVAL_JOIN_CONDITIONS.put(BuiltinFunctions.INTERVAL_OVERLAPS, BuiltinFunctions.INTERVAL_OVERLAPPED_BY);
+ }
+
+ protected static RangeAnnotation findRangeAnnotation(AbstractFunctionCallExpression fexp) {
+ Iterator<IExpressionAnnotation> annotationIter = fexp.getAnnotations().values().iterator();
+ while (annotationIter.hasNext()) {
+ IExpressionAnnotation annotation = annotationIter.next();
+ if (annotation instanceof RangeAnnotation) {
+ return (RangeAnnotation) annotation;
+ }
+ }
+ return null;
+ }
+
+ protected static void setSortMergeIntervalJoinOp(AbstractBinaryJoinOperator op, FunctionIdentifier fi,
+ List<LogicalVariable> sideLeft, List<LogicalVariable> sideRight, IOptimizationContext context,
+ IntervalPartitions intervalPartitions) throws CompilationException {
+ IIntervalJoinUtilFactory mjcf = createIntervalJoinCheckerFactory(fi, intervalPartitions.getRangeMap());
+ op.setPhysicalOperator(new IntervalMergeJoinPOperator(op.getJoinKind(),
+ AbstractJoinPOperator.JoinPartitioningType.BROADCAST, sideLeft, sideRight,
+ context.getPhysicalOptimizationConfig().getMaxFramesForJoin(), mjcf, intervalPartitions));
+ }
+
+ /**
+ * Certain Relations not yet supported as seen below. Will default to regular join.
+ * Inserts partition sort key.
+ */
+ protected static IntervalPartitions createIntervalPartitions(AbstractBinaryJoinOperator op, FunctionIdentifier fi,
+ List<LogicalVariable> sideLeft, List<LogicalVariable> sideRight, RangeMap rangeMap,
+ IOptimizationContext context, int left, int right) throws AlgebricksException {
+
+ List<LogicalVariable> leftPartitionVar = new ArrayList<>(2);
+ leftPartitionVar.add(context.newVar());
+ leftPartitionVar.add(context.newVar());
+ List<LogicalVariable> rightPartitionVar = new ArrayList<>(2);
+ rightPartitionVar.add(context.newVar());
+ rightPartitionVar.add(context.newVar());
+
+ insertPartitionSortKey(op, left, leftPartitionVar, sideLeft.get(0), context);
+ insertPartitionSortKey(op, right, rightPartitionVar, sideRight.get(0), context);
+
+ List<IntervalColumn> leftIC = Collections.singletonList(new IntervalColumn(leftPartitionVar.get(0),
+ leftPartitionVar.get(1), OrderOperator.IOrder.OrderKind.ASC));
+ List<IntervalColumn> rightIC = Collections.singletonList(new IntervalColumn(rightPartitionVar.get(0),
+ rightPartitionVar.get(1), OrderOperator.IOrder.OrderKind.ASC));
+
+ //Set Partitioning Types
+ PartitioningType leftPartitioningType = PartitioningType.ORDERED_PARTITIONED;
+ PartitioningType rightPartitioningType = PartitioningType.ORDERED_PARTITIONED;
+ if (fi.equals(BuiltinFunctions.INTERVAL_OVERLAPPED_BY)) {
+ rightPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_OVERLAPS)) {
+ leftPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_OVERLAPPING)) {
+ leftPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ rightPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_COVERS)) {
+ leftPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_COVERED_BY)) {
+ rightPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_BEFORE)) {
+ leftPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_FOLLOWING;
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_AFTER)) {
+ rightPartitioningType = PartitioningType.PARTIAL_BROADCAST_ORDERED_FOLLOWING;
+ } else {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, fi.getName());
+ }
+ return new IntervalPartitions(rangeMap, leftIC, rightIC, leftPartitioningType, rightPartitioningType);
+ }
+
+ protected static FunctionIdentifier isIntervalJoinCondition(ILogicalExpression e,
+ Collection<LogicalVariable> inLeftAll, Collection<LogicalVariable> inRightAll,
+ Collection<LogicalVariable> outLeftFields, Collection<LogicalVariable> outRightFields, int left,
+ int right) {
+ FunctionIdentifier fiReturn;
+ boolean switchArguments = false;
+ if (e.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
+ return null;
+ }
+ AbstractFunctionCallExpression fexp = (AbstractFunctionCallExpression) e;
+ FunctionIdentifier fi = fexp.getFunctionIdentifier();
+ if (isIntervalFunction(fi)) {
+ fiReturn = fi;
+ } else {
+ return null;
+ }
+ ILogicalExpression opLeft = fexp.getArguments().get(left).getValue();
+ ILogicalExpression opRight = fexp.getArguments().get(right).getValue();
+ if (opLeft.getExpressionTag() != LogicalExpressionTag.VARIABLE
+ || opRight.getExpressionTag() != LogicalExpressionTag.VARIABLE) {
+ return null;
+ }
+ LogicalVariable var1 = ((VariableReferenceExpression) opLeft).getVariableReference();
+ if (inLeftAll.contains(var1) && !outLeftFields.contains(var1)) {
+ outLeftFields.add(var1);
+ } else if (inRightAll.contains(var1) && !outRightFields.contains(var1)) {
+ outRightFields.add(var1);
+ fiReturn = getInverseIntervalFunction(fi);
+ switchArguments = true;
+ } else {
+ return null;
+ }
+ LogicalVariable var2 = ((VariableReferenceExpression) opRight).getVariableReference();
+ if (inLeftAll.contains(var2) && !outLeftFields.contains(var2) && switchArguments) {
+ outLeftFields.add(var2);
+ } else if (inRightAll.contains(var2) && !outRightFields.contains(var2) && !switchArguments) {
+ outRightFields.add(var2);
+ } else {
+ return null;
+ }
+ return fiReturn;
+ }
+
+ /**
+ * Certain Relations not yet supported as seen below. Will default to regular join.
+ */
+ private static IIntervalJoinUtilFactory createIntervalJoinCheckerFactory(FunctionIdentifier fi, RangeMap rangeMap)
+ throws CompilationException {
+ IIntervalJoinUtilFactory mjcf;
+ if (fi.equals(BuiltinFunctions.INTERVAL_OVERLAPPED_BY)) {
+ mjcf = new OverlappedByIntervalJoinUtilFactory();
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_OVERLAPS)) {
+ mjcf = new OverlapsIntervalJoinUtilFactory();
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_COVERS)) {
+ mjcf = new CoversIntervalJoinUtilFactory();
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_COVERED_BY)) {
+ mjcf = new CoveredByIntervalJoinUtilFactory();
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_BEFORE)) {
+ mjcf = new BeforeIntervalJoinUtilFactory();
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_AFTER)) {
+ mjcf = new AfterIntervalJoinUtilFactory();
+ } else if (fi.equals(BuiltinFunctions.INTERVAL_OVERLAPPING)) {
+ mjcf = new OverlappingIntervalJoinUtilFactory(rangeMap);
+ } else {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, fi.getName());
+ }
+ return mjcf;
+ }
+
+ private static boolean isIntervalFunction(FunctionIdentifier fi) {
+ return INTERVAL_JOIN_CONDITIONS.containsKey(fi);
+ }
+
+ private static FunctionIdentifier getInverseIntervalFunction(FunctionIdentifier fi) {
+ return INTERVAL_JOIN_CONDITIONS.get(fi);
+ }
+
+ private static void insertPartitionSortKey(AbstractBinaryJoinOperator op, int branch,
+ List<LogicalVariable> partitionVars, LogicalVariable intervalVar, IOptimizationContext context)
+ throws AlgebricksException {
+ Mutable<ILogicalExpression> intervalExp = new MutableObject<>(new VariableReferenceExpression(intervalVar));
+
+ List<Mutable<ILogicalExpression>> assignExps = new ArrayList<>();
+ // Start partition
+ IFunctionInfo startFi = FunctionUtil.getFunctionInfo(BuiltinFunctions.ACCESSOR_TEMPORAL_INTERVAL_START);
+ ScalarFunctionCallExpression startPartitionExp = new ScalarFunctionCallExpression(startFi, intervalExp);
+ assignExps.add(new MutableObject<>(startPartitionExp));
+ // End partition
+ IFunctionInfo endFi = FunctionUtil.getFunctionInfo(BuiltinFunctions.ACCESSOR_TEMPORAL_INTERVAL_END);
+ ScalarFunctionCallExpression endPartitionExp = new ScalarFunctionCallExpression(endFi, intervalExp);
+ assignExps.add(new MutableObject<>(endPartitionExp));
+
+ AssignOperator ao = new AssignOperator(partitionVars, assignExps);
+ ao.setSourceLocation(op.getSourceLocation());
+ ao.setExecutionMode(op.getExecutionMode());
+ AssignPOperator apo = new AssignPOperator();
+ ao.setPhysicalOperator(apo);
+ Mutable<ILogicalOperator> aoRef = new MutableObject<>(ao);
+ ao.getInputs().add(op.getInputs().get(branch));
+ op.getInputs().set(branch, aoRef);
+
+ context.computeAndSetTypeEnvironmentForOperator(ao);
+ ao.recomputeSchema();
+ }
+}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/IntervalPartitions.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/IntervalPartitions.java
new file mode 100644
index 0000000..bc78017
--- /dev/null
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/IntervalPartitions.java
@@ -0,0 +1,82 @@
+/*
+ * 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.optimizer.rules.util;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty.PartitioningType;
+import org.apache.hyracks.algebricks.core.algebra.properties.IntervalColumn;
+import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public class IntervalPartitions {
+
+ private final RangeMap rangeMap;
+ private final List<IntervalColumn> leftIntervalColumn;
+ private final List<IntervalColumn> rightIntervalColumn;
+ private final PartitioningType leftPartitioningType;
+ private final PartitioningType rightPartitioningType;
+
+ IntervalPartitions(RangeMap rangeMap, List<IntervalColumn> leftIntervalColumn,
+ List<IntervalColumn> rightIntervalColumn, PartitioningType leftPartitioningType,
+ PartitioningType rightPartitioningType) {
+ this.rangeMap = rangeMap;
+ this.leftIntervalColumn = leftIntervalColumn;
+ this.rightIntervalColumn = rightIntervalColumn;
+ this.leftPartitioningType = leftPartitioningType;
+ this.rightPartitioningType = rightPartitioningType;
+ }
+
+ public RangeMap getRangeMap() {
+ return rangeMap;
+ }
+
+ public PartitioningType getLeftPartitioningType() {
+ return leftPartitioningType;
+ }
+
+ public PartitioningType getRightPartitioningType() {
+ return rightPartitioningType;
+ }
+
+ public List<IntervalColumn> getLeftIntervalColumn() {
+ return leftIntervalColumn;
+ }
+
+ public List<IntervalColumn> getRightIntervalColumn() {
+ return rightIntervalColumn;
+ }
+
+ public List<OrderColumn> getLeftStartColumn() {
+ LogicalVariable leftStartLogicalVariable = leftIntervalColumn.get(0).getStartColumn();
+ List<OrderColumn> leftOrderColumn =
+ Arrays.asList(new OrderColumn(leftStartLogicalVariable, leftIntervalColumn.get(0).getOrder()));
+ return leftOrderColumn;
+ }
+
+ public List<OrderColumn> getRightStartColumn() {
+ LogicalVariable rightStartLogicalVariable = rightIntervalColumn.get(0).getStartColumn();
+ List<OrderColumn> rightOrderColumn =
+ Arrays.asList(new OrderColumn(rightStartLogicalVariable, rightIntervalColumn.get(0).getOrder()));
+ return rightOrderColumn;
+ }
+}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlExpressionToPlanTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlExpressionToPlanTranslator.java
index c0d6f82..c82029b 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlExpressionToPlanTranslator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlExpressionToPlanTranslator.java
@@ -89,8 +89,7 @@
} else {
LogicalVariable pVar = context.newVarFromExpression(fc.getPosVarExpr());
// We set the positional variable type as INT64 type.
- returnedOp = new UnnestOperator(v, new MutableObject<>(pUnnestExpr.first), pVar, BuiltinType.AINT64,
- new PositionWriter());
+ returnedOp = new UnnestOperator(v, new MutableObject<>(pUnnestExpr.first), pVar, BuiltinType.AINT64);
}
returnedOp.getInputs().add(pUnnestExpr.second);
return new Pair<>(returnedOp, v);
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlPlusExpressionToPlanTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlPlusExpressionToPlanTranslator.java
deleted file mode 100644
index 531de59..0000000
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlPlusExpressionToPlanTranslator.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * 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.translator;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.asterix.common.exceptions.CompilationException;
-import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.lang.aql.clause.JoinClause;
-import org.apache.asterix.lang.aql.clause.MetaVariableClause;
-import org.apache.asterix.lang.aql.expression.MetaVariableExpr;
-import org.apache.asterix.lang.aql.visitor.base.IAQLPlusVisitor;
-import org.apache.asterix.lang.common.base.Clause;
-import org.apache.asterix.lang.common.base.Expression;
-import org.apache.asterix.lang.common.expression.VariableExpr;
-import org.apache.asterix.lang.common.struct.Identifier;
-import org.apache.asterix.metadata.declared.MetadataProvider;
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.common.utils.Pair;
-import org.apache.hyracks.algebricks.core.algebra.base.Counter;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
-
-/**
- * This class is an extension of AQLExpressionToPlanTranslator. Specifically, it contains the visitor for
- * three extensions (MetaVariable, MetaClause, and JoinClause) to AQL in AQL+.
- * Meta-Variable ($$) refers the primary key or variable(s) in the logical plan.
- * Meta-Clause (##) refers the operator in the logical plan.
- * Join-Clause (join, loj) is required to build an explicit join in AQL level.
- * For more details of AQL+, refer to this thesis: www.ics.uci.edu/~rares/pub/phd-thesis-vernica.pdf
- */
-
-public class AqlPlusExpressionToPlanTranslator extends AqlExpressionToPlanTranslator
- implements IAQLPlusVisitor<Pair<ILogicalOperator, LogicalVariable>, Mutable<ILogicalOperator>> {
-
- private MetaScopeLogicalVariable metaScopeExp = new MetaScopeLogicalVariable();
- private MetaScopeILogicalOperator metaScopeOp = new MetaScopeILogicalOperator();
-
- public AqlPlusExpressionToPlanTranslator(MetadataProvider metadataProvider, Counter currentVarCounter)
- throws AlgebricksException {
- super(metadataProvider, currentVarCounter);
- this.context.setTopFlwor(false);
- }
-
- public ILogicalPlan translate(List<Clause> clauses) throws AlgebricksException, CompilationException {
- if (clauses == null) {
- return null;
- }
-
- Mutable<ILogicalOperator> opRef = new MutableObject<ILogicalOperator>(new EmptyTupleSourceOperator());
- Pair<ILogicalOperator, LogicalVariable> p = null;
- for (Clause c : clauses) {
- p = c.accept(this, opRef);
- opRef = new MutableObject<ILogicalOperator>(p.first);
- }
-
- ArrayList<Mutable<ILogicalOperator>> globalPlanRoots = new ArrayList<Mutable<ILogicalOperator>>();
-
- ILogicalOperator topOp = p.first;
-
- globalPlanRoots.add(new MutableObject<ILogicalOperator>(topOp));
- ILogicalPlan plan = new ALogicalPlanImpl(globalPlanRoots);
- return plan;
- }
-
- @Override
- public Pair<ILogicalOperator, LogicalVariable> visitMetaVariableClause(MetaVariableClause mc,
- Mutable<ILogicalOperator> tupSource) throws CompilationException {
- return new Pair<ILogicalOperator, LogicalVariable>(metaScopeOp.get(mc.getVar()), null);
- }
-
- @Override
- public Pair<ILogicalOperator, LogicalVariable> visitJoinClause(JoinClause jc, Mutable<ILogicalOperator> tupSource)
- throws CompilationException {
- Mutable<ILogicalOperator> opRef = tupSource;
- Pair<ILogicalOperator, LogicalVariable> leftSide = null;
- for (Clause c : jc.getLeftClauses()) {
- leftSide = c.accept(this, opRef);
- opRef = new MutableObject<ILogicalOperator>(leftSide.first);
- }
-
- opRef = tupSource;
- Pair<ILogicalOperator, LogicalVariable> rightSide = null;
- for (Clause c : jc.getRightClauses()) {
- rightSide = c.accept(this, opRef);
- opRef = new MutableObject<ILogicalOperator>(rightSide.first);
- }
-
- Pair<ILogicalExpression, Mutable<ILogicalOperator>> whereCond =
- langExprToAlgExpression(jc.getWhereExpr(), tupSource);
-
- AbstractBinaryJoinOperator join;
- switch (jc.getKind()) {
- case INNER:
- join = new InnerJoinOperator(new MutableObject<ILogicalExpression>(whereCond.first));
- break;
- case LEFT_OUTER:
- join = new LeftOuterJoinOperator(new MutableObject<ILogicalExpression>(whereCond.first));
- break;
- default:
- throw new CompilationException(ErrorCode.COMPILATION_AQLPLUS_NO_SUCH_JOIN_TYPE);
- }
- join.getInputs().add(new MutableObject<ILogicalOperator>(leftSide.first));
- join.getInputs().add(new MutableObject<ILogicalOperator>(rightSide.first));
- return new Pair<ILogicalOperator, LogicalVariable>(join, null);
- }
-
- @Override
- public Pair<ILogicalOperator, LogicalVariable> visitMetaVariableExpr(MetaVariableExpr me,
- Mutable<ILogicalOperator> tupSource) throws CompilationException {
- LogicalVariable var = context.newVar();
- AssignOperator a = new AssignOperator(var,
- new MutableObject<ILogicalExpression>(metaScopeExp.getVariableReferenceExpression(me.getVar())));
- a.getInputs().add(tupSource);
- return new Pair<ILogicalOperator, LogicalVariable>(a, var);
- }
-
- public void addVariableToMetaScope(Identifier id, LogicalVariable var) {
- metaScopeExp.put(id, var);
- }
-
- public void addOperatorToMetaScope(Identifier id, ILogicalOperator op) {
- metaScopeOp.put(id, op);
- }
-
- // This method was overridden because of METAVARIABLE_EXPRESSION case.
- @Override
- protected Pair<ILogicalExpression, Mutable<ILogicalOperator>> langExprToAlgExpression(Expression expr,
- Mutable<ILogicalOperator> topOpRef) throws CompilationException {
- switch (expr.getKind()) {
- case METAVARIABLE_EXPRESSION:
- ILogicalExpression le = metaScopeExp.getVariableReferenceExpression(((VariableExpr) expr).getVar());
- return new Pair<ILogicalExpression, Mutable<ILogicalOperator>>(le, topOpRef);
- default:
- return super.langExprToAlgExpression(expr, topOpRef);
- }
- }
-
- /**
- * This class refers to the primary-key or other variables in the given plan in AQL+ statements level.
- */
- private class MetaScopeLogicalVariable {
- private HashMap<Identifier, LogicalVariable> map = new HashMap<Identifier, LogicalVariable>();
-
- public VariableReferenceExpression getVariableReferenceExpression(Identifier id) throws CompilationException {
- LogicalVariable var = map.get(id);
- if (var == null) {
- throw new CompilationException(ErrorCode.COMPILATION_AQLPLUS_IDENTIFIER_NOT_FOUND, id.toString());
- }
- return new VariableReferenceExpression(var);
- }
-
- public void put(Identifier id, LogicalVariable var) {
- map.put(id, var);
- }
- }
-
- /**
- * This class refers to the operators in the given plan in AQL+ statements level.
- */
- private class MetaScopeILogicalOperator {
- private HashMap<Identifier, ILogicalOperator> map = new HashMap<Identifier, ILogicalOperator>();
-
- public ILogicalOperator get(Identifier id) throws CompilationException {
- ILogicalOperator op = map.get(id);
- if (op == null) {
- throw new CompilationException(ErrorCode.COMPILATION_AQLPLUS_IDENTIFIER_NOT_FOUND, id.toString());
- }
- return op;
- }
-
- public void put(Identifier id, ILogicalOperator op) {
- map.put(id, op);
- }
- }
-
-}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
index 0f8a790..3c56a98 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
@@ -36,7 +36,6 @@
import org.apache.asterix.common.dataflow.ICcApplicationContext;
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.common.functions.FunctionConstants;
import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.lang.common.base.Expression;
@@ -90,8 +89,8 @@
import org.apache.asterix.om.base.AString;
import org.apache.asterix.om.base.IAObject;
import org.apache.asterix.om.constants.AsterixConstantValue;
+import org.apache.asterix.om.functions.BuiltinFunctionInfo;
import org.apache.asterix.om.functions.BuiltinFunctions;
-import org.apache.asterix.om.functions.FunctionInfo;
import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
@@ -263,6 +262,7 @@
assign.setExplicitOrderingProperty(new LocalOrderProperty(orderColumns));
}
+ // Load does not support meta record now.
List<String> additionalFilteringField = DatasetUtil.getFilterField(targetDatasource.getDataset());
List<LogicalVariable> additionalFilteringVars;
List<Mutable<ILogicalExpression>> additionalFilteringAssignExpressions;
@@ -366,70 +366,52 @@
topOp.getInputs().get(0).setValue(assignCollectionToSequence);
ProjectOperator projectOperator = (ProjectOperator) topOp;
projectOperator.getVariables().set(0, seqVar);
- resVar = seqVar;
+
DatasetDataSource targetDatasource =
validateDatasetInfo(metadataProvider, stmt.getDataverseName(), stmt.getDatasetName(), sourceLoc);
List<Integer> keySourceIndicator =
((InternalDatasetDetails) targetDatasource.getDataset().getDatasetDetails())
.getKeySourceIndicator();
- ArrayList<LogicalVariable> vars = new ArrayList<>();
- ArrayList<Mutable<ILogicalExpression>> exprs = new ArrayList<>();
+ ArrayList<LogicalVariable> pkeyVars = new ArrayList<>();
+ ArrayList<Mutable<ILogicalExpression>> pkeyExprs = new ArrayList<>();
List<Mutable<ILogicalExpression>> varRefsForLoading = new ArrayList<>();
List<List<String>> partitionKeys = targetDatasource.getDataset().getPrimaryKeys();
int numOfPrimaryKeys = partitionKeys.size();
for (int i = 0; i < numOfPrimaryKeys; i++) {
if (keySourceIndicator == null || keySourceIndicator.get(i).intValue() == 0) {
// record part
- PlanTranslationUtil.prepareVarAndExpression(partitionKeys.get(i), resVar, vars, exprs,
+ PlanTranslationUtil.prepareVarAndExpression(partitionKeys.get(i), seqVar, pkeyVars, pkeyExprs,
varRefsForLoading, context, sourceLoc);
} else {
// meta part
- PlanTranslationUtil.prepareMetaKeyAccessExpression(partitionKeys.get(i), unnestVar, exprs, vars,
- varRefsForLoading, context, sourceLoc);
+ PlanTranslationUtil.prepareMetaKeyAccessExpression(partitionKeys.get(i), unnestVar, pkeyExprs,
+ pkeyVars, varRefsForLoading, context, sourceLoc);
}
}
- AssignOperator assign = new AssignOperator(vars, exprs);
- assign.setSourceLocation(sourceLoc);
- List<String> additionalFilteringField = DatasetUtil.getFilterField(targetDatasource.getDataset());
- List<LogicalVariable> additionalFilteringVars;
- List<Mutable<ILogicalExpression>> additionalFilteringAssignExpressions;
- List<Mutable<ILogicalExpression>> additionalFilteringExpressions = null;
- AssignOperator additionalFilteringAssign = null;
- if (additionalFilteringField != null) {
- additionalFilteringVars = new ArrayList<>();
- additionalFilteringAssignExpressions = new ArrayList<>();
- additionalFilteringExpressions = new ArrayList<>();
+ AssignOperator pkeyAssignOp = new AssignOperator(pkeyVars, pkeyExprs);
+ pkeyAssignOp.setSourceLocation(sourceLoc);
+ pkeyAssignOp.getInputs().add(new MutableObject<>(topOp));
- PlanTranslationUtil.prepareVarAndExpression(additionalFilteringField, resVar, additionalFilteringVars,
- additionalFilteringAssignExpressions, additionalFilteringExpressions, context, sourceLoc);
+ // the filters and metas could be handled here once we have unified processing for metas in
+ // all insert/upsert/delete
- additionalFilteringAssign =
- new AssignOperator(additionalFilteringVars, additionalFilteringAssignExpressions);
- additionalFilteringAssign.getInputs().add(new MutableObject<>(topOp));
- additionalFilteringAssign.setSourceLocation(sourceLoc);
- assign.getInputs().add(new MutableObject<>(additionalFilteringAssign));
- } else {
- assign.getInputs().add(new MutableObject<>(topOp));
- }
-
- VariableReferenceExpression resVarRef2 = new VariableReferenceExpression(resVar);
- resVarRef2.setSourceLocation(sourceLoc);
- Mutable<ILogicalExpression> varRef = new MutableObject<>(resVarRef2);
+ VariableReferenceExpression seqVarRef = new VariableReferenceExpression(seqVar);
+ seqVarRef.setSourceLocation(sourceLoc);
+ Mutable<ILogicalExpression> seqRef = new MutableObject<>(seqVarRef);
ILogicalOperator leafOperator;
switch (stmt.getKind()) {
case INSERT:
- leafOperator = translateInsert(targetDatasource, varRef, varRefsForLoading,
- additionalFilteringExpressions, assign, stmt, resultMetadata);
+ leafOperator = translateInsert(targetDatasource, seqRef, varRefsForLoading, seqVar, pkeyAssignOp,
+ stmt, resultMetadata);
break;
case UPSERT:
- leafOperator = translateUpsert(targetDatasource, varRef, varRefsForLoading,
- additionalFilteringExpressions, assign, additionalFilteringField, unnestVar, topOp, exprs,
- resVar, additionalFilteringAssign, stmt, resultMetadata);
+ leafOperator = translateUpsert(targetDatasource, seqRef, varRefsForLoading, pkeyAssignOp, unnestVar,
+ topOp, pkeyExprs, seqVar, stmt, resultMetadata);
break;
case DELETE:
- leafOperator = translateDelete(targetDatasource, varRef, varRefsForLoading,
- additionalFilteringExpressions, assign, stmt);
+ leafOperator =
+ translateDelete(targetDatasource, seqRef, varRefsForLoading, seqVar, pkeyAssignOp, stmt);
break;
default:
throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
@@ -443,9 +425,8 @@
return plan;
}
- private ILogicalOperator translateDelete(DatasetDataSource targetDatasource, Mutable<ILogicalExpression> varRef,
- List<Mutable<ILogicalExpression>> varRefsForLoading,
- List<Mutable<ILogicalExpression>> additionalFilteringExpressions, ILogicalOperator assign,
+ protected ILogicalOperator translateDelete(DatasetDataSource targetDatasource, Mutable<ILogicalExpression> varRef,
+ List<Mutable<ILogicalExpression>> varRefsForLoading, LogicalVariable seqVar, ILogicalOperator pkeyAssignOp,
ICompiledDmlStatement stmt) throws AlgebricksException {
SourceLocation sourceLoc = stmt.getSourceLocation();
if (targetDatasource.getDataset().hasMetaPart()) {
@@ -453,10 +434,19 @@
targetDatasource.getDataset().getDatasetName()
+ ": delete from dataset is not supported on Datasets with Meta records");
}
+
+ List<String> filterField = DatasetUtil.getFilterField(targetDatasource.getDataset());
+ List<Mutable<ILogicalExpression>> filterExprs = null;
+
+ // currently, meta-datasets cannot be inserted.
+ if (filterField != null) {
+ filterExprs = generatedFilterExprs(pkeyAssignOp, filterField, seqVar, sourceLoc);
+ }
+
InsertDeleteUpsertOperator deleteOp = new InsertDeleteUpsertOperator(targetDatasource, varRef,
varRefsForLoading, InsertDeleteUpsertOperator.Kind.DELETE, false);
- deleteOp.setAdditionalFilteringExpressions(additionalFilteringExpressions);
- deleteOp.getInputs().add(new MutableObject<>(assign));
+ deleteOp.setAdditionalFilteringExpressions(filterExprs);
+ deleteOp.getInputs().add(new MutableObject<>(pkeyAssignOp));
deleteOp.setSourceLocation(sourceLoc);
DelegateOperator leafOperator = new DelegateOperator(new CommitOperator(true));
leafOperator.getInputs().add(new MutableObject<>(deleteOp));
@@ -464,12 +454,11 @@
return leafOperator;
}
- private ILogicalOperator translateUpsert(DatasetDataSource targetDatasource, Mutable<ILogicalExpression> varRef,
- List<Mutable<ILogicalExpression>> varRefsForLoading,
- List<Mutable<ILogicalExpression>> additionalFilteringExpressions, ILogicalOperator assign,
- List<String> additionalFilteringField, LogicalVariable unnestVar, ILogicalOperator topOp,
- List<Mutable<ILogicalExpression>> exprs, LogicalVariable resVar, AssignOperator additionalFilteringAssign,
- ICompiledDmlStatement stmt, IResultMetadata resultMetadata) throws AlgebricksException {
+ protected ILogicalOperator translateUpsert(DatasetDataSource targetDatasource,
+ Mutable<ILogicalExpression> payloadVarRef, List<Mutable<ILogicalExpression>> varRefsForLoading,
+ ILogicalOperator pkeyAssignOp, LogicalVariable unnestVar, ILogicalOperator topOp,
+ List<Mutable<ILogicalExpression>> pkeyExprs, LogicalVariable seqVar, ICompiledDmlStatement stmt,
+ IResultMetadata resultMetadata) throws AlgebricksException {
SourceLocation sourceLoc = stmt.getSourceLocation();
if (!targetDatasource.getDataset().allow(topOp, DatasetUtil.OP_UPSERT)) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
@@ -481,15 +470,15 @@
Expression returnExpression = compiledUpsert.getReturnExpression();
InsertDeleteUpsertOperator upsertOp;
ILogicalOperator rootOperator;
+ List<String> filterField = DatasetUtil.getFilterField(targetDatasource.getDataset());
+
if (targetDatasource.getDataset().hasMetaPart()) {
if (returnExpression != null) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
"Returning not allowed on datasets with Meta records");
}
- AssignOperator metaAndKeysAssign;
List<LogicalVariable> metaAndKeysVars;
List<Mutable<ILogicalExpression>> metaAndKeysExprs;
- List<Mutable<ILogicalExpression>> metaExpSingletonList;
metaAndKeysVars = new ArrayList<>();
metaAndKeysExprs = new ArrayList<>();
// add the meta function
@@ -501,18 +490,16 @@
metaFunction.setSourceLocation(sourceLoc);
// create assign for the meta part
LogicalVariable metaVar = context.newVar();
- metaExpSingletonList = new ArrayList<>(1);
VariableReferenceExpression metaVarRef = new VariableReferenceExpression(metaVar);
metaVarRef.setSourceLocation(sourceLoc);
- metaExpSingletonList.add(new MutableObject<>(metaVarRef));
metaAndKeysVars.add(metaVar);
metaAndKeysExprs.add(new MutableObject<>(metaFunction));
project.getVariables().add(metaVar);
varRefsForLoading.clear();
- for (Mutable<ILogicalExpression> assignExpr : exprs) {
+ for (Mutable<ILogicalExpression> assignExpr : pkeyExprs) {
if (assignExpr.getValue().getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
AbstractFunctionCallExpression funcCall = (AbstractFunctionCallExpression) assignExpr.getValue();
- funcCall.substituteVar(resVar, unnestVar);
+ funcCall.substituteVar(seqVar, unnestVar);
LogicalVariable pkVar = context.newVar();
metaAndKeysVars.add(pkVar);
metaAndKeysExprs.add(new MutableObject<>(assignExpr.getValue()));
@@ -521,54 +508,68 @@
}
}
// A change feed, we don't need the assign to access PKs
- upsertOp = new InsertDeleteUpsertOperator(targetDatasource, varRef, varRefsForLoading, metaExpSingletonList,
- InsertDeleteUpsertOperator.Kind.UPSERT, false);
+ upsertOp = new InsertDeleteUpsertOperator(targetDatasource, payloadVarRef, varRefsForLoading,
+ Collections.singletonList(new MutableObject<>(metaVarRef)), InsertDeleteUpsertOperator.Kind.UPSERT,
+ false);
upsertOp.setUpsertIndicatorVar(context.newVar());
upsertOp.setUpsertIndicatorVarType(BuiltinType.ABOOLEAN);
// Create and add a new variable used for representing the original record
upsertOp.setPrevRecordVar(context.newVar());
upsertOp.setPrevRecordType(targetDatasource.getItemType());
upsertOp.setSourceLocation(sourceLoc);
- if (targetDatasource.getDataset().hasMetaPart()) {
- List<LogicalVariable> metaVars = new ArrayList<>();
- metaVars.add(context.newVar());
- upsertOp.setPrevAdditionalNonFilteringVars(metaVars);
- List<Object> metaTypes = new ArrayList<>();
- metaTypes.add(targetDatasource.getMetaItemType());
- upsertOp.setPrevAdditionalNonFilteringTypes(metaTypes);
- }
- if (additionalFilteringField != null) {
- upsertOp.setPrevFilterVar(context.newVar());
- upsertOp.setPrevFilterType(
- ((ARecordType) targetDatasource.getItemType()).getFieldType(additionalFilteringField.get(0)));
- additionalFilteringAssign.getInputs().clear();
- additionalFilteringAssign.getInputs().add(assign.getInputs().get(0));
- upsertOp.getInputs().add(new MutableObject<>(additionalFilteringAssign));
- } else {
- upsertOp.getInputs().add(assign.getInputs().get(0));
- }
- metaAndKeysAssign = new AssignOperator(metaAndKeysVars, metaAndKeysExprs);
+ List<LogicalVariable> metaVars = new ArrayList<>();
+ metaVars.add(context.newVar());
+ upsertOp.setPrevAdditionalNonFilteringVars(metaVars);
+ List<Object> metaTypes = new ArrayList<>();
+ metaTypes.add(targetDatasource.getMetaItemType());
+ upsertOp.setPrevAdditionalNonFilteringTypes(metaTypes);
+
+ // insert meta key assign before project
+ AssignOperator metaAndKeysAssign = new AssignOperator(metaAndKeysVars, metaAndKeysExprs);
metaAndKeysAssign.getInputs().add(topOp.getInputs().get(0));
metaAndKeysAssign.setSourceLocation(sourceLoc);
topOp.getInputs().set(0, new MutableObject<>(metaAndKeysAssign));
- upsertOp.setAdditionalFilteringExpressions(additionalFilteringExpressions);
+
+ // insert filter assign
+ if (filterField != null) {
+ LogicalVariable filterSourceVar =
+ DatasetUtil.getFilterSourceIndicator(targetDatasource.getDataset()) == 0 ? seqVar : metaVar;
+ ARecordType filterSourceType = DatasetUtil.getFilterSourceIndicator(targetDatasource.getDataset()) == 0
+ ? (ARecordType) targetDatasource.getItemType()
+ : (ARecordType) targetDatasource.getMetaItemType();
+
+ List<Mutable<ILogicalExpression>> filterExprs =
+ generatedFilterExprs(pkeyAssignOp, filterField, filterSourceVar, sourceLoc);
+
+ upsertOp.setPrevFilterVar(context.newVar());
+ upsertOp.setPrevFilterType(filterSourceType.getFieldType(filterField.get(0)));
+ upsertOp.setAdditionalFilteringExpressions(filterExprs);
+ upsertOp.getInputs().add(pkeyAssignOp.getInputs().get(0));
+ } else {
+ upsertOp.getInputs().add(new MutableObject<>(topOp));
+ upsertOp.setAdditionalFilteringExpressions(null);
+ }
} else {
- upsertOp = new InsertDeleteUpsertOperator(targetDatasource, varRef, varRefsForLoading,
+ ARecordType recordType = (ARecordType) targetDatasource.getItemType();
+ List<Mutable<ILogicalExpression>> filterExprs = null;
+ upsertOp = new InsertDeleteUpsertOperator(targetDatasource, payloadVarRef, varRefsForLoading,
InsertDeleteUpsertOperator.Kind.UPSERT, false);
- upsertOp.setAdditionalFilteringExpressions(additionalFilteringExpressions);
- upsertOp.getInputs().add(new MutableObject<>(assign));
+
+ if (filterField != null) {
+ // add filter assign
+ filterExprs = generatedFilterExprs(pkeyAssignOp, filterField, seqVar, sourceLoc);
+ upsertOp.setPrevFilterVar(context.newVar());
+ upsertOp.setPrevFilterType(recordType.getFieldType(filterField.get(0)));
+ }
+ upsertOp.getInputs().add(new MutableObject<>(pkeyAssignOp));
+ upsertOp.setAdditionalFilteringExpressions(filterExprs);
upsertOp.setSourceLocation(sourceLoc);
upsertOp.setUpsertIndicatorVar(context.newVar());
upsertOp.setUpsertIndicatorVarType(BuiltinType.ABOOLEAN);
// Create and add a new variable used for representing the original record
- ARecordType recordType = (ARecordType) targetDatasource.getItemType();
upsertOp.setPrevRecordVar(context.newVar());
upsertOp.setPrevRecordType(recordType);
- if (additionalFilteringField != null) {
- upsertOp.setPrevFilterVar(context.newVar());
- upsertOp.setPrevFilterType(recordType.getFieldType(additionalFilteringField.get(0)));
- }
}
DelegateOperator delegateOperator = new DelegateOperator(new CommitOperator(returnExpression == null));
delegateOperator.getInputs().add(new MutableObject<>(upsertOp));
@@ -579,9 +580,8 @@
return processReturningExpression(rootOperator, upsertOp, compiledUpsert, resultMetadata);
}
- private ILogicalOperator translateInsert(DatasetDataSource targetDatasource, Mutable<ILogicalExpression> varRef,
- List<Mutable<ILogicalExpression>> varRefsForLoading,
- List<Mutable<ILogicalExpression>> additionalFilteringExpressions, ILogicalOperator assign,
+ protected ILogicalOperator translateInsert(DatasetDataSource targetDatasource, Mutable<ILogicalExpression> varRef,
+ List<Mutable<ILogicalExpression>> varRefsForLoading, LogicalVariable seqVar, ILogicalOperator pkeyAssignOp,
ICompiledDmlStatement stmt, IResultMetadata resultMetadata) throws AlgebricksException {
SourceLocation sourceLoc = stmt.getSourceLocation();
if (targetDatasource.getDataset().hasMetaPart()) {
@@ -589,11 +589,20 @@
targetDatasource.getDataset().getDatasetName()
+ ": insert into dataset is not supported on Datasets with Meta records");
}
+
+ List<String> filterField = DatasetUtil.getFilterField(targetDatasource.getDataset());
+ List<Mutable<ILogicalExpression>> filterExprs = null;
+
+ // currently, meta-datasets cannot be inserted.
+ if (filterField != null) {
+ filterExprs = generatedFilterExprs(pkeyAssignOp, filterField, seqVar, sourceLoc);
+ }
+
// Adds the insert operator.
InsertDeleteUpsertOperator insertOp = new InsertDeleteUpsertOperator(targetDatasource, varRef,
varRefsForLoading, InsertDeleteUpsertOperator.Kind.INSERT, false);
- insertOp.setAdditionalFilteringExpressions(additionalFilteringExpressions);
- insertOp.getInputs().add(new MutableObject<>(assign));
+ insertOp.setAdditionalFilteringExpressions(filterExprs);
+ insertOp.getInputs().add(new MutableObject<>(pkeyAssignOp));
insertOp.setSourceLocation(sourceLoc);
// Adds the commit operator.
@@ -607,9 +616,24 @@
return processReturningExpression(rootOperator, insertOp, compiledInsert, resultMetadata);
}
+ protected List<Mutable<ILogicalExpression>> generatedFilterExprs(ILogicalOperator pkeyAssignOp,
+ List<String> filterField, LogicalVariable seqVar, SourceLocation sourceLoc) {
+ List<LogicalVariable> filterVars = new ArrayList<>();
+ List<Mutable<ILogicalExpression>> filterAssignExprs = new ArrayList<>();
+ List<Mutable<ILogicalExpression>> filterExprs = new ArrayList<>();
+
+ PlanTranslationUtil.prepareVarAndExpression(filterField, seqVar, filterVars, filterAssignExprs, filterExprs,
+ context, sourceLoc);
+ AssignOperator additionalFilteringAssign = new AssignOperator(filterVars, filterAssignExprs);
+ additionalFilteringAssign.getInputs().add(pkeyAssignOp.getInputs().get(0));
+ additionalFilteringAssign.setSourceLocation(sourceLoc);
+ pkeyAssignOp.getInputs().set(0, new MutableObject<>(additionalFilteringAssign));
+ return filterExprs;
+ }
+
// Stitches the translated operators for the returning expression into the query
// plan.
- private ILogicalOperator processReturningExpression(ILogicalOperator inputOperator,
+ protected ILogicalOperator processReturningExpression(ILogicalOperator inputOperator,
InsertDeleteUpsertOperator insertOp, CompiledInsertStatement compiledInsert, IResultMetadata resultMetadata)
throws AlgebricksException {
Expression returnExpression = compiledInsert.getReturnExpression();
@@ -620,8 +644,8 @@
//Create an assign operator that makes the variable used by the return expression
LogicalVariable insertedVar = context.newVar();
- AssignOperator insertedVarAssignOperator =
- new AssignOperator(insertedVar, new MutableObject<>(insertOp.getPayloadExpression().getValue()));
+ AssignOperator insertedVarAssignOperator = new AssignOperator(insertedVar,
+ new MutableObject<>(insertOp.getPayloadExpression().getValue().cloneExpression()));
insertedVarAssignOperator.getInputs().add(insertOp.getInputs().get(0));
insertedVarAssignOperator.setSourceLocation(sourceLoc);
insertOp.getInputs().set(0, new MutableObject<>(insertedVarAssignOperator));
@@ -651,7 +675,7 @@
return distResultOperator;
}
- private DatasetDataSource validateDatasetInfo(MetadataProvider metadataProvider, DataverseName dataverseName,
+ protected DatasetDataSource validateDatasetInfo(MetadataProvider metadataProvider, DataverseName dataverseName,
String datasetName, SourceLocation sourceLoc) throws AlgebricksException {
Dataset dataset = metadataProvider.findDataset(dataverseName, datasetName);
if (dataset == null) {
@@ -671,7 +695,7 @@
dataset.getDatasetDetails(), domain);
}
- private FileSplit getDefaultOutputFileLocation(ICcApplicationContext appCtx) throws AlgebricksException {
+ protected FileSplit getDefaultOutputFileLocation(ICcApplicationContext appCtx) throws AlgebricksException {
String outputDir = System.getProperty("java.io.tmpDir");
String filePath =
outputDir + System.getProperty("file.separator") + OUTPUT_FILE_PREFIX + outputFileID.incrementAndGet();
@@ -732,31 +756,48 @@
// Expression pair
Pair<ILogicalExpression, Mutable<ILogicalOperator>> expressionPair =
langExprToAlgExpression(ia.getExpr(), tupSource);
+
LogicalVariable v = context.newVar();
- AbstractFunctionCallExpression f;
- // Index expression
- Pair<ILogicalExpression, Mutable<ILogicalOperator>> indexPair = null;
-
- if (ia.isAny()) {
- f = new ScalarFunctionCallExpression(FunctionUtil.getFunctionInfo(BuiltinFunctions.ANY_COLLECTION_MEMBER));
- f.getArguments().add(new MutableObject<>(expressionPair.first));
- } else {
- indexPair = langExprToAlgExpression(ia.getIndexExpr(), expressionPair.second);
- f = new ScalarFunctionCallExpression(FunctionUtil.getFunctionInfo(BuiltinFunctions.GET_ITEM));
- f.getArguments().add(new MutableObject<>(expressionPair.first));
- f.getArguments().add(new MutableObject<>(indexPair.first));
+ FunctionIdentifier fid;
+ ILogicalExpression farg0, farg1 = null;
+ Mutable<ILogicalOperator> assignInput;
+ switch (ia.getIndexKind()) {
+ case ANY:
+ fid = BuiltinFunctions.ANY_COLLECTION_MEMBER;
+ farg0 = expressionPair.first;
+ assignInput = expressionPair.second;
+ break;
+ case STAR:
+ fid = BuiltinFunctions.ARRAY_STAR;
+ farg0 = expressionPair.first;
+ assignInput = expressionPair.second;
+ break;
+ case ELEMENT:
+ Pair<ILogicalExpression, Mutable<ILogicalOperator>> indexPair =
+ langExprToAlgExpression(ia.getIndexExpr(), expressionPair.second);
+ fid = BuiltinFunctions.GET_ITEM;
+ farg0 = expressionPair.first;
+ farg1 = indexPair.first;
+ assignInput = indexPair.second;
+ break;
+ default:
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, ia.getSourceLocation(),
+ ia.getIndexKind());
}
+ AbstractFunctionCallExpression f =
+ new ScalarFunctionCallExpression(BuiltinFunctions.getBuiltinFunctionInfo(fid));
f.setSourceLocation(sourceLoc);
- AssignOperator a = new AssignOperator(v, new MutableObject<>(f));
-
- if (ia.isAny()) {
- a.getInputs().add(expressionPair.second);
- } else {
- a.getInputs().add(indexPair.second); // NOSONAR: Called only if value exists
+ f.getArguments().add(new MutableObject<>(farg0));
+ if (farg1 != null) {
+ f.getArguments().add(new MutableObject<>(farg1));
}
+
+ AssignOperator a = new AssignOperator(v, new MutableObject<>(f));
a.setSourceLocation(sourceLoc);
+ a.getInputs().add(assignInput);
+
return new Pair<>(a, v);
}
@@ -845,7 +886,7 @@
AbstractFunctionCallExpression f = lookupFunction(signature, args, sourceLoc);
if (f == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_FUNCTION, sourceLoc, signature.getName());
+ throw new CompilationException(ErrorCode.UNKNOWN_FUNCTION, sourceLoc, signature.toString(false));
}
if (fcall.hasAggregateFilterExpr()) {
@@ -883,7 +924,7 @@
List<Mutable<ILogicalExpression>> args, SourceLocation sourceLoc) throws CompilationException {
AbstractFunctionCallExpression f;
if ((f = lookupUserDefinedFunction(signature, args, sourceLoc)) == null) {
- f = lookupBuiltinFunction(signature.getName(), signature.getArity(), args, sourceLoc);
+ f = lookupBuiltinFunction(signature, args, sourceLoc);
}
return f;
}
@@ -891,29 +932,29 @@
private AbstractFunctionCallExpression lookupUserDefinedFunction(FunctionSignature signature,
List<Mutable<ILogicalExpression>> args, SourceLocation sourceLoc) throws CompilationException {
try {
- Function function =
- FunctionUtil.lookupUserDefinedFunctionDecl(metadataProvider.getMetadataTxnContext(), signature);
+ Function function = metadataProvider.lookupUserDefinedFunction(signature);
if (function == null) {
return null;
}
- IFunctionInfo finfo = function.isExternal()
- ? ExternalFunctionCompilerUtil.getExternalFunctionInfo(metadataProvider, function)
- : FunctionUtil.getFunctionInfo(signature);
+ if (!function.isExternal()) {
+ // all non-external UDFs should've been inlined by now
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, sourceLoc, signature);
+ }
+ IFunctionInfo finfo = ExternalFunctionCompilerUtil.getExternalFunctionInfo(metadataProvider, function);
AbstractFunctionCallExpression f = new ScalarFunctionCallExpression(finfo, args);
f.setSourceLocation(sourceLoc);
return f;
+ } catch (CompilationException e) {
+ throw e;
} catch (AlgebricksException e) {
- throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, e.getMessage(), e);
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, e, sourceLoc, e.getMessage());
}
}
- private AbstractFunctionCallExpression lookupBuiltinFunction(String functionName, int arity,
- List<Mutable<ILogicalExpression>> args, SourceLocation sourceLoc) {
+ private AbstractFunctionCallExpression lookupBuiltinFunction(FunctionSignature signature,
+ List<Mutable<ILogicalExpression>> args, SourceLocation sourceLoc) throws CompilationException {
AbstractFunctionCallExpression f;
- FunctionIdentifier fi = getBuiltinFunctionIdentifier(functionName, arity);
- if (fi == null) {
- return null;
- }
+ FunctionIdentifier fi = signature.createFunctionIdentifier();
if (BuiltinFunctions.isBuiltinAggregateFunction(fi)) {
f = BuiltinFunctions.makeAggregateFunctionExpression(fi, args);
} else if (BuiltinFunctions.isBuiltinUnnestingFunction(fi)) {
@@ -924,29 +965,17 @@
} else if (BuiltinFunctions.isWindowFunction(fi)) {
f = BuiltinFunctions.makeWindowFunctionExpression(fi, args);
} else {
- f = new ScalarFunctionCallExpression(FunctionUtil.getFunctionInfo(fi), args);
+ BuiltinFunctionInfo finfo = FunctionUtil.getFunctionInfo(fi);
+ if (finfo == null) {
+ // should've been resolved earlier
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, sourceLoc, fi);
+ }
+ f = new ScalarFunctionCallExpression(finfo, args);
}
f.setSourceLocation(sourceLoc);
return f;
}
- protected FunctionIdentifier getBuiltinFunctionIdentifier(String functionName, int arity) {
- FunctionIdentifier fi = new FunctionIdentifier(AlgebricksBuiltinFunctions.ALGEBRICKS_NS, functionName, arity);
- FunctionInfo afi = BuiltinFunctions.lookupFunction(fi);
- FunctionIdentifier builtinAquafi = afi == null ? null : afi.getFunctionIdentifier();
-
- if (builtinAquafi != null) {
- fi = builtinAquafi;
- } else {
- fi = new FunctionIdentifier(FunctionConstants.ASTERIX_NS, functionName, arity);
- afi = BuiltinFunctions.lookupFunction(fi);
- if (afi == null) {
- return null;
- }
- }
- return fi;
- }
-
@Override
public Pair<ILogicalOperator, LogicalVariable> visit(FunctionDecl fd, Mutable<ILogicalOperator> tupSource) {
throw new IllegalStateException("Function declarations should be inlined at AST rewriting phase.");
@@ -1761,7 +1790,7 @@
* the query plan.
* @throws CompilationException
*/
- private void eliminateSharedOperatorReferenceForPlan(ILogicalPlan plan) throws CompilationException {
+ protected void eliminateSharedOperatorReferenceForPlan(ILogicalPlan plan) throws CompilationException {
for (Mutable<ILogicalOperator> opRef : plan.getRoots()) {
Set<Mutable<ILogicalOperator>> opRefSet = new HashSet<>();
eliminateSharedOperatorReference(opRef, opRefSet);
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/PositionWriter.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/PositionWriter.java
deleted file mode 100644
index 6f8b64f..0000000
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/PositionWriter.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.translator;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.io.Serializable;
-
-import org.apache.asterix.om.types.BuiltinType;
-import org.apache.hyracks.algebricks.runtime.base.IUnnestingPositionWriter;
-
-public class PositionWriter implements IUnnestingPositionWriter, Serializable {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void write(DataOutput dataOutput, long position) throws IOException {
- dataOutput.writeByte(BuiltinType.AINT64.getTypeTag().serialize());
- dataOutput.writeLong(position);
- }
-
-}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/Receptionist.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/Receptionist.java
index ec4fb6f..84bee6a 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/Receptionist.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/Receptionist.java
@@ -18,6 +18,7 @@
*/
package org.apache.asterix.translator;
+import java.net.InetSocketAddress;
import java.util.UUID;
import org.apache.asterix.common.api.IClientRequest;
@@ -33,16 +34,12 @@
public class Receptionist implements IReceptionist {
- private final String node;
-
- public Receptionist(String node) {
- this.node = node;
- }
-
@Override
public IRequestReference welcome(IServletRequest request) {
final String uuid = UUID.randomUUID().toString();
- final RequestReference ref = RequestReference.of(uuid, node, System.currentTimeMillis());
+ final InetSocketAddress localAddress = request.getLocalAddress();
+ final RequestReference ref =
+ RequestReference.of(uuid, NetworkUtil.toHostPort(localAddress), System.currentTimeMillis());
ref.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT));
ref.setRemoteAddr(NetworkUtil.toHostPort(request.getRemoteAddress()));
return ref;
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
index c3fc56c..c77774c 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
@@ -109,10 +109,12 @@
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractLogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionAnnotation;
import org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractUnnestNonMapOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractUnnestOperator;
@@ -318,8 +320,7 @@
if (fromTerm.hasPositionalVariable()) {
LogicalVariable pVar = context.newVarFromExpression(fromTerm.getPositionalVariable());
// We set the positional variable type as BIGINT type.
- unnestOp = new UnnestOperator(fromVar, new MutableObject<>(pUnnestExpr.first), pVar, BuiltinType.AINT64,
- new PositionWriter());
+ unnestOp = new UnnestOperator(fromVar, new MutableObject<>(pUnnestExpr.first), pVar, BuiltinType.AINT64);
} else {
unnestOp = new UnnestOperator(fromVar, new MutableObject<>(pUnnestExpr.first));
}
@@ -535,10 +536,9 @@
LogicalVariable pVar = context.newVarFromExpression(binaryCorrelate.getPositionalVariable());
// We set the positional variable type as BIGINT type.
unnestOp = innerUnnest
- ? new UnnestOperator(rightVar, new MutableObject<>(pUnnestExpr.first), pVar, BuiltinType.AINT64,
- new PositionWriter())
+ ? new UnnestOperator(rightVar, new MutableObject<>(pUnnestExpr.first), pVar, BuiltinType.AINT64)
: new LeftOuterUnnestOperator(rightVar, new MutableObject<>(pUnnestExpr.first), pVar,
- BuiltinType.AINT64, new PositionWriter());
+ BuiltinType.AINT64);
} else {
unnestOp = innerUnnest ? new UnnestOperator(rightVar, new MutableObject<>(pUnnestExpr.first))
: new LeftOuterUnnestOperator(rightVar, new MutableObject<>(pUnnestExpr.first));
@@ -855,6 +855,14 @@
outFieldBindings.add(getFieldBinding(var, outFieldNames));
}
}
+ if (groupbyClause.hasDecorList()) {
+ for (GbyVariableExpressionPair pair : groupbyClause.getDecorPairList()) {
+ VariableExpr var = pair.getVar();
+ if (gbyKeyVars.add(var)) {
+ outFieldBindings.add(getFieldBinding(var, outFieldNames));
+ }
+ }
+ }
if (groupbyClause.hasGroupVar()) {
outFieldBindings.add(getFieldBinding(groupbyClause.getGroupVar(), outFieldNames));
}
@@ -983,7 +991,9 @@
QuantifiedPair qp = qe.getQuantifiedList().get(0);
VariableExpr varExpr = qp.getVarExpr();
- List<Expression> operandExprs = ((OperatorExpr) qe.getSatisfiesExpr()).getExprList();
+ OperatorExpr condExpr = (OperatorExpr) qe.getSatisfiesExpr();
+ List<IExpressionAnnotation> condExprHints = condExpr.getHints();
+ List<Expression> operandExprs = condExpr.getExprList();
int varIdx = operandExprs.indexOf(varExpr);
Expression operandExpr = operandExprs.get(1 - varIdx);
@@ -1016,7 +1026,7 @@
throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, sourceLoc,
itemExpr.getKind());
}
- ILogicalExpression eqExpr = createEqExpr(operandVar, inValue, sourceLoc);
+ ILogicalExpression eqExpr = createEqExpr(operandVar, inValue, condExprHints, sourceLoc);
disjuncts.add(new MutableObject<>(eqExpr));
}
break;
@@ -1027,7 +1037,7 @@
inVarCursor.reset();
while (inVarCursor.next()) {
IAObject inValue = inVarCursor.get();
- ILogicalExpression eqExpr = createEqExpr(operandVar, inValue, sourceLoc);
+ ILogicalExpression eqExpr = createEqExpr(operandVar, inValue, condExprHints, sourceLoc);
disjuncts.add(new MutableObject<>(eqExpr));
}
break;
@@ -1035,25 +1045,25 @@
throw new IllegalStateException(String.valueOf(inExpr.getKind()));
}
- MutableObject<ILogicalExpression> condExpr;
+ MutableObject<ILogicalExpression> disjunctiveExpr;
if (disjuncts.size() == 1) {
- condExpr = disjuncts.get(0);
+ disjunctiveExpr = disjuncts.get(0);
} else {
AbstractFunctionCallExpression orExpr =
createFunctionCallExpressionForBuiltinOperator(OperatorType.OR, sourceLoc);
orExpr.getArguments().addAll(disjuncts);
- condExpr = new MutableObject<>(orExpr);
+ disjunctiveExpr = new MutableObject<>(orExpr);
}
LogicalVariable assignVar = context.newVar();
- AssignOperator assignOp = new AssignOperator(assignVar, condExpr);
+ AssignOperator assignOp = new AssignOperator(assignVar, disjunctiveExpr);
assignOp.getInputs().add(topOp);
assignOp.setSourceLocation(sourceLoc);
return new Pair<>(assignOp, assignVar);
}
- private ILogicalExpression createEqExpr(LogicalVariable lhsVar, IAObject rhsValue, SourceLocation sourceLoc)
- throws CompilationException {
+ private ILogicalExpression createEqExpr(LogicalVariable lhsVar, IAObject rhsValue,
+ List<IExpressionAnnotation> hints, SourceLocation sourceLoc) throws CompilationException {
VariableReferenceExpression lhsExpr = new VariableReferenceExpression(lhsVar);
lhsExpr.setSourceLocation(sourceLoc);
ILogicalExpression rhsExpr = translateConstantValue(rhsValue, sourceLoc);
@@ -1061,6 +1071,11 @@
createFunctionCallExpressionForBuiltinOperator(OperatorType.EQ, sourceLoc);
opExpr.getArguments().add(new MutableObject<>(lhsExpr));
opExpr.getArguments().add(new MutableObject<>(rhsExpr));
+ if (hints != null) {
+ for (IExpressionAnnotation hint : hints) {
+ opExpr.getAnnotations().put(hint, hint);
+ }
+ }
return opExpr;
}
@@ -1071,11 +1086,12 @@
List<Expression> fargs = winExpr.getExprList();
FunctionSignature fs = winExpr.getFunctionSignature();
- FunctionIdentifier fi = getBuiltinFunctionIdentifier(fs.getName(), fs.getArity());
- if (fi == null) {
+ IFunctionInfo finfo = BuiltinFunctions.getBuiltinFunctionInfo(fs.createFunctionIdentifier());
+ if (finfo == null) {
throw new CompilationException(ErrorCode.COMPILATION_EXPECTED_WINDOW_FUNCTION, winExpr.getSourceLocation(),
fs.getName());
}
+ FunctionIdentifier fi = finfo.getFunctionIdentifier();
boolean isWin = BuiltinFunctions.isWindowFunction(fi);
boolean isWinAgg = isWin && BuiltinFunctions.builtinFunctionHasProperty(fi,
BuiltinFunctions.WindowFunctionProperty.HAS_LIST_ARG);
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
index e587e70..2869313 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
@@ -45,10 +45,14 @@
/**
* Validates the field that will be used as filter for the components of an LSM index.
*
- * @param dataset
- * the dataset
* @param recordType
* the record type
+ * @param metaType
+ * the meta record type
+ * @param filterSourceIndicator
+ * indicates where the filter attribute comes from, 0 for record, 1 for meta record.
+ * since this method is called only when a filter field presents, filterSourceIndicator will not be null
+ *
* @param filterField
* the full name of the field
* @param sourceLoc
@@ -57,9 +61,10 @@
* if field type can't be a filter type.
* if field type is nullable.
*/
- public static void validateFilterField(ARecordType recordType, List<String> filterField, SourceLocation sourceLoc)
- throws AlgebricksException {
- IAType fieldType = recordType.getSubFieldType(filterField);
+ public static void validateFilterField(ARecordType recordType, ARecordType metaType, Integer filterSourceIndicator,
+ List<String> filterField, SourceLocation sourceLoc) throws AlgebricksException {
+ ARecordType itemType = filterSourceIndicator == 0 ? recordType : metaType;
+ IAType fieldType = itemType.getSubFieldType(filterField);
if (fieldType == null) {
throw new CompilationException(ErrorCode.COMPILATION_FIELD_NOT_FOUND, sourceLoc,
RecordUtil.toFullyQualifiedName(filterField));
diff --git a/asterixdb/asterix-algebra/src/main/javacc/AQLPlusExtension.jj b/asterixdb/asterix-algebra/src/main/javacc/AQLPlusExtension.jj
deleted file mode 100644
index 35e8ff0..0000000
--- a/asterixdb/asterix-algebra/src/main/javacc/AQLPlusExtension.jj
+++ /dev/null
@@ -1,187 +0,0 @@
-//
-// 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.
-//
-// This is not a complete javacc file.
-// This file is used by asterix-grammar-extension-maven-plugin to extend the AQL grammar to AQL+ grammar.
-// For more details about how to use this plugin, refer to asterix-grammar-extension-maven-plugin.
-
-// If you want to put an additional import, just add import statements like the following.
-// import package name
-import org.apache.asterix.lang.aql.clause.JoinClause;
-import org.apache.asterix.lang.aql.clause.MetaVariableClause;
-import org.apache.asterix.lang.aql.expression.MetaVariableExpr;
-
-// To remove an import, use the keyword unimport
-// unimport package name
-
-// If you want to add a method in the class definition (before PARSER_END), use the following phrase and attach
-// new method right after the phrase.
-// @new_at_the_end
-@new_at_the_class_def
- public void initScope() {
- scopeStack.push(RootScopeFactory.createRootScope(this));
- }
-
-// Merging of non-terminals can only be done on non-terminals which conform to the following structure.
-// Content will simply be prepended or appended to the base blocks.
-// Note: refrain from using the strings "before:" and "after:" in the merge areas as that will break the merge.
-// As a workaround, you can always override
-// one additional possible change is direct replacement and it can be done through the followin syntax:
-// @merge replace "base phrase" with "extension phrase" true/false
-// Here, true/false tells whether the tool needs to process the three blocks.
-// If true, like normal @merge case, before and after clause in each block will be processed
-// after "base phrase" in the blocks have been replaced with "new phrase".
-// If false, then it just expects the blank form that consists of three blocks and not process them.
-// Only, "base phrase" in the blocks will be replaced with "new phrase".
-@merge
-Clause Clause() throws ParseException :
-{
- // merge area 1
- before:
- after:
-}
-{
- (
- // merge area 2
- before:
- after: | clause = MetaVariableClause()
- | clause = JoinClause())
- {
- // merge area 3
- }
-}
-
-@merge
-Expression PrimaryExpr()throws ParseException:
-{
- // merge area 1
- before:
- after:
-}
-{
- (
- // merge area 2
- before:
- after: | expr = MetaVariableRef())
- {
- // merge area 3
- }
-}
-
-// In the following case, all instances of "tmp = LetClause() {clauseList.add(tmp);}" will be replaced
-// with "tmp = LetClause() {clauseList.add(tmp);} | tmp = MetaVariableClause() {clauseList.add(tmp);}".
-// Also, we don't check "before:" and "after:" section of each area. That check will be ignored since
-// the last parameter is set to false.
-@merge replace "tmp = LetClause() {clauseList.add(tmp);}" with "tmp = LetClause() {clauseList.add(tmp);} | tmp = MetaVariableClause() {clauseList.add(tmp);}" false
-Expression FLWOGR() throws ParseException:
-{
- // merge area 1
-}
-{
- (
- // merge area 2
- )
- {
- // merge area 3
- }
-}
-
-// The default option when you don't specify any @optiontype.
-// Adding a new node. if a node exists, it will throw an exception.
-@new
-Clause MetaVariableClause() throws ParseException :
-{
-}
-{
- <METAVARIABLECLAUSE>
- {
- VarIdentifier var = new VarIdentifier(token.image);
- return new MetaVariableClause(var);
- }
-}
-
-@new
-MetaVariableExpr MetaVariableRef() throws ParseException:
-{
-}
-{
- <METAVARIABLE>
- {
- VarIdentifier var = new VarIdentifier(token.image);
- return new MetaVariableExpr(var);
- }
-}
-
-@new
-Clause JoinClause() throws ParseException :
-{
- Expression whereExpr;
- List<Clause> leftClauses, rightClauses;
- JoinClause.JoinKind kind = JoinClause.JoinKind.INNER;
-}
-{
- ("join" | "loj" { kind = JoinClause.JoinKind.LEFT_OUTER; } )
- <LEFTPAREN> <LEFTPAREN> leftClauses = Clauses() <RIGHTPAREN> <COMMA>
- <LEFTPAREN> rightClauses = Clauses() <RIGHTPAREN> <COMMA>
- whereExpr = Expression() <RIGHTPAREN>
- {
- JoinClause jc = new JoinClause(kind);
- jc.setLeftClauses(leftClauses);
- jc.setRightClauses(rightClauses);
- jc.setWhereExpr(whereExpr);
- return jc;
- }
-}
-
-@new
-List<Clause> Clauses() throws ParseException:
-{
- List<Clause> clauses = new ArrayList<Clause>();
- Clause c = null;
-}
-{
- (
- (
- c = Clause() {
- clauses.add(c);
- }
- )*
- )
- {
- return clauses;
- }
-}
-
-// Overriding a non-terminal. if exists in base, it will be overriden, otherwise, it will be added.
-// @override
-
-
-// If something needs to be added at the end of file, you can use @new_at_the_end like the following.
-@new_at_the_end
-<DEFAULT,IN_DBL_BRACE>
-TOKEN :
-{
- <METAVARIABLE : "$$" <IDENTIFIER> >
-}
-
-@new_at_the_end
-<DEFAULT,IN_DBL_BRACE>
-TOKEN :
-{
- <METAVARIABLECLAUSE : "##" <IDENTIFIER> >
-}
diff --git a/asterixdb/asterix-app/data/dblp-small/dblp-small-nulls-string-as-primary-key.adm b/asterixdb/asterix-app/data/dblp-small/dblp-small-nulls-string-as-primary-key.adm
new file mode 100644
index 0000000..b092b64
--- /dev/null
+++ b/asterixdb/asterix-app/data/dblp-small/dblp-small-nulls-string-as-primary-key.adm
@@ -0,0 +1,100 @@
+{ "id": "2", "dblpid": "books/acm/kim95/Blakeley95", "title": "OQL[C++] Extending C++ with an Object Query Capability.", "authors": "José A. Blakeley", "misc": "2002-01-03 69-88 Modern Database Systems db/books/collections/kim95.html#Blakeley95 1995" }
+{ "id": "4", "dblpid": "books/acm/kim95/ChristodoulakisK95", "title": "Multimedia Information Systems Issues and Approaches.", "authors": "Stavros Christodoulakis Leonidas Koveos", "misc": "2002-01-03 318-337 1995 Modern Database Systems db/books/collections/kim95.html#ChristodoulakisK95" }
+{ "id": "6", "dblpid": "books/acm/kim95/DittrichD95", "title": "Where Object-Oriented DBMSs Should Do Better A Critique Based on Early Experiences.", "authors": "Angelika Kotz Dittrich Klaus R. Dittrich", "misc": "2002-01-03 238-254 1995 Modern Database Systems db/books/collections/kim95.html#DittrichD95" }
+{ "id": "8", "dblpid": "books/acm/kim95/Goodman95", "title": "An Object-Oriented DBMS War Story Developing a Genome Mapping Database in C++.", "authors": "Nathan Goodman", "misc": "2002-01-03 216-237 1995 Modern Database Systems db/books/collections/kim95.html#Goodman95" }
+{ "id": "10", "dblpid": "books/acm/kim95/KelleyGKRG95", "title": "Schema Architecture of the UniSQL/M Multidatabase System", "authors": "William Kelley Sunit K. Gala Won Kim Tom C. Reyes Bruce Graham", "misc": "2004-03-08 Modern Database Systems books/acm/Kim95 621-648 1995 db/books/collections/kim95.html#KelleyGKRG95" }
+{ "id": "12", "dblpid": "books/acm/kim95/Kim95", "authors": "Won Kim", "misc": "2002-01-03 5-17 1995 Modern Database Systems db/books/collections/kim95.html#Kim95" }
+{ "id": "14", "dblpid": "books/acm/kim95/Kim95b", "title": "Introduction to Part 2 Technology for Interoperating Legacy Databases.", "authors": "Won Kim", "misc": "2002-01-03 515-520 1995 Modern Database Systems db/books/collections/kim95.html#Kim95b" }
+{ "id": "16", "dblpid": "books/acm/kim95/KimG95", "authors": "Won Kim Jorge F. Garza", "misc": "2002-01-03 203-215 1995 Modern Database Systems db/books/collections/kim95.html#KimG95" }
+{ "id": "18", "dblpid": "books/acm/kim95/Kowalski95", "title": "The POSC Solution to Managing E&P Data.", "authors": "Vincent J. Kowalski", "misc": "2002-01-03 281-301 1995 Modern Database Systems db/books/collections/kim95.html#Kowalski95" }
+{ "id": "20", "dblpid": "books/acm/kim95/Lunt95", "title": "Authorization in Object-Oriented Databases.", "authors": "Teresa F. Lunt", "misc": "2002-01-03 130-145 1995 Modern Database Systems db/books/collections/kim95.html#Lunt95" }
+{ "id": "22", "dblpid": "books/acm/kim95/Motro95", "authors": "Amihai Motro", "misc": "2002-01-03 457-476 1995 Modern Database Systems db/books/collections/kim95.html#Motro95" }
+{ "id": "24", "dblpid": "books/acm/kim95/OzsuB95", "authors": "M. Tamer Özsu José A. Blakeley", "misc": "2002-01-03 146-174 1995 Modern Database Systems db/books/collections/kim95.html#OzsuB95" }
+{ "id": "26", "dblpid": "books/acm/kim95/Samet95", "title": "Spatial Data Structures.", "authors": "Hanan Samet", "misc": "2004-03-08 361-385 Modern Database Systems books/acm/Kim95 db/books/collections/kim95.html#Samet95 1995" }
+{ "id": "28", "dblpid": "books/acm/kim95/ShanADDK95", "title": "Pegasus A Heterogeneous Information Management System.", "authors": "Ming-Chien Shan Rafi Ahmed Jim Davis Weimin Du William Kent", "misc": "2004-03-08 664-682 Modern Database Systems books/acm/Kim95 db/books/collections/kim95.html#ShanADDK95 1995" }
+{ "id": "30", "dblpid": "books/acm/kim95/SoleyK95", "title": "The OMG Object Model.", "authors": "Richard Mark Soley William Kent", "misc": "2002-01-03 18-41 1995 Modern Database Systems db/books/collections/kim95.html#SoleyK95" }
+{ "id": "32", "dblpid": "books/acm/kim95/Thompson95", "title": "The Changing Database Standards Landscape.", "authors": "Craig W. Thompson", "misc": "2002-01-03 302-317 1995 Modern Database Systems db/books/collections/kim95.html#Thompson95" }
+{ "id": "34", "dblpid": "books/acm/Kim95", "title": "Modern Database Systems The Object Model, Interoperability, and Beyond.", "authors": "", "misc": "2004-03-08 Won Kim Modern Database Systems ACM Press and Addison-Wesley 1995 0-201-59098-0 db/books/collections/kim95.html" }
+{ "id": "36", "dblpid": "books/aw/kimL89/BjornerstedtH89", "title": "Version Control in an Object-Oriented Architecture.", "authors": "Anders Björnerstedt Christer Hulten", "misc": "2006-02-24 451-485 Object-Oriented Concepts, Databases, and Applications ACM Press and Addison-Wesley 1989 db/books/collections/kim89.html#BjornerstedtH89" }
+{ "id": "38", "dblpid": "books/aw/kimL89/CareyDRS89", "title": "Storage Management in EXODUS.", "authors": "Michael J. Carey David J. DeWitt Joel E. Richardson Eugene J. Shekita", "misc": "2002-01-03 341-369 Object-Oriented Concepts, Databases, and Applications ACM Press and Addison-Wesley 1989 db/books/collections/kim89.html#CareyDRS89" }
+{ "id": "40", "dblpid": "books/aw/kimL89/DiederichM89", "title": "Objects, Messages, and Rules in Database Design.", "authors": "Jim Diederich Jack Milton", "misc": "2002-01-03 177-197 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#DiederichM89" }
+{ "id": "42", "dblpid": "books/aw/kimL89/FishmanABCCDHHKLLMNRSW89", "title": "Overview of the Iris DBMS.", "authors": "Daniel H. Fishman Jurgen Annevelink David Beech E. C. Chow Tim Connors J. W. Davis Waqar Hasan C. G. Hoch William Kent S. Leichner Peter Lyngbæk Brom Mahbod Marie-Anne Neimat Tore Risch Ming-Chien Shan W. Kevin Wilkinson", "misc": "2002-01-03 219-250 Object-Oriented Concepts, Databases, and Applications ACM Press and Addison-Wesley 1989 db/books/collections/kim89.html#FishmanABCCDHHKLLMNRSW89" }
+{ "id": "44", "dblpid": "books/aw/kimL89/KimKD89", "title": "Indexing Techniques for Object-Oriented Databases.", "authors": "Won Kim Kyung-Chang Kim Alfred G. Dale", "misc": "2002-01-03 371-394 Object-Oriented Concepts, Databases, and Applications ACM Press and Addison-Wesley 1989 db/books/collections/kim89.html#KimKD89" }
+{ "id": "46", "dblpid": "books/aw/kimL89/Maier89", "title": "Making Database Systems Fast Enough for CAD Applications.", "authors": "David Maier", "misc": "2002-01-03 573-582 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#Maier89" }
+{ "id": "48", "dblpid": "books/aw/kimL89/Moon89", "title": "The Common List Object-Oriented Programming Language Standard.", "authors": "David A. Moon", "misc": "2002-01-03 49-78 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#Moon89" }
+{ "id": "50", "dblpid": "books/aw/kimL89/Nierstrasz89", "title": "A Survey of Object-Oriented Concepts.", "authors": "Oscar Nierstrasz", "misc": "2002-01-03 3-21 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#Nierstrasz89" }
+{ "id": "52", "dblpid": "books/aw/kimL89/Russinoff89", "title": "Proteus A Frame-Based Nonmonotonic Inference System.", "authors": "David M. Russinoff", "misc": "2002-01-03 127-150 Object-Oriented Concepts, Databases, and Applications ACM Press and Addison-Wesley 1989 db/books/collections/kim89.html#Russinoff89" }
+{ "id": "54", "dblpid": "books/aw/kimL89/SteinLU89", "authors": "Lynn Andrea Stein Henry Lieberman David Ungar", "misc": "2002-01-03 31-48 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#SteinLU89" }
+{ "id": "56", "dblpid": "books/aw/kimL89/TomlinsonS89", "title": "Concurrent Object-Oriented Programming Languages.", "authors": "Chris Tomlinson Mark Scheevel", "misc": "2002-01-03 79-124 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#TomlinsonS89" }
+{ "id": "58", "dblpid": "books/aw/kimL89/Wand89", "title": "A Proposal for a Formal Model of Objects.", "authors": "Yair Wand", "misc": "2002-01-03 537-559 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#Wand89" }
+{ "id": "60", "dblpid": "books/aw/stonebraker86/RoweS86", "authors": "Lawrence A. Rowe Michael Stonebraker", "misc": "2002-01-03 63-82 1986 The INGRES Papers db/books/collections/Stonebraker86.html#RoweS86 db/books/collections/Stonebraker86/RoweS86.html ingres/P063.pdf" }
+{ "id": "62", "dblpid": "books/aw/stonebraker86/Stonebraker86a", "title": "Supporting Studies on Relational Systems (Introduction to Section 2).", "authors": "Michael Stonebraker", "misc": "2002-01-03 83-85 1986 The INGRES Papers db/books/collections/Stonebraker86.html#Stonebraker86a db/books/collections/Stonebraker86/Stonebraker86a.html ingres/P083.pdf" }
+{ "id": "64", "dblpid": "books/aw/stonebraker86/Stonebraker86c", "authors": "Michael Stonebraker", "misc": "2002-01-03 187-196 1986 The INGRES Papers db/books/collections/Stonebraker86.html#Stonebraker86c db/books/collections/Stonebraker86/Stonebraker86c.html ingres/P187.pdf" }
+{ "id": "66", "dblpid": "books/aw/stonebraker86/Stonebraker86e", "title": "Extended Semantics for the Relational Model (Introduction to Section 5).", "authors": "Michael Stonebraker", "misc": "2002-01-03 313-316 1986 The INGRES Papers db/books/collections/Stonebraker86.html#Stonebraker86e db/books/collections/Stonebraker86/Stonebraker86e.html ingres/P313.pdf" }
+{ "id": "68", "dblpid": "books/aw/stonebraker86/X86", "title": "Title, Preface, Contents.", "authors": "", "misc": "2002-01-03 1986 The INGRES Papers db/books/collections/Stonebraker86.html#X86 db/books/collections/Stonebraker86/X86.html ingres/frontmatter.pdf" }
+{ "id": "70", "dblpid": "books/aw/Knuth86a", "title": "TeX The Program", "authors": "Donald E. Knuth", "misc": "2002-01-03 Addison-Wesley 1986 0-201-13437-3" }
+{ "id": "72", "dblpid": "books/aw/Lamport86", "title": "LaTeX User's Guide & Reference Manual", "authors": "Leslie Lamport", "misc": "2002-01-03 Addison-Wesley 1986 0-201-15790-X" }
+{ "id": "74", "dblpid": "books/aw/Lamport2002", "title": "Specifying Systems, The TLA+ Language and Tools for Hardware and Software Engineers", "authors": "Leslie Lamport", "misc": "2005-07-28 Addison-Wesley 2002 0-3211-4306-X http //research.microsoft.com/users/lamport/tla/book.html" }
+{ "id": "76", "dblpid": "books/aw/LewisBK01", "title": "Databases and Transaction Processing An Application-Oriented Approach", "authors": "Philip M. Lewis Arthur J. Bernstein Michael Kifer", "misc": "2002-01-03 Addison-Wesley 2001 0-201-70872-8" }
+{ "id": "78", "dblpid": "books/aw/LindholmY97", "title": "The Java Virtual Machine Specification", "authors": "Tim Lindholm Frank Yellin", "misc": "2002-01-28 Addison-Wesley 1997 0-201-63452-X" }
+{ "id": "80", "dblpid": "books/aw/Sedgewick83", "title": "Algorithms", "authors": "Robert Sedgewick", "misc": "2002-01-03 Addison-Wesley 1983 0-201-06672-6" }
+{ "id": "82", "dblpid": "conf/focs/AspnesW92", "title": "Randomized Consensus in Expected O(n log ^2 n) Operations Per Processor", "authors": "James Aspnes Orli Waarts", "misc": "2006-04-25 137-146 conf/focs/FOCS33 1992 FOCS db/conf/focs/focs92.html#AspnesW92" }
+{ "id": "84", "dblpid": "conf/stoc/Bloniarz80", "title": "A Shortest-Path Algorithm with Expected Time O(n^2 log n log ^* n)", "authors": "Peter A. Bloniarz", "misc": "2006-04-25 378-384 conf/stoc/STOC12 1980 STOC db/conf/stoc/stoc80.html#Bloniarz80" }
+{ "id": "86", "dblpid": "conf/focs/Megiddo82", "title": "Linear-Time Algorithms for Linear Programming in R^3 and Related Problems", "authors": "Nimrod Megiddo", "misc": "2006-04-25 329-338 conf/focs/FOCS23 1982 FOCS db/conf/focs/focs82.html#Megiddo82" }
+{ "id": "88", "dblpid": "conf/focs/MoffatT85", "title": "An All Pairs Shortest Path Algorithm with Expected Running Time O(n^2 log n)", "authors": "Alistair Moffat Tadao Takaoka", "misc": "2006-04-25 101-105 conf/focs/FOCS26 1985 FOCS db/conf/focs/focs85.html#MoffatT85" }
+{ "id": "90", "dblpid": "conf/hicss/SchonfeldL99", "title": "VORTEX Video Retrieval and Tracking from Compressed Multimedia Databases ¾ Visual Search Engine.", "authors": "Dan Schonfeld Dan Lelescu", "misc": "2002-01-03 1999 HICSS http //computer.org/proceedings/hicss/0001/00013/00013006abs.htm db/conf/hicss/hicss1999-3.html#SchonfeldL99" }
+{ "id": "92", "dblpid": "conf/stacs/Laue08", "title": "Geometric Set Cover and Hitting Sets for Polytopes in R³.", "authors": "Sören Laue", "misc": "2008-03-04 2008 STACS 479-490 http //drops.dagstuhl.de/opus/volltexte/2008/1367 conf/stacs/2008 db/conf/stacs/stacs2008.html#Laue08" }
+{ "id": "94", "dblpid": "conf/awoc/IbarraJRC88", "title": "On Some Languages in NC.", "authors": "Oscar H. Ibarra Tao Jiang Bala Ravikumar Jik H. Chang", "misc": "2002-08-06 64-73 1988 conf/awoc/1988 AWOC db/conf/awoc/awoc88.html#IbarraJRC88" }
+{ "id": "96", "dblpid": "conf/focs/GalilHLSW82", "title": "An O(n^3 log n) Deterministic and an O(n^3) Probabilistic Isomorphism Test for Trivalent Graphs", "authors": "Zvi Galil Christoph M. Hoffmann Eugene M. Luks Claus-Peter Schnorr Andreas Weber", "misc": "2006-04-25 118-125 conf/focs/FOCS23 1982 FOCS db/conf/focs/focs82.html#GalilHLSW82" }
+{ "id": "98", "dblpid": "conf/focs/GalilT86", "title": "An O(n^2 (m + n log n) log n) Min-Cost Flow Algorithm", "authors": "Zvi Galil Éva Tardos", "misc": "2006-04-25 1-9 conf/focs/FOCS27 1986 FOCS db/conf/focs/focs86.html#GalilT86" }
+{ "id": "100", "dblpid": "series/synthesis/2009Brozos", "title": "The Geometry of Walker Manifolds", "authors": "Miguel Brozos-Vázquez Eduardo García-Río Peter Gilkey Stana Nikcevic Rámon Vázquez-Lorenzo", "misc": "2009-09-06 The Geometry of Walker Manifolds http //dx.doi.org/10.2200/S00197ED1V01Y200906MAS005 http //dx.doi.org/10.2200/S00197ED1V01Y200906MAS005 2009 Synthesis Lectures on Mathematics & Statistics Morgan & Claypool Publishers" }
+{ "id": "1", "dblpid": "books/acm/kim95/AnnevelinkACFHK95", "title": "Object SQL - A Language for the Design and Implementation of Object Databases.", "authors": "Jurgen Annevelink Rafiul Ahad Amelia Carlson Daniel H. Fishman Michael L. Heytens William Kent", "misc": "2002-01-03 42-68 1995 Modern Database Systems db/books/collections/kim95.html#AnnevelinkACFHK95" }
+{ "id": "3", "dblpid": "books/acm/kim95/BreitbartGS95", "title": "Transaction Management in Multidatabase Systems.", "authors": "Yuri Breitbart Hector Garcia-Molina Abraham Silberschatz", "misc": "2004-03-08 573-591 Modern Database Systems books/acm/Kim95 db/books/collections/kim95.html#BreitbartGS95 1995" }
+{ "id": "5", "dblpid": "books/acm/kim95/DayalHW95", "title": "Active Database Systems.", "authors": "Umeshwar Dayal Eric N. Hanson Jennifer Widom", "misc": "2002-01-03 434-456 1995 Modern Database Systems db/books/collections/kim95.html#DayalHW95" }
+{ "id": "7", "dblpid": "books/acm/kim95/Garcia-MolinaH95", "title": "Distributed Databases.", "authors": "Hector Garcia-Molina Meichun Hsu", "misc": "2002-01-03 477-493 1995 Modern Database Systems db/books/collections/kim95.html#Garcia-MolinaH95" }
+{ "id": "9", "dblpid": "books/acm/kim95/Kaiser95", "title": "Cooperative Transactions for Multiuser Environments.", "authors": "Gail E. Kaiser", "misc": "2002-01-03 409-433 1995 Modern Database Systems db/books/collections/kim95.html#Kaiser95" }
+{ "id": "11", "dblpid": "books/acm/kim95/KemperM95", "title": "Physical Object Management.", "authors": "Alfons Kemper Guido Moerkotte", "misc": "2002-01-03 175-202 1995 Modern Database Systems db/books/collections/kim95.html#KemperM95" }
+{ "id": "13", "dblpid": "books/acm/kim95/Kim95a", "title": "Object-Oriented Database Systems Promises, Reality, and Future.", "authors": "Won Kim", "misc": "2002-01-03 255-280 1995 Modern Database Systems db/books/collections/kim95.html#Kim95a" }
+{ "id": "15", "dblpid": "books/acm/kim95/KimCGS95", "title": "On Resolving Schematic Heterogeneity in Multidatabase Systems.", "authors": "Won Kim Injun Choi Sunit K. Gala Mark Scheevel", "misc": "2002-01-03 521-550 1995 Modern Database Systems db/books/collections/kim95.html#KimCGS95" }
+{ "id": "17", "dblpid": "books/acm/kim95/KimK95", "title": "On View Support in Object-Oriented Databases Systems.", "authors": "Won Kim William Kelley", "misc": "2002-01-03 108-129 1995 Modern Database Systems db/books/collections/kim95.html#KimK95" }
+{ "id": "19", "dblpid": "books/acm/kim95/KriegerA95", "title": "C++ Bindings to an Object Database.", "authors": "David Krieger Tim Andrews", "misc": "2002-01-03 89-107 1995 Modern Database Systems db/books/collections/kim95.html#KriegerA95" }
+{ "id": "21", "dblpid": "books/acm/kim95/MengY95", "title": "Query Processing in Multidatabase Systems.", "authors": "Weiyi Meng Clement T. Yu", "misc": "2002-01-03 551-572 1995 Modern Database Systems db/books/collections/kim95.html#MengY95" }
+{ "id": "23", "dblpid": "books/acm/kim95/Omiecinski95", "title": "Parallel Relational Database Systems.", "authors": "Edward Omiecinski", "misc": "2002-01-03 494-512 1995 Modern Database Systems db/books/collections/kim95.html#Omiecinski95" }
+{ "id": "25", "dblpid": "books/acm/kim95/RusinkiewiczS95", "title": "Specification and Execution of Transactional Workflows.", "authors": "Marek Rusinkiewicz Amit P. Sheth", "misc": "2004-03-08 592-620 Modern Database Systems books/acm/Kim95 db/books/collections/kim95.html#RusinkiewiczS95 1995" }
+{ "id": "27", "dblpid": "books/acm/kim95/SametA95", "title": "Spatial Data Models and Query Processing.", "authors": "Hanan Samet Walid G. Aref", "misc": "2002-01-03 338-360 1995 Modern Database Systems db/books/collections/kim95.html#SametA95" }
+{ "id": "29", "dblpid": "books/acm/kim95/Snodgrass95", "title": "Temporal Object-Oriented Databases A Critical Comparison.", "authors": "Richard T. Snodgrass", "misc": "2002-01-03 386-408 1995 Modern Database Systems db/books/collections/kim95.html#Snodgrass95" }
+{ "id": "31", "dblpid": "books/acm/kim95/Stout95", "title": "EDA/SQL.", "authors": "Ralph L. Stout", "misc": "2004-03-08 649-663 Modern Database Systems books/acm/Kim95 db/books/collections/kim95.html#Stout95 1995" }
+{ "id": "33", "dblpid": "books/acm/kim95/BreitbartR95", "title": "Overview of the ADDS System.", "authors": "Yuri Breitbart Tom C. Reyes", "misc": "2009-06-12 683-701 Modern Database Systems books/acm/Kim95 db/books/collections/kim95.html#BreitbartR95 1995" }
+{ "id": "35", "dblpid": "books/ap/MarshallO79", "title": "Inequalities Theory of Majorization and Its Application.", "authors": "Albert W. Marshall Ingram Olkin", "misc": "2002-01-03 Academic Press 1979 0-12-473750-1" }
+{ "id": "37", "dblpid": "books/aw/kimL89/BretlMOPSSWW89", "title": "The GemStone Data Management System.", "authors": "Robert Bretl David Maier Allen Otis D. Jason Penney Bruce Schuchardt Jacob Stein E. Harold Williams Monty Williams", "misc": "2002-01-03 283-308 Object-Oriented Concepts, Databases, and Applications ACM Press and Addison-Wesley 1989 db/books/collections/kim89.html#BretlMOPSSWW89" }
+{ "id": "39", "dblpid": "books/aw/kimL89/Decouchant89", "title": "A Distributed Object Manager for the Smalltalk-80 System.", "authors": "Dominique Decouchant", "misc": "2002-01-03 487-520 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#Decouchant89" }
+{ "id": "41", "dblpid": "books/aw/kimL89/EllisG89", "title": "Active Objects Ealities and Possibilities.", "authors": "Clarence A. Ellis Simon J. Gibbs", "misc": "2002-01-03 561-572 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#EllisG89" }
+{ "id": "43", "dblpid": "books/aw/kimL89/KimBCGW89", "title": "Features of the ORION Object-Oriented Database System.", "authors": "Won Kim Nat Ballou Hong-Tai Chou Jorge F. Garza Darrell Woelk", "misc": "2002-01-03 251-282 Object-Oriented Concepts, Databases, and Applications ACM Press and Addison-Wesley 1989 db/books/collections/kim89.html#KimBCGW89" }
+{ "id": "45", "dblpid": "books/aw/kimL89/King89", "title": "My Cat Is Object-Oriented.", "authors": "Roger King", "misc": "2002-01-03 23-30 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#King89" }
+{ "id": "47", "dblpid": "books/aw/kimL89/MellenderRS89", "authors": "Fred Mellender Steve Riegel Andrew Straw", "misc": "2002-01-03 423-450 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#MellenderRS89" }
+{ "id": "49", "dblpid": "books/aw/kimL89/Moss89", "title": "Object Orientation as Catalyst for Language-Database Inegration.", "authors": "J. Eliot B. Moss", "misc": "2002-01-03 583-592 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#Moss89" }
+{ "id": "51", "dblpid": "books/aw/kimL89/NierstraszT89", "title": "Integrated Office Systems.", "authors": "Oscar Nierstrasz Dennis Tsichritzis", "misc": "2002-01-03 199-215 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#NierstraszT89" }
+{ "id": "53", "dblpid": "books/aw/kimL89/SkarraZ89", "title": "Concurrency Control and Object-Oriented Databases.", "authors": "Andrea H. Skarra Stanley B. Zdonik", "misc": "2002-01-03 395-421 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#SkarraZ89" }
+{ "id": "55", "dblpid": "books/aw/kimL89/TarltonT89", "title": "Pogo A Declarative Representation System for Graphics.", "authors": "Mark A. Tarlton P. Nong Tarlton", "misc": "2002-01-03 151-176 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#TarltonT89" }
+{ "id": "57", "dblpid": "books/aw/kimL89/TsichritzisN89", "title": "Directions in Object-Oriented Research.", "authors": "Dennis Tsichritzis Oscar Nierstrasz", "misc": "2002-01-03 523-536 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#TsichritzisN89" }
+{ "id": "59", "dblpid": "books/aw/kimL89/WeiserL89", "title": "OZ+ An Object-Oriented Database System.", "authors": "Stephen P. Weiser Frederick H. Lochovsky", "misc": "2002-01-03 309-337 1989 Object-Oriented Concepts, Databases, and Applications db/books/collections/kim89.html#WeiserL89" }
+{ "id": "61", "dblpid": "books/aw/stonebraker86/Stonebraker86", "title": "Design of Relational Systems (Introduction to Section 1).", "authors": "Michael Stonebraker", "misc": "2002-01-03 1-3 1986 The INGRES Papers db/books/collections/Stonebraker86.html#Stonebraker86 db/books/collections/Stonebraker86/Stonebraker86.html ingres/P001.pdf" }
+{ "id": "63", "dblpid": "books/aw/stonebraker86/Stonebraker86b", "title": "Distributed Database Systems (Introduction to Section 3).", "authors": "Michael Stonebraker", "misc": "2002-01-03 183-186 1986 The INGRES Papers db/books/collections/Stonebraker86.html#Stonebraker86b db/books/collections/Stonebraker86/Stonebraker86b.html ingres/P183.pdf" }
+{ "id": "65", "dblpid": "books/aw/stonebraker86/Stonebraker86d", "title": "User Interfaces for Database Systems (Introduction to Section 4).", "authors": "Michael Stonebraker", "misc": "2002-01-03 243-245 1986 The INGRES Papers db/books/collections/Stonebraker86.html#Stonebraker86d db/books/collections/Stonebraker86/Stonebraker86d.html ingres/P243.pdf" }
+{ "id": "67", "dblpid": "books/aw/stonebraker86/Stonebraker86f", "authors": "Michael Stonebraker", "misc": "2002-01-03 393-394 1986 The INGRES Papers db/books/collections/Stonebraker86.html#Stonebraker86f db/books/collections/Stonebraker86/Stonebraker86f.html ingres/P393.pdf" }
+{ "id": "69", "dblpid": "books/aw/stonebraker86/X86a", "title": "References.", "authors": "", "misc": "2002-01-03 429-444 1986 The INGRES Papers db/books/collections/Stonebraker86.html#X86a db/books/collections/Stonebraker86/X86a.html ingres/P429.pdf" }
+{ "id": "71", "dblpid": "books/aw/AbiteboulHV95", "title": "Foundations of Databases.", "authors": "Serge Abiteboul Richard Hull Victor Vianu", "misc": "2002-01-03 Addison-Wesley 1995 0-201-53771-0 AHV/Toc.pdf ... ... journals/tods/AstrahanBCEGGKLMMPTWW76 books/bc/AtzeniA93 journals/tcs/AtzeniABM82 journals/jcss/AbiteboulB86 journals/csur/AtkinsonB87 conf/pods/AtzeniB87 journals/vldb/AbiteboulB95 conf/sigmod/AbiteboulB91 conf/dood/AtkinsonBDDMZ89 conf/vldb/AlbanoBGO93 ... conf/icdt/Abiteboul88 journals/ipl/Abiteboul89 conf/ds/Abrial74 journals/tods/AhoBU79 books/mk/minker88/AptBW88 conf/vldb/AroraC78 conf/stoc/AfratiC89 journals/tods/AlbanoCO85 conf/pods/AfratiCY91 conf/pods/AusielloDM85 conf/vldb/AbiteboulG85 journals/jacm/AjtaiG87 conf/focs/AjtaiG89 journals/tods/AbiteboulG91 ... ... journals/tods/AbiteboulH87 conf/sigmod/AbiteboulH88 ... conf/sigmod/AbiteboulK89 journals/tcs/AbiteboulKG91 journals/jcss/AbiteboulKRW95 conf/sigmod/AbiteboulLUW93 conf/pods/AtzeniP82 conf/pods/AfratiP87 conf/pods/AptP87 conf/wg/AndriesP91 conf/pods/AfratiPPRSU86 books/el/leeuwen90/Apt90 conf/ifip/Armstrong74 journals/siamcomp/AhoSSU81 journals/tods/AhoSU79 journals/siamcomp/AhoSU79 conf/pods/AbiteboulSV90 journals/is/AtzeniT93 conf/popl/AhoU79 conf/pods/AbiteboulV87 conf/jcdkb/AbiteboulV88 journals/jacm/AbiteboulV88 conf/pods/AbiteboulV88 journals/jacm/AbiteboulV89 journals/jcss/AbiteboulV90 journals/jcss/AbiteboulV91 conf/stoc/AbiteboulV91 journals/amai/AbiteboulV91 journals/jcss/AbiteboulV95 journals/jacm/AptE82 conf/coco/AbiteboulVV92 conf/iclp/AptB88 conf/oopsla/BobrowKKMSZ86 journals/tse/BatoryBGSTTW88 conf/mfcs/Bancilhon78 ... conf/db-workshops/Bancilhon85 books/el/leeuwen90/Barendregt90 ... journals/tods/BeeriB79 books/el/leeuwen90/BerstelB90 conf/icdt/BeneventanoB92 conf/vldb/BernsteinBC80 conf/vldb/BeeriBG78 conf/sigmod/BorgidaBMR89 journals/tods/BunemanC79 journals/jacm/BernsteinC81 conf/dbpl/BancilhonCD89 books/bc/tanselCGSS93/BaudinetCW93 conf/sigmod/BiskupDB79 journals/jacm/BeeriDFS84 books/mk/BancilhonDK92 conf/edbt/BryDM88 conf/pods/BunemanDW88 journals/jcss/BunemanDW91 journals/tods/Beeri80 journals/dke/Beeri90 ... journals/tods/Bernstein76 conf/lics/BidoitF87 journals/iandc/BidoitF91 conf/sigmod/BeeriFH77 conf/stoc/BeeriFMMUY81 journals/jacm/BeeriFMY83 journals/tods/BunemanFN82 journals/siamcomp/BernsteinG81 journals/iandc/BlassGK85 conf/ijcai/BrachmanGL85 journals/tods/BernsteinGWRR81 books/aw/BernsteinHG87 ... journals/tcs/Bidoit91 journals/tcs/Biskup80 conf/adbt/Biskup79 journals/tods/Biskup83 journals/tcs/BunemanJO91 journals/tods/BeeriK86 conf/pods/BeeriKBR87 conf/icdt/BidoitL90 journals/csur/BatiniL86 conf/sigmod/BlakeleyLT86 conf/vldb/BeeriM91 conf/sigmod/BlakeleyMG93 journals/siamcomp/BeeriMSU81 conf/pods/BancilhonMSU86 conf/pods/BeeriNRST87 journals/software/Borgida85 conf/icalp/BraP83 conf/fgcs/BalbinMR88 ... conf/pods/BeeriR87 journals/jlp/BalbinR87 conf/sigmod/BancilhonR86 books/mk/minker88/BancilhonR88 journals/jlp/BeeriR91 conf/vldb/BancilhonRS82 conf/pods/BeeriRSS92 conf/dood/Bry89 journals/tods/BancilhonS81 journals/cogsci/BrachmanS85 journals/tods/BergamaschiS92 conf/sigmod/BernsteinST75 conf/dbpl/TannenBN91 conf/icdt/TannenBW92 ... journals/jacm/BeeriV84 conf/icalp/BeeriV81 conf/adbt/BeeriV79 journals/siamcomp/BeeriV84 journals/iandc/BeeriV84 journals/jacm/BeeriV84 journals/tcs/BeeriV85 journals/ibmrd/ChamberlinAEGLMRW76 ... journals/iandc/Cardelli88 books/mk/Cattell94 conf/sigmod/CacaceCCTZ90 conf/vldb/CastilhoCF82 conf/adbt/CasanovaF82 conf/focs/CaiFI89 journals/jcss/CasanovaFP84 conf/stoc/CosmadakisGKV88 conf/dood/CorciuloGP93 books/sp/CeriGT90 conf/focs/ChandraH80 journals/jcss/ChandraH80 journals/jcss/ChandraH82 journals/jlp/ChandraH85 conf/popl/Chandra81 conf/adbt/Chang79 conf/pods/Chandra88 ... journals/tods/Chen76 conf/ride/ChenHM94 conf/icde/Chomicki92 conf/pods/Chomicki92 ... ... ... conf/stoc/CosmadakisK85 journals/acr/CosmadakisK86 ... journals/jcss/CosmadakisKS86 journals/jacm/CosmadakisKV90 ... conf/pods/CalvaneseL94 conf/adbt/Clark77 conf/stoc/ChandraLM81 conf/stoc/ChandraM77 conf/pods/ConsensM90 conf/sigmod/ConsensM93 conf/icdt/ConsensM90 journals/cacm/Codd70 conf/sigmod/Codd71a persons/Codd71a persons/Codd72 conf/ifip/Codd74 ... conf/sigmod/Codd79 journals/cacm/Codd82 ... conf/sigmod/Cohen89 journals/cacm/Cohen90 ... journals/jcss/Cook74 conf/pods/Cosmadakis83 conf/focs/Cosmadakis87 books/el/leeuwen90/Courcelle90a journals/jacm/CosmadakisP84 conf/edbt/CeriCGLLTZ88 ... conf/vldb/CeriT87 conf/vldb/CasanovaTF88 ... conf/pods/CasanovaV83 journals/siamcomp/ChandraV85 conf/pods/ChaudhuriV92 conf/pods/ChaudhuriV93 conf/pods/ChaudhuriV94 journals/csur/CardelliW85 conf/pods/ChenW89 conf/pods/CohenW89 conf/vldb/CeriW90 conf/vldb/CeriW91 conf/iclp/ChenW92 conf/vldb/CeriW93 ... conf/birthday/Dahlhaus87 conf/vldb/Date81 books/aw/Date86 ... conf/dbpl/Dayal89 journals/tods/DayalB82 journals/ibmrd/DelobelC73 conf/icde/DelcambreD89 ... journals/tods/Delobel78 journals/jacm/Demolombe92 journals/tods/DateF92 ... conf/vldb/DayalHL91 journals/jacm/Paola69a conf/caap/DahlhausM86 journals/acr/DAtriM86 journals/iandc/DahlhausM92 conf/sigmod/DerrMP93 conf/vldb/MaindrevilleS88 conf/pods/Dong92 conf/adbt/BraP82 ... conf/dbpl/DongS91 journals/iandc/DongS95 conf/dbpl/DongS93 conf/dbpl/DongS93 conf/icdt/DongT92 conf/vldb/DenninghoffV91 conf/pods/DenninghoffV93 ... ... books/acm/kim95/DayalHW95 ... conf/pods/EiterGM94 conf/pods/Escobar-MolanoHJ93 ... books/el/leeuwen90/Emerson90 books/bc/ElmasriN89 ... conf/icse/Eswaran76 conf/sigmod/EpsteinSW78 ... ... conf/vldb/Fagin77 journals/tods/Fagin77 conf/sigmod/Fagin79 journals/tods/Fagin81 journals/ipl/FaginV83 journals/jacm/Fagin82 journals/jacm/Fagin83 journals/tcs/Fagin93 books/sp/kimrb85/FurtadoC85 ... journals/jlp/Fitting85a journals/tcs/FischerJT83 journals/acr/FaginKUV86 conf/icdt/FernandezM92 journals/tods/FaginMU82 conf/vldb/FaloutsosNS91 ... journals/ai/Forgy82 ... conf/sigmod/Freytag87 ... journals/siamcomp/FischerT83 journals/siamcomp/FaginMUY83 conf/pods/FaginUV83 conf/icalp/FaginV84 ... ... ... ... conf/sigmod/GraefeD87 conf/ride/GatziuD94 conf/sigmod/GardarinM86 conf/sigmod/GyssensG88 journals/tcs/GinsburgH83a journals/jacm/GinsburgH86 ... books/bc/tanselCGSS93/Ginsburg93 books/fm/GareyJ79 journals/jacm/GrantJ82 conf/vldb/GehaniJ91 conf/vldb/GhandeharizadehHJCELLTZ93 journals/tods/GhandeharizadehHJ96 conf/vldb/GehaniJS92 ... conf/sigmod/GehaniJS92 ... conf/deductive/GuptaKM92 conf/pods/GurevichL82 conf/iclp/GelfondL88 conf/adbt/77 journals/csur/GallaireMN84 conf/pods/GrahneMR92 conf/sigmod/GuptaMS93 conf/lics/GaifmanMSV87 journals/jacm/GaifmanMSV93 journals/jacm/GrahamMV86 conf/csl/GradelO92 ... conf/pods/Gottlob87 conf/pods/GyssensPG90 conf/dood/GiannottiPSZ91 books/aw/GoldbergR83 journals/acr/GrahneR86 journals/ipl/Grant77 ... journals/iandc/Grandjean83 conf/vldb/Grahne84 ... journals/csur/Graefe93 books/sp/Greibach75 journals/tods/GoodmanS82 journals/jcss/GoodmanS84 conf/focs/GurevichS85 ... conf/pods/GrumbachS94 conf/sigmod/GangulyST90 ... journals/tcs/Gunter92 ... ... ... ... conf/pods/GrahamV84 conf/pods/GrumbachV91 conf/icde/GardarinV92 conf/sigmod/GraefeW89 ... journals/jacm/GinsburgZ82 conf/vldb/GottlobZ88 ... ... journals/sigmod/Hanson89 ... journals/cacm/Harel80 journals/tkde/HaasCLMWLLPCS90 conf/lics/Hella92 journals/iandc/Herrmann95 conf/pods/HirstH93 conf/vldb/HullJ91 conf/ewdw/HullJ90 journals/csur/HullK87 journals/tods/HudsonK89 conf/lics/HillebrandKM93 conf/nato/HillebrandKR93 conf/jcdkb/HsuLM88 journals/ipl/HoneymanLY80 journals/tods/HammerM81 conf/adbt/HenschenMN82 ... journals/jacm/HenschenN84 journals/jacm/Honeyman82 conf/sigmod/HullS89 conf/pods/HullS89 journals/acta/HullS94 journals/jcss/HullS93 conf/fodo/HullTY89 journals/jcss/Hull83 journals/jacm/Hull84 journals/tcs/Hull85 journals/siamcomp/Hull86 ... conf/vldb/Hulin89 ... journals/jacm/HullY84 conf/vldb/HullY90 conf/pods/HullY91 conf/sigmod/IoannidisK90 journals/jcss/ImielinskiL84 conf/adbt/Imielinski82 journals/jcss/Immerman82 journals/iandc/Immerman86 ... journals/siamcomp/Immerman87 conf/pods/ImielinskiN88 conf/vldb/IoannidisNSS92 conf/sigmod/ImielinskiNV91 conf/dood/ImielinskiNV91 conf/vldb/Ioannidis85 journals/jacm/Jacobs82 conf/dbpl/JacobsH91 journals/csur/JarkeK84 journals/jcss/JohnsonK84 conf/popl/JaffarL87 books/el/leeuwen90/Johnson90 journals/jacm/Joyner76 conf/pods/JaeschkeS82 ... books/mk/minker88/Kanellakis88 books/el/leeuwen90/Kanellakis90 conf/oopsla/KhoshafianC86 conf/edbt/KotzDM88 conf/jcdkb/Keller82 conf/pods/Keller85 journals/computer/Keller86 ... journals/tods/Kent79 ... journals/ngc/RohmerLK86 conf/tacs/KanellakisG94 conf/jcdkb/Kifer88 conf/pods/KanellakisKR90 conf/sigmod/KiferKS92 ... conf/icdt/KiferL86 books/aw/KimL89 ... journals/tods/Klug80 journals/jacm/Klug82 journals/jacm/Klug88 journals/jacm/KiferLW95 conf/kr/KatsunoM91 journals/ai/KatsunoM92 conf/jcdkb/KrishnamurthyN88 journals/csur/Knight89 ... journals/iandc/Kolaitis91 journals/ai/Konolige88 conf/ifip/Kowalski74 journals/jacm/Kowalski75 conf/bncod/Kowalski84 conf/vldb/KoenigP81 journals/tods/KlugP82 ... conf/pods/KolaitisP88 conf/pods/KiferRS88 conf/sigmod/KrishnamurthyRS88 books/mg/SilberschatzK91 conf/iclp/KempT88 conf/sigmod/KellerU84 conf/dood/Kuchenhoff91 ... journals/jlp/Kunen87 conf/iclp/Kunen88 conf/pods/Kuper87 conf/pods/Kuper88 conf/ppcp/Kuper93 conf/pods/KuperV84 conf/stoc/KolaitisV87 journals/tcs/KarabegV90 journals/iandc/KolaitisV90 conf/pods/KolaitisV90 journals/tods/KarabegV91 journals/iandc/KolaitisV92 journals/tcs/KuperV93 journals/tods/KuperV93 journals/tse/KellerW85 conf/pods/KiferW89 conf/jcdkb/Lang88 books/el/Leeuwen90 ... journals/jcss/Leivant89 ... journals/iandc/Leivant90 ... conf/db-workshops/Levesque82 journals/ai/Levesque84 conf/mfdbs/Libkin91 conf/er/Lien79 journals/jacm/Lien82 books/mk/minker88/Lifschitz88 ... journals/tcs/Lindell91 journals/tods/Lipski79 journals/jacm/Lipski81 journals/tcs/LeratL86 journals/cj/LeveneL90 books/sp/Lloyd87 conf/pods/LakshmananM89 conf/tlca/LeivantM93 conf/sigmod/LaverMG83 conf/pods/LiptonN90 journals/jcss/LucchesiO78 conf/sigmod/Lohman88 ... conf/ijcai/Lozinskii85 books/ph/LewisP81 ... conf/sigmod/LecluseRV88 journals/is/LipeckS87 journals/jlp/LloydST87 journals/tods/LingTK81 conf/sigmod/LyngbaekV87 conf/dood/LefebvreV89 conf/pods/LibkinW93 conf/dbpl/LibkinW93 journals/jacm/Maier80 books/cs/Maier83 ... conf/vldb/Makinouchi77 conf/icalp/Makowsky81 ... conf/icdt/Malvestuto86 conf/aaai/MacGregorB92 journals/tods/MylopoulosBW80 conf/sigmod/McCarthyD89 journals/csur/MishraE92 conf/sigmod/MumickFPR90 books/mk/Minker88 journals/jlp/Minker88 conf/vldb/MillerIR93 journals/is/MillerIR94 journals/iandc/Mitchell83 conf/pods/Mitchell83 conf/vldb/MendelzonM79 journals/tods/MaierMS79 journals/jcss/MaierMSU80 conf/pods/MendelzonMW94 journals/debu/MorrisNSUG87 journals/ai/Moore85 conf/vldb/Morgenstern83 conf/pods/Morris88 ... conf/pods/MannilaR85 ... journals/jlp/MinkerR90 books/aw/MannilaR92 journals/acr/MaierRW86 ... journals/tods/MarkowitzS92 conf/pods/Marchetti-SpaccamelaPS87 journals/jacm/MaierSY81 conf/iclp/MorrisUG86 journals/tods/MaierUV84 conf/iclp/MorrisUG86 journals/acta/MakowskyV86 books/bc/MaierW88 books/mk/minker88/ManchandraW88 conf/pods/Naughton86 conf/sigmod/NgFS91 ... conf/vldb/Nejdl87 conf/adbt/NicolasM77 conf/sigmod/Nicolas78 journals/acta/Nicolas82 conf/ds/76 conf/pods/NaqviK88 journals/tods/NegriPS91 conf/vldb/NaughtonRSU89 conf/pods/NaughtonS87 ... ... conf/vldb/Osborn79 ... journals/tods/OzsoyogluY87 conf/adbt/Paige82 ... books/cs/Papadimitriou86 ... journals/ipl/Paredaens78 ... books/sp/ParedaensBGG89 journals/ai/Andersen91 books/el/leeuwen90/Perrin90 journals/ins/Petrov89 conf/pods/ParedaensG88 conf/pods/PatnaikI94 conf/adbt/ParedaensJ79 journals/csur/PeckhamM88 ... ... conf/sigmod/ParkerP80 ... conf/iclp/Przymusinski88 conf/pods/Przymusinski89 ... conf/vldb/ParkerSV92 conf/aaai/PearlV87 journals/ai/PereiraW80a conf/pods/PapadimitriouY92 journals/tkde/QianW91 ... journals/jlp/Ramakrishnan91 conf/pods/RamakrishnanBS87 ... conf/adbt/Reiter77 journals/ai/Reiter80 conf/db-workshops/Reiter82 journals/jacm/Reiter86 journals/tods/Rissanen77 conf/mfcs/Rissanen78 conf/pods/Rissanen82 ... journals/ngc/RohmerLK86 journals/jacm/Robinson65 ... conf/pods/Ross89 ... ... conf/sigmod/RoweS79 conf/sigmod/RichardsonS91 journals/debu/RamamohanaraoSBPNTZD87 conf/vldb/RamakrishnanSS92 conf/sigmod/RamakrishnanSSS93 conf/pods/RamakrishnanSUV89 journals/jcss/RamakrishnanSUV93 journals/jlp/RamakrishnanU95 conf/sigmod/SelingerACLP79 conf/sigmod/Sagiv81 journals/tods/Sagiv83 books/mk/minker88/Sagiv88 conf/slp/Sagiv90 conf/sigmod/Sciore81 journals/jacm/Sciore82 conf/pods/Sciore83 journals/acr/Sciore86 journals/jacm/SagivDPF81 conf/pods/X89 ... journals/ai/SmithG85 books/mk/minker88/Shepherdson88 journals/tods/Shipman81 conf/pods/Shmueli87 conf/iclp/SekiI88 conf/sigmod/ShmueliI84 journals/tc/Sickel76 journals/jsc/Siekmann89 conf/sigmod/StonebrakerJGP90 conf/vldb/SimonKM92 journals/csur/ShethL90 conf/pods/SeibL91 conf/sigmod/SuLRD93 conf/adbt/SilvaM79 journals/sigmod/Snodgrass90 journals/sigmod/Soo91 conf/pods/SuciuP94 conf/sigmod/StonebrakerR86 conf/slp/SudarshanR93 conf/pods/SagivS86 journals/cacm/Stonebraker81 books/mk/Stonebraker88 journals/tkde/Stonebraker92 books/aw/Stroustrup91 journals/jacm/SadriU82 conf/vldb/Su91 conf/pods/SagivV89 journals/jacm/SagivW82 journals/tods/StonebrakerWKH76 journals/jacm/SagivY80 conf/pods/SaccaZ86 journals/tcs/SaccaZ88 ... conf/pods/SaccaZ90 ... ... books/bc/TanselCGJSS93 ... journals/acr/ThomasF86 ... ... ... ... journals/tcs/Topor87 ... books/mk/minker88/ToporS88 ... journals/siamcomp/TarjanY84 journals/csur/TeoreyYF86 journals/algorithmica/UllmanG88 conf/pods/Ullman82 books/cs/Ullman82 journals/tods/Ullman85 books/cs/Ullman88 conf/pods/Ullman89 books/cs/Ullman89 conf/sigmod/Gelder86 ... conf/pods/BusscheG92 conf/focs/BusscheGAG92 conf/pods/BusscheP91 conf/slp/Gelder86 conf/pods/Gelder89 conf/pods/GelderRS88 journals/jacm/GelderRS91 journals/tods/GelderT91 journals/ipl/Vardi81 conf/stoc/Vardi82 conf/focs/Vardi82 journals/acta/Vardi83 journals/jcss/Vardi84 conf/pods/Vardi85 conf/pods/Vardi86 journals/jcss/Vardi86 ... conf/pods/Vardi88 conf/sigmod/Vassiliou79 ... ... journals/jacm/EmdenK76 conf/nf2/SchollABBGPRV87 journals/jacm/Vianu87 journals/acta/Vianu87 conf/eds/Vieille86 conf/iclp/Vieille87 ... conf/eds/Vieille88 journals/tcs/Vieille89 ... journals/tcs/VianuV92 conf/sigmod/WidomF90 conf/icde/WangH92 conf/pos/WidjojoHW90 journals/computer/Wiederhold92 conf/pods/Wilkins86 conf/pods/Winslett88 conf/sigmod/WolfsonO90 conf/pods/Wong93 conf/sigmod/WolfsonS88 journals/ibmrd/WangW75 journals/tods/WongY76 conf/vldb/Yannakakis81 journals/csur/YuC84 ... journals/jcss/YannakakisP82 ... journals/tods/Zaniolo82 journals/jcss/Zaniolo84 ... conf/edbt/ZhouH90 journals/ibmsj/Zloof77 books/mk/ZdonikM90 db/books/dbtext/abiteboul95.html" }
+{ "id": "73", "dblpid": "books/aw/AhoHU74", "title": "The Design and Analysis of Computer Algorithms.", "authors": "Alfred V. Aho John E. Hopcroft Jeffrey D. Ullman", "misc": "2002-01-03 Addison-Wesley 1974 0-201-00029-6" }
+{ "id": "75", "dblpid": "books/aw/AhoHU83", "title": "Data Structures and Algorithms.", "authors": "Alfred V. Aho John E. Hopcroft Jeffrey D. Ullman", "misc": "2002-01-03 Addison-Wesley 1983 0-201-00023-7" }
+{ "id": "77", "dblpid": "books/aw/AhoKW88", "title": "The AWK Programming Language", "authors": "Alfred V. Aho Brian W. Kernighan Peter J. Weinberger", "misc": "2002-01-03 Addison-Wesley 1988" }
+{ "id": "79", "dblpid": "books/aw/AhoSU86", "title": "Compilers Princiles, Techniques, and Tools.", "authors": "Alfred V. Aho Ravi Sethi Jeffrey D. Ullman", "misc": "2002-01-03 Addison-Wesley 1986 0-201-10088-6" }
+{ "id": "81", "dblpid": "journals/siamcomp/AspnesW96", "authors": "James Aspnes Orli Waarts", "misc": "2002-01-03 1024-1044 1996 25 SIAM J. Comput. 5 db/journals/siamcomp/siamcomp25.html#AspnesW96" }
+{ "id": "83", "dblpid": "journals/siamcomp/Bloniarz83", "title": "A Shortest-Path Algorithm with Expected Time O(n² log n log* n).", "authors": "Peter A. Bloniarz", "misc": "2002-01-03 588-600 1983 12 SIAM J. Comput. 3 db/journals/siamcomp/siamcomp12.html#Bloniarz83" }
+{ "id": "85", "dblpid": "journals/siamcomp/Megiddo83a", "title": "Linear-Time Algorithms for Linear Programming in R³ and Related Problems.", "authors": "Nimrod Megiddo", "misc": "2002-01-03 759-776 1983 12 SIAM J. Comput. 4 db/journals/siamcomp/siamcomp12.html#Megiddo83a" }
+{ "id": "87", "dblpid": "journals/siamcomp/MoffatT87", "title": "An All Pairs Shortest Path Algorithm with Expected Time O(n² log n).", "authors": "Alistair Moffat Tadao Takaoka", "misc": "2002-01-03 1023-1031 1987 16 SIAM J. Comput. 6 db/journals/siamcomp/siamcomp16.html#MoffatT87" }
+{ "id": "89", "dblpid": "conf/icip/SchonfeldL98", "title": "VORTEX Video Retrieval and Tracking from Compressed Multimedia Databases.", "authors": "Dan Schonfeld Dan Lelescu", "misc": "2002-11-05 123-127 1998 ICIP (3) db/conf/icip/icip1998-3.html#SchonfeldL98" }
+{ "id": "91", "dblpid": "journals/corr/abs-0802-2861", "title": "Geometric Set Cover and Hitting Sets for Polytopes in $R^3$", "authors": "Sören Laue", "misc": "2008-03-03 http //arxiv.org/abs/0802.2861 2008 CoRR abs/0802.2861 db/journals/corr/corr0802.html#abs-0802-2861 informal publication" }
+{ "id": "93", "dblpid": "journals/iandc/IbarraJCR91", "authors": "Oscar H. Ibarra Tao Jiang Jik H. Chang Bala Ravikumar", "misc": "2006-04-25 86-106 Inf. Comput. January 1991 90 1 db/journals/iandc/iandc90.html#IbarraJCR91" }
+{ "id": "95", "dblpid": "journals/jacm/GalilHLSW87", "title": "An O(n³log n) deterministic and an O(n³) Las Vegs isomorphism test for trivalent graphs.", "authors": "Zvi Galil Christoph M. Hoffmann Eugene M. Luks Claus-Peter Schnorr Andreas Weber", "misc": "2003-11-20 513-531 1987 34 J. ACM 3 http //doi.acm.org/10.1145/28869.28870 db/journals/jacm/jacm34.html#GalilHLSW87" }
+{ "id": "97", "dblpid": "journals/jacm/GalilT88", "title": "An O(n²(m + n log n)log n) min-cost flow algorithm.", "authors": "Zvi Galil Éva Tardos", "misc": "2003-11-20 374-386 1988 35 J. ACM 2 http //doi.acm.org/10.1145/42282.214090 db/journals/jacm/jacm35.html#GalilT88" }
+{ "id": "99", "dblpid": "series/synthesis/2009Weintraub", "title": "Jordan Canonical Form Theory and Practice", "authors": "Steven H. Weintraub", "misc": "2009-09-06 Jordan Canonical Form Theory and Practice http //dx.doi.org/10.2200/S00218ED1V01Y200908MAS006 http //dx.doi.org/10.2200/S00218ED1V01Y200908MAS006 2009 Synthesis Lectures on Mathematics & Statistics Morgan & Claypool Publishers" }
diff --git a/asterixdb/asterix-app/data/tinycollege/staff.adm b/asterixdb/asterix-app/data/tinycollege/staff.adm
index 4bfdd4b..d24bd87 100644
--- a/asterixdb/asterix-app/data/tinycollege/staff.adm
+++ b/asterixdb/asterix-app/data/tinycollege/staff.adm
@@ -1,7 +1,8 @@
-{ "id": 14, "name": "Alex", "office": "A", "employment": interval(date("2003-01-01"), date("2008-01-01")) }
-{ "id": 13, "name": "Elisabeth", "office": "B", "employment": interval(date("2002-01-01"), date("2010-01-01")) }
-{ "id": 16, "name": "Franklin", "office": "A", "employment": interval(date("2004-01-01"), date("2009-01-01")) }
-{ "id": 15, "name": "Henry", "office": "C", "employment": interval(date("2003-01-01"), date("2008-01-01")) }
-{ "id": 17, "name": "Maryann", "office": "B", "employment": interval(date("2006-01-01"), date("2010-01-01")) }
-{ "id": 11, "name": "Vicky", "office": "D", "employment": interval(date("2001-01-01"), date("2010-01-01")) }
-{ "id": 12, "name": "Zack", "office": "A", "employment": interval(date("2002-01-01"), date("2003-01-01")) }
+{ "id": 14, "name": "Alex", "office": "A", "employment": interval(date("2003-01-01"), date("2008-01-01")), "vacation": interval(datetime("2003-01-01T00:00:00.0"), datetime("2008-01-01T00:00:00.0")), "office_hours": interval(time("03:00:00.0+00:00"), time("08:00:00.0+00:00"))}
+{ "id": 13, "name": "Elisabeth", "office": "B", "employment": interval(date("2002-01-01"), date("2010-01-01")), "vacation": interval(datetime("2002-01-01T00:00:00.0"), datetime("2010-01-01T00:00:00.0")), "office_hours": interval(time("02:00:00.0+00:00"), time("10:00:00.0+00:00"))}
+{ "id": 16, "name": "Franklin", "office": "A", "employment": interval(date("2004-01-01"), date("2009-01-01")), "vacation": interval(datetime("2004-01-01T00:00:00.0"), datetime("2009-01-01T00:00:00.0")), "office_hours": interval(time("04:00:00.0+00:00"), time("09:00:00.0+00:00"))}
+{ "id": 15, "name": "Henry", "office": "C", "employment": interval(date("2003-01-01"), date("2008-01-01")), "vacation": interval(datetime("2003-01-01T00:00:00.0"), datetime("2008-01-01T00:00:00.0")), "office_hours": interval(time("03:00:00.0+00:00"), time("08:00:00.0+00:00"))}
+{ "id": 17, "name": "MaryAnn", "office": "B", "employment": interval(date("2006-01-01"), date("2010-01-01")), "vacation": interval(datetime("2006-01-01T00:00:00.0"), datetime("2010-01-01T00:00:00.0")), "office_hours": interval(time("06:00:00.0+00:00"), time("10:00:00.0+00:00"))}
+{ "id": 11, "name": "Vicky", "office": "D", "employment": interval(date("2001-01-01"), date("2010-01-01")), "vacation": interval(datetime("2001-01-01T00:00:00.0"), datetime("2010-01-01T00:00:00.0")), "office_hours": interval(time("01:00:00.0+00:00"), time("10:00:00.0+00:00"))}
+{ "id": 12, "name": "Zack", "office": "A", "employment": interval(date("2002-01-01"), date("2003-01-01")), "vacation": interval(datetime("2002-01-01T00:00:00.0"), datetime("2003-01-01T00:00:00.0")), "office_hours": interval(time("02:00:00.0+00:00"), time("03:00:00.0+00:00"))}
+{ "id": 18, "name": "Jake", "office": "C", "employment": interval(date("2006-01-01"), date("2008-01-01")), "vacation": interval(datetime("2006-01-01T00:00:00.0"), datetime("2008-01-01T00:00:00.0")), "office_hours": interval(time("06:00:00.0+00:00"), time("08:00:00.0+00:00"))}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/data/tinycollege/students.adm b/asterixdb/asterix-app/data/tinycollege/students.adm
index b869075..d9447d2 100644
--- a/asterixdb/asterix-app/data/tinycollege/students.adm
+++ b/asterixdb/asterix-app/data/tinycollege/students.adm
@@ -1,7 +1,7 @@
-{ "id": 22, "name": "Charles", "office": "X", "attendance": interval(date("2001-01-01"), date("2004-01-01")) }
-{ "id": 23, "name": "Frank", "office": "Y", "attendance": interval(date("2001-01-01"), date("2004-01-01")) }
-{ "id": 25, "name": "Karen", "office": "Y", "attendance": interval(date("2007-01-01"), date("2009-01-01")) }
-{ "id": 24, "name": "Mary", "office": "Y", "attendance": interval(date("2002-01-01"), date("2005-01-01")) }
-{ "id": 21, "name": "Olga", "office": "Z", "attendance": interval(date("2001-01-01"), date("2003-01-01")) }
-{ "id": 26, "name": "Steve", "office": "Z", "attendance": interval(date("2007-01-01"), date("2010-01-01")) }
-{ "id": 27, "name": "Tess", "office": "X", "attendance": interval(date("2008-01-01"), date("2010-01-01")) }
+{ "id": 22, "name": "Charles", "office": "X", "attendance": interval(date("2001-01-01"), date("2004-01-01")), "break": interval(datetime("2001-01-01T00:00:00.0"), datetime("2004-01-01T00:00:00.0")), "work_hours": interval(time("01:00:00.0+00:00"), time("04:00:00.0+00:00"))}
+{ "id": 23, "name": "Frank", "office": "Y", "attendance": interval(date("2001-01-01"), date("2004-01-01")), "break": interval(datetime("2001-01-01T00:00:00.0"), datetime("2004-01-01T00:00:00.0")), "work_hours": interval(time("01:00:00.0+00:00"), time("04:00:00.0+00:00"))}
+{ "id": 25, "name": "Karen", "office": "Y", "attendance": interval(date("2007-01-01"), date("2009-01-01")), "break": interval(datetime("2007-01-01T00:00:00.0"), datetime("2009-01-01T00:00:00.0")), "work_hours": interval(time("07:00:00.0+00:00"), time("09:00:00.0+00:00"))}
+{ "id": 24, "name": "Mary", "office": "Y", "attendance": interval(date("2002-01-01"), date("2005-01-01")), "break": interval(datetime("2002-01-01T00:00:00.0"), datetime("2005-01-01T00:00:00.0")), "work_hours": interval(time("02:00:00.0+00:00"), time("05:00:00.0+00:00"))}
+{ "id": 21, "name": "Olga", "office": "Z", "attendance": interval(date("2001-01-01"), date("2003-01-01")), "break": interval(datetime("2001-01-01T00:00:00.0"), datetime("2003-01-01T00:00:00.0")), "work_hours": interval(time("01:00:00.0+00:00"), time("03:00:00.0+00:00"))}
+{ "id": 26, "name": "Steve", "office": "Z", "attendance": interval(date("2007-01-01"), date("2010-01-01")), "break": interval(datetime("2007-01-01T00:00:00.0"), datetime("2010-01-01T00:00:00.0")), "work_hours": interval(time("07:00:00.0+00:00"), time("10:00:00.0+00:00"))}
+{ "id": 27, "name": "Tess", "office": "X", "attendance": interval(date("2008-01-01"), date("2010-01-01")), "break": interval(datetime("2008-01-01T00:00:00.0"), datetime("2010-01-01T00:00:00.0")), "work_hours": interval(time("08:00:00.0+00:00"), time("10:00:00.0+00:00"))}
diff --git a/asterixdb/asterix-app/pom.xml b/asterixdb/asterix-app/pom.xml
index 87de7c3..e8f9575 100644
--- a/asterixdb/asterix-app/pom.xml
+++ b/asterixdb/asterix-app/pom.xml
@@ -37,8 +37,8 @@
<root.dir>${basedir}/..</root.dir>
<appendedResourcesDirectory>${basedir}/src/main/appended-resources</appendedResourcesDirectory>
<sonar.sources>pom.xml,src/main/java,src/main/resources</sonar.sources>
- <pip.path>${project.build.directory}${file.separator}bin${file.separator}pip3</pip.path>
- <shiv.path>${project.build.directory}${file.separator}bin${file.separator}shiv</shiv.path>
+ <pip.path>${project.build.directory}/bin/pip3</pip.path>
+ <shiv.path>${project.build.directory}/bin/shiv</shiv.path>
</properties>
<build>
<plugins>
@@ -208,7 +208,7 @@
</configuration>
</execution>
<execution>
- <id>shiv-pyro-shim</id>
+ <id>shiv-msgpack-shim</id>
<phase>${pyro-shim.stage}</phase>
<goals>
<goal>exec</goal>
@@ -218,8 +218,8 @@
<workingDirectory>${project.build.directory}</workingDirectory>
<arguments>
<argument>-o </argument>
- <argument>${project.build.directory}${file.separator}classes${file.separator}pyro4.pyz</argument>
- <argument>pyro4</argument>
+ <argument>${project.build.directory}${file.separator}classes${file.separator}msgpack.pyz</argument>
+ <argument>msgpack</argument>
</arguments>
<environmentVariables>
<VIRTUALENV>${project.build.directory}</VIRTUALENV>
@@ -382,8 +382,8 @@
</os>
</activation>
<properties>
- <pip.path>${project.build.directory}${file.separator}Scripts${file.separator}pip3.exe</pip.path>
- <shiv.path>${project.build.directory}${file.separator}Scripts${file.separator}shiv.exe</shiv.path>
+ <pip.path>${project.build.directory}\Scripts\pip3.exe</pip.path>
+ <shiv.path>${project.build.directory}\Scripts\shiv.exe</shiv.path>
</properties>
</profile>
<profile>
@@ -827,9 +827,9 @@
<artifactId>commons-csv</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpmime</artifactId>
- <scope>test</scope>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpmime</artifactId>
+ <scope>test</scope>
</dependency>
<!-- AWS -->
<dependency>
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
index a3593d5..a5daab6 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
@@ -133,12 +133,12 @@
CompilerProperties.COMPILER_SORTMEMORY_KEY, CompilerProperties.COMPILER_WINDOWMEMORY_KEY,
CompilerProperties.COMPILER_TEXTSEARCHMEMORY_KEY, CompilerProperties.COMPILER_PARALLELISM_KEY,
CompilerProperties.COMPILER_SORT_PARALLEL_KEY, CompilerProperties.COMPILER_SORT_SAMPLES_KEY,
- CompilerProperties.COMPILER_INDEXONLY_KEY, FunctionUtil.IMPORT_PRIVATE_FUNCTIONS,
- FuzzyUtils.SIM_FUNCTION_PROP_NAME, FuzzyUtils.SIM_THRESHOLD_PROP_NAME,
- StartFeedStatement.WAIT_FOR_COMPLETION, FeedActivityDetails.FEED_POLICY_NAME,
- FeedActivityDetails.COLLECT_LOCATIONS, SqlppQueryRewriter.INLINE_WITH_OPTION,
- SqlppExpressionToPlanTranslator.REWRITE_IN_AS_OR_OPTION, "hash_merge", "output-record-type",
- DisjunctivePredicateToJoinRule.REWRITE_OR_AS_JOIN_OPTION);
+ CompilerProperties.COMPILER_INDEXONLY_KEY, CompilerProperties.COMPILER_INTERNAL_SANITYCHECK_KEY,
+ FunctionUtil.IMPORT_PRIVATE_FUNCTIONS, FuzzyUtils.SIM_FUNCTION_PROP_NAME,
+ FuzzyUtils.SIM_THRESHOLD_PROP_NAME, StartFeedStatement.WAIT_FOR_COMPLETION,
+ FeedActivityDetails.FEED_POLICY_NAME, FeedActivityDetails.COLLECT_LOCATIONS,
+ SqlppQueryRewriter.INLINE_WITH_OPTION, SqlppExpressionToPlanTranslator.REWRITE_IN_AS_OR_OPTION,
+ "hash_merge", "output-record-type", DisjunctivePredicateToJoinRule.REWRITE_OR_AS_JOIN_OPTION);
private final IRewriterFactory rewriterFactory;
private final IAstPrintVisitorFactory astPrintVisitorFactory;
@@ -187,7 +187,7 @@
generateExpressionTree(q);
}
IQueryRewriter rw = rewriterFactory.createQueryRewriter();
- rw.rewrite(declaredFunctions, q, metadataProvider,
+ rw.rewrite(new ArrayList<>(declaredFunctions), q, metadataProvider,
new LangRewritingContext(q.getVarCounter(), warningCollector), inlineUdfs, externalVars);
return new Pair<>(q, q.getVarCounter());
}
@@ -285,6 +285,7 @@
builder.setHashFunctionFactoryProvider(format.getBinaryHashFunctionFactoryProvider());
builder.setHashFunctionFamilyProvider(format.getBinaryHashFunctionFamilyProvider());
builder.setMissingWriterFactory(format.getMissingWriterFactory());
+ builder.setUnnestingPositionWriterFactory(format.getUnnestingPositionWriterFactory());
builder.setPredicateEvaluatorFactoryProvider(format.getPredicateEvaluatorFactoryProvider());
builder.setPrinterProvider(getPrinterFactoryProvider(format, conf.fmt()));
builder.setSerializerDeserializerProvider(format.getSerdeProvider());
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ApiServlet.java
index 47e897d..cbae6e8 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ApiServlet.java
@@ -161,7 +161,7 @@
duration = (endTime - startTime) / 1000.00;
out.println(HTML_STATEMENT_SEPARATOR);
out.println("<PRE>Duration of all jobs: " + duration + " sec</PRE>");
- } catch (AsterixException | TokenMgrError | org.apache.asterix.aqlplus.parser.TokenMgrError pe) {
+ } catch (AsterixException | TokenMgrError | org.apache.asterix.lang.sqlpp.parser.TokenMgrError pe) {
GlobalConfig.ASTERIX_LOGGER.log(Level.INFO, pe.toString(), pe);
ResultUtil.webUIParseExceptionHandler(out, pe, query);
} catch (Exception e) {
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/BasicAuthServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/BasicAuthServlet.java
index d8e167f..f25d223 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/BasicAuthServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/BasicAuthServlet.java
@@ -18,35 +18,68 @@
*/
package org.apache.asterix.api.http.server;
-import static org.apache.asterix.api.http.server.ServletConstants.CREDENTIAL_MAP;
+import static org.apache.asterix.api.http.server.ServletConstants.*;
+import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
+import java.util.Collections;
import java.util.Map;
import java.util.concurrent.ConcurrentMap;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.hyracks.http.api.IServlet;
import org.apache.hyracks.http.api.IServletRequest;
import org.apache.hyracks.http.api.IServletResponse;
-import org.apache.hyracks.http.server.AbstractServlet;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.mindrot.jbcrypt.BCrypt;
import io.netty.handler.codec.http.HttpHeaderNames;
+import io.netty.handler.codec.http.HttpMethod;
import io.netty.handler.codec.http.HttpResponseStatus;
-public abstract class BasicAuthServlet extends AbstractServlet {
+public class BasicAuthServlet implements IServlet {
private static final Logger LOGGER = LogManager.getLogger();
public static String BASIC_AUTH_METHOD_NAME = "Basic";
private Base64.Decoder b64Decoder;
Map<String, String> storedCredentials;
+ Map<String, String> ephemeralCredentials;
+ private String sysAuthHeader;
+ private final IServlet delegate;
+ private ConcurrentMap<String, Object> ctx;
- protected BasicAuthServlet(ConcurrentMap<String, Object> ctx, String... paths) {
- super(ctx, paths);
+ public BasicAuthServlet(ConcurrentMap<String, Object> ctx, IServlet delegate) {
+ this.delegate = delegate;
b64Decoder = Base64.getDecoder();
storedCredentials = (Map<String, String>) ctx.get(CREDENTIAL_MAP);
+ this.ctx = ctx;
+ // generate internal user
+ String sysUser;
+ do {
+ sysUser = generateRandomString(32);
+ } while (storedCredentials.containsKey(sysUser));
+ String sysPassword = generateRandomString(128);
+ ephemeralCredentials = Collections.singletonMap(sysUser, hashPassword(sysPassword));
+ sysAuthHeader = createAuthHeader(sysUser, sysPassword);
+ ctx.put(SYS_AUTH_HEADER, sysAuthHeader);
+ }
+
+ @Override
+ public String[] getPaths() {
+ return delegate.getPaths();
+ }
+
+ @Override
+ public void init() throws IOException {
+ delegate.init();
+ }
+
+ @Override
+ public ConcurrentMap<String, Object> ctx() {
+ return ctx;
}
@Override
@@ -56,7 +89,7 @@
if (!authorized) {
response.setStatus(HttpResponseStatus.UNAUTHORIZED);
} else {
- super.handle(request, response);
+ delegate.handle(request, response);
}
} catch (Exception e) {
LOGGER.log(Level.WARN, "Unhandled exception", e);
@@ -104,7 +137,7 @@
}
protected Map<String, String> getStoredCredentials(IServletRequest request) {
- return storedCredentials;
+ return request.getHttpRequest().method().equals(HttpMethod.GET) ? ephemeralCredentials : storedCredentials;
}
public static String hashPassword(String password) {
@@ -116,4 +149,8 @@
byte[] encodedAuth = Base64.getEncoder().encode(auth.getBytes(StandardCharsets.ISO_8859_1));
return "Basic " + new String(encodedAuth);
}
+
+ private static String generateRandomString(int size) {
+ return RandomStringUtils.randomAlphanumeric(size);
+ }
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
index cb1d6cf..c8062ac 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
@@ -279,7 +279,7 @@
if (forceReadOnly) {
param.setReadOnly(true);
}
- LOGGER.info(() -> "handleRequest: " + LogRedactionUtil.userData(param.toString()));
+ LOGGER.info(() -> "handleRequest: " + LogRedactionUtil.statement(param.toString()));
delivery = param.getMode();
setSessionConfig(sessionOutput, param, delivery);
final ResultProperties resultProperties = new ResultProperties(delivery, param.getMaxResultReads());
@@ -307,7 +307,7 @@
executionState.setStatus(ResultStatus.SUCCESS, HttpResponseStatus.OK);
}
errorCount = 0;
- } catch (Exception | TokenMgrError | org.apache.asterix.aqlplus.parser.TokenMgrError e) {
+ } catch (Exception | TokenMgrError | org.apache.asterix.lang.sqlpp.parser.TokenMgrError e) {
handleExecuteStatementException(e, executionState, param);
response.setStatus(executionState.getHttpStatus());
requestFailed(e, responsePrinter);
@@ -424,13 +424,14 @@
protected void handleExecuteStatementException(Throwable t, RequestExecutionState executionState,
QueryServiceRequestParameters param) {
- if (t instanceof org.apache.asterix.aqlplus.parser.TokenMgrError || t instanceof TokenMgrError
+ if (t instanceof org.apache.asterix.lang.sqlpp.parser.TokenMgrError || t instanceof TokenMgrError
|| t instanceof AlgebricksException) {
if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("handleException: {}: {}", t.getMessage(), LogRedactionUtil.userData(param.toString()), t);
+ LOGGER.debug("handleException: {}: {}", t.getMessage(), LogRedactionUtil.statement(param.toString()),
+ t);
} else {
LOGGER.info(() -> "handleException: " + t.getMessage() + ": "
- + LogRedactionUtil.userData(param.toString()));
+ + LogRedactionUtil.statement(param.toString()));
}
executionState.setStatus(ResultStatus.FATAL, HttpResponseStatus.BAD_REQUEST);
} else if (t instanceof HyracksException) {
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ServletConstants.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ServletConstants.java
index 857faf0..0eac474 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ServletConstants.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ServletConstants.java
@@ -26,6 +26,7 @@
public static final String RUNNING_QUERIES_ATTR = "org.apache.asterix.RUNINNG_QUERIES";
public static final String SERVICE_CONTEXT_ATTR = "org.apache.asterix.SERVICE_CONTEXT";
public static final String CREDENTIAL_MAP = "org.apache.asterix.CREDENTIAL_MAP";
+ public static final String SYS_AUTH_HEADER = "org.apache.asterix.SYS_AUTH_HEADER";
private ServletConstants() {
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/UdfApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/UdfApiServlet.java
index d0ae6ac..18139f6 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/UdfApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/UdfApiServlet.java
@@ -19,6 +19,7 @@
package org.apache.asterix.api.http.server;
import static org.apache.asterix.api.http.server.ServletConstants.HYRACKS_CONNECTION_ATTR;
+import static org.apache.asterix.api.http.server.ServletConstants.SYS_AUTH_HEADER;
import static org.apache.asterix.common.functions.ExternalFunctionLanguage.JAVA;
import static org.apache.asterix.common.functions.ExternalFunctionLanguage.PYTHON;
@@ -63,7 +64,6 @@
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.output.NullWriter;
-import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.hyracks.algebricks.common.utils.Pair;
import org.apache.hyracks.api.application.ICCServiceContext;
@@ -74,12 +74,12 @@
import org.apache.hyracks.control.common.work.SynchronizableWork;
import org.apache.hyracks.http.api.IServletRequest;
import org.apache.hyracks.http.api.IServletResponse;
+import org.apache.hyracks.http.server.AbstractServlet;
import org.apache.hyracks.http.server.utils.HttpUtil;
import org.apache.hyracks.util.file.FileUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import io.netty.handler.codec.http.HttpMethod;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.handler.codec.http.HttpScheme;
@@ -87,22 +87,21 @@
import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder;
import io.netty.handler.codec.http.multipart.InterfaceHttpData;
-public class UdfApiServlet extends BasicAuthServlet {
+public class UdfApiServlet extends AbstractServlet {
private static final Logger LOGGER = LogManager.getLogger();
- private final ICcApplicationContext appCtx;
+ protected final ICcApplicationContext appCtx;
private final ClusterControllerService ccs;
private final HttpScheme httpServerProtocol;
private final int httpServerPort;
- private final ILangCompilationProvider compilationProvider;
- private final IStatementExecutorFactory statementExecutorFactory;
- private final IStorageComponentProvider componentProvider;
- private final IReceptionist receptionist;
- private final Path workingDir;
- private Map<String, String> sysCredentials;
- private String sysAuthHeader;
+ protected final ILangCompilationProvider compilationProvider;
+ protected final IStatementExecutorFactory statementExecutorFactory;
+ protected final IStorageComponentProvider componentProvider;
+ protected final IReceptionist receptionist;
+ protected final Path workingDir;
+ protected String sysAuthHeader;
public UdfApiServlet(ConcurrentMap<String, Object> ctx, String[] paths, ICcApplicationContext appCtx,
ILangCompilationProvider compilationProvider, IStatementExecutorFactory statementExecutorFactory,
@@ -124,23 +123,15 @@
@Override
public void init() throws IOException {
- super.init();
initAuth();
initStorage();
}
- private void initAuth() {
- // generate internal user
- String sysUser;
- do {
- sysUser = generateRandomString(32);
- } while (storedCredentials.containsKey(sysUser));
- String sysPassword = generateRandomString(128);
- this.sysCredentials = Collections.singletonMap(sysUser, hashPassword(sysPassword));
- this.sysAuthHeader = createAuthHeader(sysUser, sysPassword);
+ protected void initAuth() {
+ sysAuthHeader = (String) ctx.get(SYS_AUTH_HEADER);
}
- private void initStorage() throws IOException {
+ protected void initStorage() throws IOException {
// prepare working directory
if (Files.isDirectory(workingDir)) {
try {
@@ -154,6 +145,10 @@
}
}
+ protected Map<String, String> additionalHttpHeadersFromRequest(IServletRequest request) {
+ return Collections.emptyMap();
+ }
+
@Override
protected void post(IServletRequest request, IServletResponse response) {
IClusterManagementWork.ClusterState clusterState = appCtx.getClusterStateManager().getState();
@@ -197,7 +192,7 @@
URI downloadURI = createDownloadURI(libraryTempFile);
CreateLibraryStatement stmt = new CreateLibraryStatement(libraryName.first, libraryName.second,
language, downloadURI, true, sysAuthHeader);
- executeStatement(stmt, requestReference);
+ executeStatement(stmt, requestReference, request);
response.setStatus(HttpResponseStatus.OK);
} catch (Exception e) {
response.setStatus(toHttpErrorStatus(e));
@@ -218,13 +213,12 @@
}
}
- private URI createDownloadURI(Path file) throws Exception {
+ protected URI createDownloadURI(Path file) throws Exception {
String path = paths[0].substring(0, trims[0]) + '/' + file.getFileName();
String host = getHyracksClientConnection().getHost();
return new URI(httpServerProtocol.toString(), null, host, httpServerPort, path, null, null);
}
- @Override
protected void delete(IServletRequest request, IServletResponse response) {
IClusterManagementWork.ClusterState clusterState = appCtx.getClusterStateManager().getState();
if (clusterState != IClusterManagementWork.ClusterState.ACTIVE) {
@@ -238,8 +232,8 @@
}
try {
IRequestReference requestReference = receptionist.welcome(request);
- LibraryDropStatement stmt = new LibraryDropStatement(libraryName.first, libraryName.second);
- executeStatement(stmt, requestReference);
+ LibraryDropStatement stmt = new LibraryDropStatement(libraryName.first, libraryName.second, false);
+ executeStatement(stmt, requestReference, request);
response.setStatus(HttpResponseStatus.OK);
} catch (Exception e) {
response.setStatus(toHttpErrorStatus(e));
@@ -250,21 +244,21 @@
}
}
- private void executeStatement(Statement statement, IRequestReference requestReference) throws Exception {
+ protected void executeStatement(Statement statement, IRequestReference requestReference, IServletRequest request)
+ throws Exception {
SessionOutput sessionOutput = new SessionOutput(new SessionConfig(SessionConfig.OutputFormat.ADM),
new PrintWriter(NullWriter.NULL_WRITER));
ResponsePrinter printer = new ResponsePrinter(sessionOutput);
ResultProperties resultProperties = new ResultProperties(IStatementExecutor.ResultDelivery.IMMEDIATE, 1);
IRequestParameters requestParams = new RequestParameters(requestReference, "", null, resultProperties,
new IStatementExecutor.Stats(), new IStatementExecutor.StatementProperties(), null, null,
- Collections.emptyMap(), Collections.emptyMap(), false);
+ additionalHttpHeadersFromRequest(request), Collections.emptyMap(), false);
MetadataManager.INSTANCE.init();
IStatementExecutor translator = statementExecutorFactory.create(appCtx, Collections.singletonList(statement),
sessionOutput, compilationProvider, componentProvider, printer);
translator.compileAndExecute(getHyracksClientConnection(), requestParams);
}
- @Override
protected void get(IServletRequest request, IServletResponse response) throws Exception {
IClusterManagementWork.ClusterState clusterState = appCtx.getClusterStateManager().getState();
if (clusterState != IClusterManagementWork.ClusterState.ACTIVE) {
@@ -287,7 +281,7 @@
readFromFile(filePath, response);
}
- private IHyracksClientConnection getHyracksClientConnection() throws Exception { // NOSONAR
+ protected IHyracksClientConnection getHyracksClientConnection() throws Exception { // NOSONAR
IHyracksClientConnection hcc = (IHyracksClientConnection) ctx.get(HYRACKS_CONNECTION_ATTR);
if (hcc == null) {
throw new RuntimeDataException(ErrorCode.PROPERTY_NOT_SET, HYRACKS_CONNECTION_ATTR);
@@ -295,13 +289,7 @@
return hcc;
}
- @Override
- protected Map<String, String> getStoredCredentials(IServletRequest request) {
- return request.getHttpRequest().method().equals(HttpMethod.GET) ? sysCredentials
- : super.getStoredCredentials(request);
- }
-
- private Pair<DataverseName, String> parseLibraryName(IServletRequest request) throws IllegalArgumentException {
+ protected Pair<DataverseName, String> parseLibraryName(IServletRequest request) throws IllegalArgumentException {
String[] path = StringUtils.split(localPath(request), '/');
int ln = path.length;
if (ln < 2) {
@@ -312,7 +300,7 @@
return new Pair<>(dataverseName, libraryName);
}
- private static ExternalFunctionLanguage getLanguageByFileExtension(String fileExtension) {
+ protected static ExternalFunctionLanguage getLanguageByFileExtension(String fileExtension) {
switch (fileExtension) {
case LibraryDescriptor.FILE_EXT_ZIP:
return JAVA;
@@ -323,7 +311,7 @@
}
}
- private HttpResponseStatus toHttpErrorStatus(Exception e) {
+ protected HttpResponseStatus toHttpErrorStatus(Exception e) {
if (e instanceof IFormattedException) {
IFormattedException fe = (IFormattedException) e;
if (ErrorCode.ASTERIX.equals(fe.getComponent())) {
@@ -337,10 +325,6 @@
return HttpResponseStatus.INTERNAL_SERVER_ERROR;
}
- private static String generateRandomString(int size) {
- return RandomStringUtils.randomAlphanumeric(size);
- }
-
protected void readFromFile(Path filePath, IServletResponse response) throws Exception {
class InputStreamGetter extends SynchronizableWork {
private InputStream is;
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/FeedEventsListener.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/FeedEventsListener.java
index d4a52fb..c4db4eb 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/FeedEventsListener.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/FeedEventsListener.java
@@ -26,6 +26,7 @@
import org.apache.asterix.active.EntityId;
import org.apache.asterix.active.IActiveEntityEventSubscriber;
import org.apache.asterix.active.IRetryPolicyFactory;
+import org.apache.asterix.algebra.base.ILangExtension;
import org.apache.asterix.common.dataflow.ICcApplicationContext;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.exceptions.RuntimeDataException;
@@ -50,14 +51,17 @@
private final Feed feed;
private final List<FeedConnection> feedConnections;
+ private final ILangExtension.Language translatorLang;
public FeedEventsListener(IStatementExecutor statementExecutor, ICcApplicationContext appCtx,
IHyracksClientConnection hcc, EntityId entityId, List<Dataset> datasets,
AlgebricksAbsolutePartitionConstraint locations, String runtimeName, IRetryPolicyFactory retryPolicyFactory,
- Feed feed, final List<FeedConnection> feedConnections) throws HyracksDataException {
+ Feed feed, final List<FeedConnection> feedConnections, ILangExtension.Language translatorLang)
+ throws HyracksDataException {
super(statementExecutor, appCtx, hcc, entityId, datasets, locations, runtimeName, retryPolicyFactory);
this.feed = feed;
this.feedConnections = feedConnections;
+ this.translatorLang = translatorLang;
}
@Override
@@ -94,8 +98,8 @@
@Override
protected JobId compileAndStartJob(MetadataProvider mdProvider) throws HyracksDataException {
try {
- Pair<JobSpecification, AlgebricksAbsolutePartitionConstraint> jobInfo =
- FeedOperations.buildStartFeedJob(mdProvider, feed, feedConnections, statementExecutor, hcc);
+ Pair<JobSpecification, AlgebricksAbsolutePartitionConstraint> jobInfo = FeedOperations
+ .buildStartFeedJob(mdProvider, feed, feedConnections, statementExecutor, hcc, translatorLang);
JobSpecification feedJob = jobInfo.getLeft();
feedJob.setProperty(ActiveNotificationHandler.ACTIVE_ENTITY_PROPERTY_NAME, entityId);
// TODO(Yingyi): currently we do not check IFrameWriter protocol violations for Feed jobs.
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/ActiveRequestsDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/ActiveRequestsDatasource.java
index 2afd11c..24a127a 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/ActiveRequestsDatasource.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/ActiveRequestsDatasource.java
@@ -33,7 +33,7 @@
createDataSourceId(ActiveRequestsRewriter.ACTIVE_REQUESTS);
public ActiveRequestsDatasource(INodeDomain domain) throws AlgebricksException {
- super(ACTIVE_REQUESTS_DATASOURCE_ID, domain);
+ super(ACTIVE_REQUESTS_DATASOURCE_ID, ActiveRequestsRewriter.ACTIVE_REQUESTS, domain);
}
@Override
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/CompletedRequestsDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/CompletedRequestsDatasource.java
index 1fe103e..0bfbff1 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/CompletedRequestsDatasource.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/CompletedRequestsDatasource.java
@@ -33,7 +33,7 @@
createDataSourceId(CompletedRequestsRewriter.COMPLETED_REQUESTS);
public CompletedRequestsDatasource(INodeDomain domain) throws AlgebricksException {
- super(COMPLETED_REQUESTS_DATASOURCE_ID, domain);
+ super(COMPLETED_REQUESTS_DATASOURCE_ID, CompletedRequestsRewriter.COMPLETED_REQUESTS, domain);
}
@Override
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetResourcesDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetResourcesDatasource.java
index ffd04ab..3e5033b 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetResourcesDatasource.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetResourcesDatasource.java
@@ -34,7 +34,7 @@
private final int datasetId;
public DatasetResourcesDatasource(INodeDomain domain, int datasetId) throws AlgebricksException {
- super(DATASET_RESOURCES_DATASOURCE_ID, domain);
+ super(DATASET_RESOURCES_DATASOURCE_ID, DatasetResourcesRewriter.DATASET_RESOURCES, domain);
this.datasetId = datasetId;
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DumpIndexDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DumpIndexDatasource.java
index 04e3eea..6318f8e 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DumpIndexDatasource.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DumpIndexDatasource.java
@@ -39,7 +39,7 @@
public DumpIndexDatasource(INodeDomain domain, IndexDataflowHelperFactory indexDataflowHelperFactory,
RecordDescriptor recDesc, IBinaryComparatorFactory[] comparatorFactories) throws AlgebricksException {
- super(DUMP_INDEX_DATASOURCE_ID, domain);
+ super(DUMP_INDEX_DATASOURCE_ID, DumpIndexRewriter.DUMP_INDEX, domain);
this.indexDataflowHelperFactory = indexDataflowHelperFactory;
this.recDesc = recDesc;
this.comparatorFactories = comparatorFactories;
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/JobSummariesDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/JobSummariesDatasource.java
index 835a97d..6bab0cd 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/JobSummariesDatasource.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/JobSummariesDatasource.java
@@ -32,7 +32,7 @@
createDataSourceId(JobSummariesRewriter.JOBSUMMARIES);
public JobSummariesDatasource(INodeDomain domain) throws AlgebricksException {
- super(JOB_SUMMARIES_DATASOURCE_ID, domain);
+ super(JOB_SUMMARIES_DATASOURCE_ID, JobSummariesRewriter.JOBSUMMARIES, domain);
}
@Override
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/PingDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/PingDatasource.java
index 67d5e53..1b6d807 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/PingDatasource.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/PingDatasource.java
@@ -31,7 +31,7 @@
private static final DataSourceId PING_DATASOURCE_ID = createDataSourceId(PingRewriter.PING);
public PingDatasource(INodeDomain domain) throws AlgebricksException {
- super(PING_DATASOURCE_ID, domain);
+ super(PING_DATASOURCE_ID, PingRewriter.PING, domain);
}
@Override
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/StorageComponentsDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/StorageComponentsDatasource.java
index b8a4167..6157412 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/StorageComponentsDatasource.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/StorageComponentsDatasource.java
@@ -34,7 +34,7 @@
private final int datasetId;
public StorageComponentsDatasource(INodeDomain domain, int datasetId) throws AlgebricksException {
- super(STORAGE_COMPONENTS_DATASOURCE_ID, domain);
+ super(STORAGE_COMPONENTS_DATASOURCE_ID, StorageComponentsRewriter.STORAGE_COMPONENTS, domain);
this.datasetId = datasetId;
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSAllTablesDataGeneratorDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSAllTablesDataGeneratorDatasource.java
index c382fb4..82303fc 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSAllTablesDataGeneratorDatasource.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSAllTablesDataGeneratorDatasource.java
@@ -35,13 +35,11 @@
public class TPCDSAllTablesDataGeneratorDatasource extends FunctionDataSource {
private final double scalingFactor;
- private final FunctionIdentifier functionIdentifier;
TPCDSAllTablesDataGeneratorDatasource(INodeDomain domain, double scalingFactor,
FunctionIdentifier functionIdentifier) throws AlgebricksException {
- super(createDataSourceId(scalingFactor), domain);
+ super(createDataSourceId(scalingFactor), functionIdentifier, domain);
this.scalingFactor = scalingFactor;
- this.functionIdentifier = functionIdentifier;
}
/**
@@ -61,7 +59,7 @@
@Override
protected IDatasourceFunction createFunction(MetadataProvider metadataProvider,
AlgebricksAbsolutePartitionConstraint locations) {
- return new TPCDSDataGeneratorFunction(locations, null, scalingFactor, functionIdentifier);
+ return new TPCDSDataGeneratorFunction(locations, null, scalingFactor, functionId);
}
@Override
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSSingleTableDataGeneratorDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSSingleTableDataGeneratorDatasource.java
index df3903f..458bff6 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSSingleTableDataGeneratorDatasource.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSSingleTableDataGeneratorDatasource.java
@@ -36,14 +36,12 @@
private final String tableName;
private final double scalingFactor;
- private final FunctionIdentifier functionIdentifier;
TPCDSSingleTableDataGeneratorDatasource(INodeDomain domain, String tableName, double scalingFactor,
FunctionIdentifier functionIdentifier) throws AlgebricksException {
- super(createDataSourceId(tableName, scalingFactor), domain);
+ super(createDataSourceId(tableName, scalingFactor), functionIdentifier, domain);
this.tableName = tableName;
this.scalingFactor = scalingFactor;
- this.functionIdentifier = functionIdentifier;
}
/**
@@ -65,7 +63,7 @@
@Override
protected IDatasourceFunction createFunction(MetadataProvider metadataProvider,
AlgebricksAbsolutePartitionConstraint locations) {
- return new TPCDSDataGeneratorFunction(locations, tableName, scalingFactor, functionIdentifier);
+ return new TPCDSDataGeneratorFunction(locations, tableName, scalingFactor, functionId);
}
@Override
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
index 149ed33..80200ca 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ExecuteStatementRequestMessage.java
@@ -163,7 +163,7 @@
responseMsg.setExecutionPlans(translator.getExecutionPlans());
responseMsg.setWarnings(warnings);
} catch (AlgebricksException | HyracksException | TokenMgrError
- | org.apache.asterix.aqlplus.parser.TokenMgrError pe) {
+ | org.apache.asterix.lang.sqlpp.parser.TokenMgrError pe) {
// we trust that "our" exceptions are serializable and have a comprehensible error message
GlobalConfig.ASTERIX_LOGGER.log(Level.WARN, pe.getMessage(), pe);
responseMsg.setError(pe);
@@ -204,6 +204,6 @@
@Override
public String toString() {
return String.format("%s(id=%s, from=%s): %s", getClass().getSimpleName(), requestMessageId, requestNodeId,
- LogRedactionUtil.userData(statementsText));
+ LogRedactionUtil.statement(statementsText));
}
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
index 5c15e68..e804d60 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
@@ -257,7 +257,7 @@
FileReference appDir =
ioManager.resolveAbsolutePath(getServiceContext().getServerCtx().getAppDir().getAbsolutePath());
libraryManager = new ExternalLibraryManager(ncs, persistedResourceRegistry, appDir);
- libraryManager.initStorage(resetStorageData);
+ libraryManager.initialize(resetStorageData);
/*
* The order of registration is important. The buffer cache must registered before recovery and transaction
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ExecutionError.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ExecutionError.java
index c57e61d..357c0a2 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ExecutionError.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ExecutionError.java
@@ -39,7 +39,7 @@
String msg = rootCause.getMessage();
if (!(rootCause instanceof AlgebricksException || rootCause instanceof HyracksException
|| rootCause instanceof TokenMgrError
- || rootCause instanceof org.apache.asterix.aqlplus.parser.TokenMgrError)) {
+ || rootCause instanceof org.apache.asterix.lang.sqlpp.parser.TokenMgrError)) {
msg = rootCause.getClass().getSimpleName() + (msg == null ? "" : ": " + msg);
}
return new ExecutionError(1, msg);
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index b3b55a8..f912c76 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -32,7 +32,6 @@
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Properties;
@@ -93,7 +92,6 @@
import org.apache.asterix.external.operators.FeedIntakeOperatorNodePushable;
import org.apache.asterix.external.util.ExternalDataConstants;
import org.apache.asterix.external.util.ExternalDataUtils;
-import org.apache.asterix.formats.nontagged.TypeTraitProvider;
import org.apache.asterix.lang.common.base.IReturningStatement;
import org.apache.asterix.lang.common.base.IRewriterFactory;
import org.apache.asterix.lang.common.base.IStatementRewriter;
@@ -101,6 +99,7 @@
import org.apache.asterix.lang.common.expression.IndexedTypeExpression;
import org.apache.asterix.lang.common.expression.TypeExpression;
import org.apache.asterix.lang.common.expression.TypeReferenceExpression;
+import org.apache.asterix.lang.common.statement.AdapterDropStatement;
import org.apache.asterix.lang.common.statement.CompactStatement;
import org.apache.asterix.lang.common.statement.ConnectFeedStatement;
import org.apache.asterix.lang.common.statement.CreateAdapterStatement;
@@ -214,7 +213,6 @@
import org.apache.hyracks.algebricks.runtime.writers.PrinterBasedWriterFactory;
import org.apache.hyracks.api.client.IClusterInfoCollector;
import org.apache.hyracks.api.client.IHyracksClientConnection;
-import org.apache.hyracks.api.dataflow.value.ITypeTraits;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.api.exceptions.SourceLocation;
import org.apache.hyracks.api.exceptions.Warning;
@@ -267,7 +265,7 @@
this.sessionOutput = output;
this.sessionConfig = output.config();
this.compilationProvider = compilationProvider;
- declaredFunctions = getDeclaredFunctions(statements);
+ declaredFunctions = new ArrayList<>();
apiFramework = new APIFramework(compilationProvider);
rewriterFactory = compilationProvider.getRewriterFactory();
activeDataverse = MetadataBuiltinEntities.DEFAULT_DATAVERSE;
@@ -283,16 +281,6 @@
return sessionOutput;
}
- protected List<FunctionDecl> getDeclaredFunctions(List<Statement> statements) {
- List<FunctionDecl> functionDecls = new ArrayList<>();
- for (Statement st : statements) {
- if (st.getKind() == Statement.Kind.FUNCTION_DECL) {
- functionDecls.add((FunctionDecl) st);
- }
- }
- return functionDecls;
- }
-
@Override
public void compileAndExecute(IHyracksClientConnection hcc, IRequestParameters requestParameters) throws Exception {
validateStatements(requestParameters);
@@ -365,12 +353,15 @@
case NODEGROUP_DROP:
handleNodegroupDropStatement(metadataProvider, stmt);
break;
- case CREATE_FUNCTION:
- handleCreateFunctionStatement(metadataProvider, stmt, stmtRewriter);
- break;
case CREATE_ADAPTER:
handleCreateAdapterStatement(metadataProvider, stmt);
break;
+ case ADAPTER_DROP:
+ handleAdapterDropStatement(metadataProvider, stmt);
+ break;
+ case CREATE_FUNCTION:
+ handleCreateFunctionStatement(metadataProvider, stmt, stmtRewriter);
+ break;
case FUNCTION_DROP:
handleFunctionDropStatement(metadataProvider, stmt);
break;
@@ -450,7 +441,7 @@
outputFile = result.second;
break;
case FUNCTION_DECL:
- // No op
+ handleDeclareFunctionStatement(stmt);
break;
case EXTENSION:
final ExtensionStatement extStmt = (ExtensionStatement) stmt;
@@ -522,7 +513,7 @@
DataverseName dvName = stmtCreateDataverse.getDataverseName();
lockUtil.createDataverseBegin(lockManager, metadataProvider.getLocks(), dvName);
try {
- doCreateDataverseStatement(metadataProvider, stmtCreateDataverse);
+ doCreateDataverseStatement(metadataProvider, stmtCreateDataverse, requestParameters);
} finally {
metadataProvider.getLocks().unlock();
}
@@ -530,7 +521,7 @@
@SuppressWarnings("squid:S00112")
protected boolean doCreateDataverseStatement(MetadataProvider metadataProvider,
- CreateDataverseStatement stmtCreateDataverse) throws Exception {
+ CreateDataverseStatement stmtCreateDataverse, IRequestParameters requestParameters) throws Exception {
MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
metadataProvider.setMetadataTxnContext(mdTxnCtx);
try {
@@ -646,8 +637,7 @@
metaItemTypeAnonymous = true; // doesn't matter
}
- Identifier ngNameId = dd.getNodegroupName();
- String nodegroupName = ngNameId == null ? null : ngNameId.getValue();
+ String nodegroupName = dd.getNodegroupName();
String compactionPolicy = dd.getCompactionPolicy();
boolean defaultCompactionPolicy = compactionPolicy == null;
@@ -672,7 +662,7 @@
MutableObject<ProgressState> progress = new MutableObject<>(ProgressState.NO_PROGRESS);
SourceLocation sourceLoc = dd.getSourceLocation();
DatasetType dsType = dd.getDatasetType();
- Identifier ngNameId = dd.getNodegroupName();
+ String ngNameId = dd.getNodegroupName();
String compactionPolicy = dd.getCompactionPolicy();
Map<String, String> compactionPolicyProperties = dd.getCompactionPolicyProperties();
String compressionScheme = metadataProvider.getCompressionManager()
@@ -681,6 +671,8 @@
boolean bActiveTxn = true;
metadataProvider.setMetadataTxnContext(mdTxnCtx);
Dataset dataset = null;
+ Datatype itemTypeEntity = null, metaItemTypeEntity = null;
+ boolean itemTypeAdded = false, metaItemTypeAdded = false;
try {
// Check if the dataverse exists
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, dataverseName);
@@ -698,8 +690,9 @@
throw new CompilationException(ErrorCode.DATASET_EXISTS, sourceLoc, datasetName, dataverseName);
}
}
- Datatype itemTypeEntity;
+
IAType itemType;
+ boolean itemTypeIsInline = false;
switch (itemTypeExpr.getTypeKind()) {
case TYPEREFERENCE:
itemTypeEntity = metadataProvider.findTypeEntity(itemTypeDataverseName, itemTypeName);
@@ -715,13 +708,13 @@
itemType = translateType(itemTypeDataverseName, itemTypeName, itemTypeExpr, mdTxnCtx);
validateDatasetItemType(dsType, itemType, false, sourceLoc);
itemTypeEntity = new Datatype(itemTypeDataverseName, itemTypeName, itemType, true);
- MetadataManager.INSTANCE.addDatatype(mdTxnCtx, itemTypeEntity);
+ itemTypeIsInline = true;
break;
default:
throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, sourceLoc,
String.valueOf(itemTypeExpr.getTypeKind()));
}
- String ngName = ngNameId != null ? ngNameId.getValue()
+ String ngName = ngNameId != null ? ngNameId
: configureNodegroupForDataset(appCtx, dd.getHints(), dataverseName, datasetName, metadataProvider,
sourceLoc);
@@ -731,13 +724,15 @@
} else {
validateCompactionPolicy(compactionPolicy, compactionPolicyProperties, mdTxnCtx, false, sourceLoc);
}
+
+ IAType metaItemType = null;
+ boolean metaItemTypeIsInline = false;
switch (dsType) {
case INTERNAL:
- IAType metaItemType = null;
if (metaItemTypeExpr != null) {
switch (metaItemTypeExpr.getTypeKind()) {
case TYPEREFERENCE:
- Datatype metaItemTypeEntity =
+ metaItemTypeEntity =
metadataProvider.findTypeEntity(metaItemTypeDataverseName, metaItemTypeName);
if (metaItemTypeEntity == null || metaItemTypeEntity.getIsAnonymous()) {
// anonymous types cannot be referred from CREATE DATASET
@@ -751,8 +746,9 @@
metaItemType = translateType(metaItemTypeDataverseName, metaItemTypeName,
metaItemTypeExpr, mdTxnCtx);
validateDatasetItemType(dsType, metaItemType, true, sourceLoc);
- MetadataManager.INSTANCE.addDatatype(mdTxnCtx,
- new Datatype(metaItemTypeDataverseName, metaItemTypeName, metaItemType, true));
+ metaItemTypeEntity =
+ new Datatype(metaItemTypeDataverseName, metaItemTypeName, metaItemType, true);
+ metaItemTypeIsInline = true;
break;
default:
throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, sourceLoc,
@@ -771,8 +767,12 @@
metaRecType, partitioningExprs, keySourceIndicators, autogenerated, sourceLoc);
List<String> filterField = ((InternalDetailsDecl) dd.getDatasetDetailsDecl()).getFilterField();
+ Integer filterSourceIndicator =
+ ((InternalDetailsDecl) dd.getDatasetDetailsDecl()).getFilterSourceIndicator();
+
if (filterField != null) {
- ValidateUtil.validateFilterField(aRecordType, filterField, sourceLoc);
+ ValidateUtil.validateFilterField(aRecordType, metaRecType, filterSourceIndicator, filterField,
+ sourceLoc);
}
if (compactionPolicy == null && filterField != null) {
// If the dataset has a filter and the user didn't specify a merge
@@ -783,7 +783,7 @@
}
datasetDetails = new InternalDatasetDetails(InternalDatasetDetails.FileStructure.BTREE,
InternalDatasetDetails.PartitioningStrategy.HASH, partitioningExprs, partitioningExprs,
- keySourceIndicators, partitioningTypes, autogenerated, filterField);
+ keySourceIndicators, partitioningTypes, autogenerated, filterSourceIndicator, filterField);
break;
case EXTERNAL:
ExternalDetailsDecl externalDetails = (ExternalDetailsDecl) dd.getDatasetDetailsDecl();
@@ -811,6 +811,16 @@
datasetDetails, dd.getHints(), dsType, DatasetIdFactory.generateDatasetId(),
MetadataUtil.PENDING_ADD_OP, compressionScheme);
MetadataManager.INSTANCE.addDataset(metadataProvider.getMetadataTxnContext(), dataset);
+
+ if (itemTypeIsInline) {
+ MetadataManager.INSTANCE.addDatatype(mdTxnCtx, itemTypeEntity);
+ itemTypeAdded = true;
+ }
+ if (metaItemTypeIsInline) {
+ MetadataManager.INSTANCE.addDatatype(mdTxnCtx, metaItemTypeEntity);
+ metaItemTypeAdded = true;
+ }
+
if (dsType == DatasetType.INTERNAL) {
JobSpecification jobSpec = DatasetUtil.createDatasetJobSpec(dataset, metadataProvider);
@@ -866,8 +876,15 @@
mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
metadataProvider.setMetadataTxnContext(mdTxnCtx);
try {
- MetadataManager.INSTANCE.dropDataset(metadataProvider.getMetadataTxnContext(), dataverseName,
- datasetName);
+ MetadataManager.INSTANCE.dropDataset(mdTxnCtx, dataverseName, datasetName);
+ if (itemTypeAdded) {
+ MetadataManager.INSTANCE.dropDatatype(mdTxnCtx, itemTypeEntity.getDataverseName(),
+ itemTypeEntity.getDatatypeName());
+ }
+ if (metaItemTypeAdded) {
+ MetadataManager.INSTANCE.dropDatatype(mdTxnCtx, metaItemTypeEntity.getDataverseName(),
+ metaItemTypeEntity.getDatatypeName());
+ }
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
} catch (Exception e2) {
e.addSuppressed(e2);
@@ -939,35 +956,43 @@
public void handleCreateIndexStatement(MetadataProvider metadataProvider, Statement stmt,
IHyracksClientConnection hcc, IRequestParameters requestParameters) throws Exception {
CreateIndexStatement stmtCreateIndex = (CreateIndexStatement) stmt;
- SourceLocation sourceLoc = stmtCreateIndex.getSourceLocation();
DataverseName dataverseName = getActiveDataverseName(stmtCreateIndex.getDataverseName());
String datasetName = stmtCreateIndex.getDatasetName().getValue();
- String indexName = stmtCreateIndex.getIndexName().getValue();
- IndexType indexType = stmtCreateIndex.getIndexType();
- List<Integer> keySourceIndicators = stmtCreateIndex.getFieldSourceIndicators();
- MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
- metadataProvider.setMetadataTxnContext(mdTxnCtx);
- boolean isSecondaryPrimary = stmtCreateIndex.getFieldExprs().isEmpty();
- Dataset ds;
- Index index;
lockUtil.createIndexBegin(lockManager, metadataProvider.getLocks(), dataverseName, datasetName);
try {
+ doCreateIndex(metadataProvider, stmtCreateIndex, dataverseName, datasetName, hcc, requestParameters);
+ } finally {
+ metadataProvider.getLocks().unlock();
+ }
+ }
+
+ protected void doCreateIndex(MetadataProvider metadataProvider, CreateIndexStatement stmtCreateIndex,
+ DataverseName dataverseName, String datasetName, IHyracksClientConnection hcc,
+ IRequestParameters requestParameters) throws Exception {
+ SourceLocation sourceLoc = stmtCreateIndex.getSourceLocation();
+ MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
+ boolean bActiveTxn = true;
+ metadataProvider.setMetadataTxnContext(mdTxnCtx);
+ try {
// Check if the dataverse exists
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, dataverseName);
if (dv == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
}
- ds = metadataProvider.findDataset(dataverseName, datasetName);
+ Dataset ds = metadataProvider.findDataset(dataverseName, datasetName);
if (ds == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
dataverseName);
}
DatasetType datasetType = ds.getDatasetType();
+ IndexType indexType = stmtCreateIndex.getIndexType();
+ boolean isSecondaryPrimary = stmtCreateIndex.getFieldExprs().isEmpty();
validateIndexType(datasetType, indexType, isSecondaryPrimary, sourceLoc);
- index = MetadataManager.INSTANCE.getIndex(metadataProvider.getMetadataTxnContext(), dataverseName,
+ String indexName = stmtCreateIndex.getIndexName().getValue();
+ Index index = MetadataManager.INSTANCE.getIndex(metadataProvider.getMetadataTxnContext(), dataverseName,
datasetName, indexName);
if (index != null) {
if (stmtCreateIndex.getIfNotExists()) {
@@ -978,9 +1003,12 @@
}
}
- // find keySourceIndicators for secondary primary index since the parser isn't aware of them
+ List<Integer> keySourceIndicators;
if (isSecondaryPrimary && datasetType == DatasetType.INTERNAL) {
+ // find keySourceIndicators for secondary primary index since the parser isn't aware of them
keySourceIndicators = ((InternalDatasetDetails) ds.getDatasetDetails()).getKeySourceIndicator();
+ } else {
+ keySourceIndicators = stmtCreateIndex.getFieldSourceIndicators();
}
// disable creating an index on meta fields (fields with source indicator == 1 are meta fields)
if (keySourceIndicators.stream().anyMatch(fieldSource -> fieldSource == 1) && !isSecondaryPrimary) {
@@ -1075,42 +1103,23 @@
validateIndexKeyFields(stmtCreateIndex, keySourceIndicators, aRecordType, metaRecordType, indexFields,
indexFieldTypes);
- // Checks whether a user is trying to create an inverted secondary index on a
- // dataset
- // with a variable-length primary key.
- // Currently, we do not support this. Therefore, as a temporary solution, we
- // print an
- // error message and stop.
- if (indexType == IndexType.SINGLE_PARTITION_WORD_INVIX
- || indexType == IndexType.SINGLE_PARTITION_NGRAM_INVIX
- || indexType == IndexType.LENGTH_PARTITIONED_WORD_INVIX
- || indexType == IndexType.LENGTH_PARTITIONED_NGRAM_INVIX) {
- List<List<String>> partitioningKeys = ds.getPrimaryKeys();
- for (List<String> partitioningKey : partitioningKeys) {
- IAType keyType = aRecordType.getSubFieldType(partitioningKey);
- ITypeTraits typeTrait = TypeTraitProvider.INSTANCE.getTypeTrait(keyType);
-
- // If it is not a fixed length
- if (typeTrait.getFixedLength() < 0) {
- throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
- "The keyword or ngram index -" + indexName + " cannot be created on the dataset -"
- + datasetName + " due to its variable-length primary key field - "
- + partitioningKey);
- }
-
- }
- }
Index newIndex = new Index(dataverseName, datasetName, indexName, indexType, indexFields,
keySourceIndicators, indexFieldTypes, stmtCreateIndex.getGramLength(), overridesFieldTypes,
stmtCreateIndex.isEnforced(), false, MetadataUtil.PENDING_ADD_OP);
- doCreateIndex(hcc, metadataProvider, ds, newIndex, jobFlags, sourceLoc);
- } finally {
- metadataProvider.getLocks().unlock();
+
+ bActiveTxn = false; // doCreateIndexImpl() takes over the current transaction
+ doCreateIndexImpl(hcc, metadataProvider, ds, newIndex, jobFlags, sourceLoc);
+
+ } catch (Exception e) {
+ if (bActiveTxn) {
+ abort(e, e, mdTxnCtx);
+ }
+ throw e;
}
}
- protected void doCreateIndex(IHyracksClientConnection hcc, MetadataProvider metadataProvider, Dataset ds,
+ private void doCreateIndexImpl(IHyracksClientConnection hcc, MetadataProvider metadataProvider, Dataset ds,
Index index, EnumSet<JobFlag> jobFlags, SourceLocation sourceLoc) throws Exception {
ProgressState progress = ProgressState.NO_PROGRESS;
boolean bActiveTxn = true;
@@ -1457,6 +1466,13 @@
}
}
+ if (stmtDropDataverse.getIfEmpty() && isDataverseNotEmpty(dataverseName, mdTxnCtx)) {
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return false;
+ }
+
+ validateDataverseStateBeforeDrop(metadataProvider, dv, sourceLoc);
+
// #. prepare jobs which will drop corresponding feed storage
ActiveNotificationHandler activeEventHandler =
(ActiveNotificationHandler) appCtx.getActiveNotificationHandler();
@@ -1590,6 +1606,16 @@
}
}
+ protected boolean isDataverseNotEmpty(DataverseName dataverseName, MetadataTransactionContext mdTxnCtx)
+ throws AlgebricksException {
+ return MetadataManager.INSTANCE.isDataverseNotEmpty(mdTxnCtx, dataverseName);
+ }
+
+ protected void validateDataverseStateBeforeDrop(MetadataProvider metadataProvider, Dataverse dataverse,
+ SourceLocation sourceLoc) throws AlgebricksException {
+ // may be overriden by product extensions for additional checks before dropping the dataverse
+ }
+
public void handleDatasetDropStatement(MetadataProvider metadataProvider, Statement stmt,
IHyracksClientConnection hcc, IRequestParameters requestParameters) throws Exception {
DropDatasetStatement stmtDelete = (DropDatasetStatement) stmt;
@@ -1606,7 +1632,7 @@
}
}
- public void doDropDataset(DataverseName dataverseName, String datasetName, MetadataProvider metadataProvider,
+ protected boolean doDropDataset(DataverseName dataverseName, String datasetName, MetadataProvider metadataProvider,
boolean ifExists, IHyracksClientConnection hcc, IRequestParameters requestParameters,
boolean dropCorrespondingNodeGroup, SourceLocation sourceLoc) throws Exception {
MutableObject<ProgressState> progress = new MutableObject<>(ProgressState.NO_PROGRESS);
@@ -1619,13 +1645,18 @@
// Check if the dataverse exists
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx.getValue(), dataverseName);
if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ if (ifExists) {
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx.getValue());
+ return false;
+ } else {
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ }
}
Dataset ds = metadataProvider.findDataset(dataverseName, datasetName);
if (ds == null) {
if (ifExists) {
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx.getValue());
- return;
+ return false;
} else {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
dataverseName);
@@ -1633,39 +1664,11 @@
}
validateDatasetState(metadataProvider, ds, sourceLoc);
- // prepare to drop item and meta types if they were created as inline types
- DataverseName itemTypeDataverseName = ds.getItemTypeDataverseName();
- String itemTypeName = ds.getItemTypeName();
- boolean isInlineItemType = TypeUtil.isDatasetInlineTypeName(ds, itemTypeDataverseName, itemTypeName);
- if (isInlineItemType) {
- lockUtil.dropTypeBegin(lockManager, metadataProvider.getLocks(), itemTypeDataverseName, itemTypeName);
- }
- DataverseName metaTypeDataverseName = ds.getMetaItemTypeDataverseName();
- String metaTypeName = ds.getMetaItemTypeName();
- boolean isInlineMetaType =
- metaTypeName != null && TypeUtil.isDatasetInlineTypeName(ds, metaTypeDataverseName, metaTypeName);
- if (isInlineMetaType) {
- lockUtil.dropTypeBegin(lockManager, metadataProvider.getLocks(), metaTypeDataverseName, metaTypeName);
- }
- Datatype inlineItemType = isInlineItemType
- ? MetadataManager.INSTANCE.getDatatype(mdTxnCtx.getValue(), itemTypeDataverseName, itemTypeName)
- : null;
- Datatype inlineMetaType = isInlineMetaType
- ? MetadataManager.INSTANCE.getDatatype(mdTxnCtx.getValue(), metaTypeDataverseName, metaTypeName)
- : null;
-
ds.drop(metadataProvider, mdTxnCtx, jobsToExecute, bActiveTxn, progress, hcc, dropCorrespondingNodeGroup,
sourceLoc);
- // drop inline item and meta types
- if (isInlineItemType && inlineItemType.getIsAnonymous()) {
- MetadataManager.INSTANCE.dropDatatype(mdTxnCtx.getValue(), itemTypeDataverseName, itemTypeName);
- }
- if (isInlineMetaType && inlineMetaType.getIsAnonymous()) {
- MetadataManager.INSTANCE.dropDatatype(mdTxnCtx.getValue(), metaTypeDataverseName, metaTypeName);
- }
-
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx.getValue());
+ return true;
} catch (Exception e) {
if (bActiveTxn.booleanValue()) {
abort(e, e, mdTxnCtx.getValue());
@@ -1703,20 +1706,31 @@
protected void handleIndexDropStatement(MetadataProvider metadataProvider, Statement stmt,
IHyracksClientConnection hcc, IRequestParameters requestParameters) throws Exception {
-
IndexDropStatement stmtIndexDrop = (IndexDropStatement) stmt;
- SourceLocation sourceLoc = stmtIndexDrop.getSourceLocation();
- String datasetName = stmtIndexDrop.getDatasetName().getValue();
DataverseName dataverseName = getActiveDataverseName(stmtIndexDrop.getDataverseName());
+ String datasetName = stmtIndexDrop.getDatasetName().getValue();
+ lockUtil.dropIndexBegin(lockManager, metadataProvider.getLocks(), dataverseName, datasetName);
+ try {
+ doDropIndex(metadataProvider, stmtIndexDrop, dataverseName, datasetName, hcc, requestParameters);
+ } finally {
+ metadataProvider.getLocks().unlock();
+ ExternalDatasetsRegistry.INSTANCE.releaseAcquiredLocks(metadataProvider);
+ }
+ }
+
+ protected boolean doDropIndex(MetadataProvider metadataProvider, IndexDropStatement stmtIndexDrop,
+ DataverseName dataverseName, String datasetName, IHyracksClientConnection hcc,
+ IRequestParameters requestParameters) throws Exception {
+ SourceLocation sourceLoc = stmtIndexDrop.getSourceLocation();
String indexName = stmtIndexDrop.getIndexName().getValue();
ProgressState progress = ProgressState.NO_PROGRESS;
+ List<JobSpecification> jobsToExecute = new ArrayList<>();
+ // For external index
+ boolean dropFilesIndex = false;
+
MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
boolean bActiveTxn = true;
metadataProvider.setMetadataTxnContext(mdTxnCtx);
- List<JobSpecification> jobsToExecute = new ArrayList<>();
- lockUtil.dropIndexBegin(lockManager, metadataProvider.getLocks(), dataverseName, datasetName);
- // For external index
- boolean dropFilesIndex = false;
try {
Dataset ds = metadataProvider.findDataset(dataverseName, datasetName);
if (ds == null) {
@@ -1728,7 +1742,7 @@
if (index == null) {
if (stmtIndexDrop.getIfExists()) {
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
- return;
+ return false;
} else {
throw new CompilationException(ErrorCode.UNKNOWN_INDEX, sourceLoc, indexName);
}
@@ -1769,7 +1783,7 @@
if (index == null) {
if (stmtIndexDrop.getIfExists()) {
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
- return;
+ return false;
} else {
throw new CompilationException(ErrorCode.UNKNOWN_INDEX, sourceLoc, indexName);
}
@@ -1835,7 +1849,7 @@
}
}
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
-
+ return true;
} catch (Exception e) {
if (bActiveTxn) {
abort(e, e, mdTxnCtx);
@@ -1873,10 +1887,6 @@
}
throw e;
-
- } finally {
- metadataProvider.getLocks().unlock();
- ExternalDatasetsRegistry.INSTANCE.releaseAcquiredLocks(metadataProvider);
}
}
@@ -1939,15 +1949,30 @@
}
}
- protected void handleCreateFunctionStatement(MetadataProvider metadataProvider, Statement stmt,
+ protected void handleDeclareFunctionStatement(Statement stmt) {
+ FunctionDecl fds = (FunctionDecl) stmt;
+ FunctionSignature signature = fds.getSignature();
+ signature.setDataverseName(getActiveDataverseName(signature.getDataverseName()));
+ declaredFunctions.add(fds);
+ }
+
+ public void handleCreateFunctionStatement(MetadataProvider metadataProvider, Statement stmt,
IStatementRewriter stmtRewriter) throws Exception {
CreateFunctionStatement cfs = (CreateFunctionStatement) stmt;
FunctionSignature signature = cfs.getFunctionSignature();
- signature.setDataverseName(getActiveDataverseName(signature.getDataverseName()));
- String libraryName = cfs.getLibName();
+ DataverseName dataverseName = getActiveDataverseName(signature.getDataverseName());
+ signature.setDataverseName(dataverseName);
+ DataverseName libraryDataverseName = null;
+ String libraryName = cfs.getLibraryName();
+ if (libraryName != null) {
+ libraryDataverseName = cfs.getLibraryDataverseName();
+ if (libraryDataverseName == null) {
+ libraryDataverseName = dataverseName;
+ }
+ }
- lockUtil.createFunctionBegin(lockManager, metadataProvider.getLocks(), signature.getDataverseName(),
- signature.getName(), libraryName);
+ lockUtil.createFunctionBegin(lockManager, metadataProvider.getLocks(), dataverseName, signature.getName(),
+ libraryDataverseName, libraryName);
try {
doCreateFunction(metadataProvider, cfs, signature, stmtRewriter);
} finally {
@@ -1957,9 +1982,8 @@
}
protected void doCreateFunction(MetadataProvider metadataProvider, CreateFunctionStatement cfs,
- FunctionSignature signature, IStatementRewriter stmtRewriter) throws Exception {
- DataverseName dataverseName = signature.getDataverseName();
- String libraryName = cfs.getLibName();
+ FunctionSignature functionSignature, IStatementRewriter stmtRewriter) throws Exception {
+ DataverseName dataverseName = functionSignature.getDataverseName();
SourceLocation sourceLoc = cfs.getSourceLocation();
MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
metadataProvider.setMetadataTxnContext(mdTxnCtx);
@@ -1968,66 +1992,122 @@
if (dv == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
}
- boolean isExternal = cfs.isExternal();
-
- List<Pair<VarIdentifier, TypeExpression>> paramList = cfs.getParameters();
- int paramCount = paramList.size();
- List<VarIdentifier> paramVars = new ArrayList<>(paramCount);
- List<String> paramNames = new ArrayList<>(paramCount);
- List<TypeSignature> paramTypes = new ArrayList<>(paramCount);
- LinkedHashSet<TypeSignature> dependentTypes = new LinkedHashSet<>();
-
- for (int i = 0; i < paramCount; i++) {
- Pair<VarIdentifier, TypeExpression> paramPair = paramList.get(i);
- VarIdentifier paramName = paramPair.getFirst();
- TypeExpression paramTypeExpr = paramPair.getSecond();
- Pair<TypeSignature, TypeSignature> paramType = translateFunctionParameterType(signature, i,
- paramTypeExpr, isExternal, sourceLoc, metadataProvider, mdTxnCtx);
- paramVars.add(paramName);
- paramNames.add(stmtRewriter.toFunctionParameterName(paramName));
- paramTypes.add(paramType.first);
- if (paramType.second != null) {
- dependentTypes.add(paramType.second);
+ List<TypeSignature> existingInlineTypes;
+ Function existingFunction = MetadataManager.INSTANCE.getFunction(mdTxnCtx, functionSignature);
+ if (existingFunction != null) {
+ if (cfs.getReplaceIfExists()) {
+ if (cfs.getIfNotExists()) {
+ throw new CompilationException(ErrorCode.PARSE_ERROR, cfs.getSourceLocation(), "IF NOT EXISTS");
+ }
+ } else if (cfs.getIfNotExists()) {
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return;
+ } else {
+ throw new CompilationException(ErrorCode.FUNCTION_EXISTS, cfs.getSourceLocation(),
+ functionSignature.toString(false));
}
+ existingInlineTypes = TypeUtil.getFunctionInlineTypes(existingFunction);
+ } else {
+ existingInlineTypes = Collections.emptyList();
}
- TypeExpression returnTypeExpr = cfs.getReturnType();
- Pair<TypeSignature, TypeSignature> returnType = translateFunctionParameterType(signature, -1,
- returnTypeExpr, isExternal, sourceLoc, metadataProvider, mdTxnCtx);
- if (returnType.second != null) {
- dependentTypes.add(returnType.second);
- }
+ Map<TypeSignature, Datatype> newInlineTypes;
+ Function function;
+ if (cfs.isExternal()) {
+ List<Pair<VarIdentifier, TypeExpression>> paramList = cfs.getParameters();
+ int paramCount = paramList.size();
+ List<String> paramNames = new ArrayList<>(paramCount);
+ List<TypeSignature> paramTypes = new ArrayList<>(paramCount);
+ LinkedHashSet<TypeSignature> depTypes = new LinkedHashSet<>();
+ newInlineTypes = new HashMap<>();
- if (isExternal) {
- String lang = cfs.getLang();
- if (lang == null) {
- throw new CompilationException(ErrorCode.COMPILATION_INCOMPATIBLE_FUNCTION_LANGUAGE, sourceLoc, "");
+ for (int i = 0; i < paramCount; i++) {
+ Pair<VarIdentifier, TypeExpression> paramPair = paramList.get(i);
+ TypeSignature paramTypeSignature;
+ TypeSignature paramDepTypeSignature;
+ Datatype paramInlineTypeEntity;
+ TypeExpression paramTypeExpr = paramPair.getSecond();
+ if (paramTypeExpr != null) {
+ Triple<TypeSignature, TypeSignature, Datatype> paramTypeInfo = translateFunctionParameterType(
+ functionSignature, i, paramTypeExpr, sourceLoc, metadataProvider, mdTxnCtx);
+ paramTypeSignature = paramTypeInfo.first;
+ paramDepTypeSignature = paramTypeInfo.second;
+ paramInlineTypeEntity = paramTypeInfo.third;
+ } else {
+ paramTypeSignature = null; // == any
+ paramDepTypeSignature = null;
+ paramInlineTypeEntity = null;
+ }
+ paramTypes.add(paramTypeSignature); // null == any
+ if (paramDepTypeSignature != null) {
+ depTypes.add(paramDepTypeSignature);
+ }
+ if (paramInlineTypeEntity != null) {
+ newInlineTypes.put(paramTypeSignature, paramInlineTypeEntity);
+ }
+ VarIdentifier paramName = paramPair.getFirst();
+ paramNames.add(stmtRewriter.toFunctionParameterName(paramName));
}
- ExternalFunctionLanguage functionLang;
- try {
- functionLang = ExternalFunctionLanguage.valueOf(lang.toUpperCase(Locale.ROOT));
- } catch (IllegalArgumentException e) {
- throw new CompilationException(ErrorCode.COMPILATION_INCOMPATIBLE_FUNCTION_LANGUAGE, sourceLoc,
- lang);
+
+ TypeSignature returnTypeSignature;
+ TypeSignature returnDepTypeSignature;
+ Datatype returnInlineTypeEntity;
+ TypeExpression returnTypeExpr = cfs.getReturnType();
+ if (returnTypeExpr != null) {
+ Triple<TypeSignature, TypeSignature, Datatype> returnTypeInfo = translateFunctionParameterType(
+ functionSignature, -1, returnTypeExpr, sourceLoc, metadataProvider, mdTxnCtx);
+ returnTypeSignature = returnTypeInfo.first;
+ returnDepTypeSignature = returnTypeInfo.second;
+ returnInlineTypeEntity = returnTypeInfo.third;
+ } else {
+ returnTypeSignature = null; // == any
+ returnDepTypeSignature = null;
+ returnInlineTypeEntity = null;
}
- Library libraryInMetadata = MetadataManager.INSTANCE.getLibrary(mdTxnCtx, dataverseName, libraryName);
- if (libraryInMetadata == null) {
+ if (returnDepTypeSignature != null) {
+ depTypes.add(returnDepTypeSignature);
+ }
+ if (returnInlineTypeEntity != null) {
+ newInlineTypes.put(returnTypeSignature, returnInlineTypeEntity);
+ }
+
+ DataverseName libraryDataverseName = cfs.getLibraryDataverseName();
+ if (libraryDataverseName == null) {
+ libraryDataverseName = dataverseName;
+ }
+ String libraryName = cfs.getLibraryName();
+ Library library = MetadataManager.INSTANCE.getLibrary(mdTxnCtx, libraryDataverseName, libraryName);
+ if (library == null) {
throw new CompilationException(ErrorCode.UNKNOWN_LIBRARY, sourceLoc, libraryName);
}
- // Add functions
- String body = ExternalFunctionCompilerUtil.encodeExternalIdentifier(signature, functionLang,
- cfs.getExternalIdentifier());
+
+ ExternalFunctionLanguage language =
+ ExternalFunctionCompilerUtil.getExternalFunctionLanguage(library.getLanguage());
+ List<String> externalIdentifier = cfs.getExternalIdentifier();
+ ExternalFunctionCompilerUtil.validateExternalIdentifier(externalIdentifier, language,
+ cfs.getSourceLocation());
List<List<Triple<DataverseName, String, String>>> dependencies =
- FunctionUtil.getExternalFunctionDependencies(dependentTypes);
- Function f = new Function(signature, paramNames, paramTypes, returnType.first, body,
- FunctionKind.SCALAR.toString(), functionLang.name(), libraryName, cfs.getNullCall(),
- cfs.getDeterministic(), cfs.getResources(), dependencies);
- MetadataManager.INSTANCE.addFunction(mdTxnCtx, f);
- if (LOGGER.isInfoEnabled()) {
- LOGGER.info("Installed function: " + signature);
- }
- MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ FunctionUtil.getExternalFunctionDependencies(depTypes);
+
+ function = new Function(functionSignature, paramNames, paramTypes, returnTypeSignature, null,
+ FunctionKind.SCALAR.toString(), library.getLanguage(), libraryDataverseName, libraryName,
+ externalIdentifier, cfs.getNullCall(), cfs.getDeterministic(), cfs.getResources(),
+ dependencies);
} else {
+ List<Pair<VarIdentifier, TypeExpression>> paramList = cfs.getParameters();
+ int paramCount = paramList.size();
+ List<VarIdentifier> paramVars = new ArrayList<>(paramCount);
+ List<String> paramNames = new ArrayList<>(paramCount);
+ for (Pair<VarIdentifier, TypeExpression> paramPair : paramList) {
+ VarIdentifier paramName = paramPair.getFirst();
+ paramVars.add(paramName);
+ paramNames.add(stmtRewriter.toFunctionParameterName(paramName));
+ if (paramPair.getSecond() != null) {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, sourceLoc,
+ paramName.toString());
+ }
+ }
+
//Check whether the function is use-able
metadataProvider.setDefaultDataverse(dv);
Query wrappedQuery = new Query(false);
@@ -2036,38 +2116,53 @@
wrappedQuery.setTopLevel(false);
apiFramework.reWriteQuery(declaredFunctions, metadataProvider, wrappedQuery, sessionOutput, false,
paramVars, warningCollector);
- List<List<Triple<DataverseName, String, String>>> dependencies =
- FunctionUtil.getFunctionDependencies(rewriterFactory.createQueryRewriter(),
- cfs.getFunctionBodyExpression(), metadataProvider, dependentTypes);
- Function function = new Function(signature, paramNames, paramTypes, returnType.first,
- cfs.getFunctionBody(), FunctionKind.SCALAR.toString(),
- compilationProvider.getParserFactory().getLanguage(), null, null, null, null, dependencies);
- MetadataManager.INSTANCE.addFunction(mdTxnCtx, function);
- if (LOGGER.isInfoEnabled()) {
- LOGGER.info("Installed function: " + signature);
- }
- MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ List<List<Triple<DataverseName, String, String>>> dependencies = FunctionUtil.getFunctionDependencies(
+ rewriterFactory.createQueryRewriter(), cfs.getFunctionBodyExpression(), metadataProvider);
+
+ newInlineTypes = Collections.emptyMap();
+ function = new Function(functionSignature, paramNames, null, null, cfs.getFunctionBody(),
+ FunctionKind.SCALAR.toString(), compilationProvider.getParserFactory().getLanguage(), null,
+ null, null, null, null, null, dependencies);
}
+
+ if (existingFunction == null) {
+ // add new function and its inline types
+ for (Datatype newInlineType : newInlineTypes.values()) {
+ MetadataManager.INSTANCE.addDatatype(mdTxnCtx, newInlineType);
+ }
+ MetadataManager.INSTANCE.addFunction(mdTxnCtx, function);
+ } else {
+ // replace existing function and its inline types
+ for (TypeSignature existingInlineType : existingInlineTypes) {
+ Datatype newInlineType =
+ newInlineTypes.isEmpty() ? null : newInlineTypes.remove(existingInlineType);
+ if (newInlineType == null) {
+ MetadataManager.INSTANCE.dropDatatype(mdTxnCtx, existingInlineType.getDataverseName(),
+ existingInlineType.getName());
+ } else {
+ MetadataManager.INSTANCE.updateDatatype(mdTxnCtx, newInlineType);
+ }
+ }
+ for (Datatype inlineType : newInlineTypes.values()) {
+ MetadataManager.INSTANCE.addDatatype(mdTxnCtx, inlineType);
+ }
+ MetadataManager.INSTANCE.updateFunction(mdTxnCtx, function);
+ }
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Installed function: " + functionSignature);
+ }
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
} catch (Exception e) {
abort(e, e, mdTxnCtx);
throw e;
}
}
- private Pair<TypeSignature, TypeSignature> translateFunctionParameterType(FunctionSignature functionSignature,
- int paramIdx, TypeExpression paramTypeExpr, boolean isExternalFunction, SourceLocation sourceLoc,
+ private Triple<TypeSignature, TypeSignature, Datatype> translateFunctionParameterType(
+ FunctionSignature functionSignature, int paramIdx, TypeExpression paramTypeExpr, SourceLocation sourceLoc,
MetadataProvider metadataProvider, MetadataTransactionContext mdTxnCtx) throws AlgebricksException {
- if (paramTypeExpr == null) {
- return new Pair<>(TypeUtil.ANY_TYPE_SIGNATURE, null);
- }
-
- if (!isExternalFunction) {
- // grammar doesn't allow parameter types for inline functions
- throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, sourceLoc);
- }
-
- TypeSignature resultType, dependentType;
-
+ TypeSignature paramTypeSignature, depTypeSignature;
+ Datatype paramInlineTypeEntity = null;
switch (paramTypeExpr.getTypeKind()) {
case TYPEREFERENCE:
TypeReferenceExpression paramTypeRefExpr = (TypeReferenceExpression) paramTypeExpr;
@@ -2075,19 +2170,19 @@
BuiltinType builtinType = BuiltinTypeMap.getBuiltinType(paramTypeName);
if (builtinType != null) {
// built-in type
- resultType = new TypeSignature(builtinType);
- dependentType = null;
+ paramTypeSignature = new TypeSignature(builtinType);
+ depTypeSignature = null;
} else {
// user-defined type
DataverseName paramTypeDataverseName = paramTypeRefExpr.getIdent().first;
if (paramTypeDataverseName == null) {
paramTypeDataverseName = functionSignature.getDataverseName();
}
- IAType paramType = metadataProvider.findType(paramTypeDataverseName, paramTypeName);
- if (paramType == null) {
+ Datatype paramTypeEntity = metadataProvider.findTypeEntity(paramTypeDataverseName, paramTypeName);
+ if (paramTypeEntity == null || paramTypeEntity.getIsAnonymous()) {
throw new CompilationException(ErrorCode.UNKNOWN_TYPE, sourceLoc, paramTypeName);
}
- resultType = dependentType = new TypeSignature(paramTypeDataverseName, paramTypeName);
+ paramTypeSignature = depTypeSignature = new TypeSignature(paramTypeDataverseName, paramTypeName);
}
break;
case ORDEREDLIST:
@@ -2096,64 +2191,24 @@
paramTypeName = TypeUtil.createFunctionParameterTypeName(functionSignature.getName(),
functionSignature.getArity(), paramIdx);
IAType paramType = translateType(paramTypeDataverseName, paramTypeName, paramTypeExpr, mdTxnCtx);
- MetadataManager.INSTANCE.addDatatype(mdTxnCtx,
- new Datatype(paramTypeDataverseName, paramTypeName, paramType, true));
- resultType = new TypeSignature(paramTypeDataverseName, paramTypeName);
- dependentType = FunctionUtil.getTypeDependencyFromFunctionParameter(paramTypeExpr,
- functionSignature.getDataverseName());
+ paramTypeSignature = new TypeSignature(paramTypeDataverseName, paramTypeName);
+ depTypeSignature =
+ FunctionUtil.getTypeDependencyFromFunctionParameter(paramTypeExpr, paramTypeDataverseName);
+ paramInlineTypeEntity = new Datatype(paramTypeDataverseName, paramTypeName, paramType, true);
break;
default:
throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, sourceLoc);
}
- return new Pair<>(resultType, dependentType);
- }
-
- protected void handleCreateAdapterStatement(MetadataProvider metadataProvider, Statement stmt) throws Exception {
- CreateAdapterStatement cas = (CreateAdapterStatement) stmt;
- SourceLocation sourceLoc = cas.getSourceLocation();
- AdapterIdentifier aid = cas.getAdapterId();
- DataverseName dataverse = getActiveDataverseName(aid.getDataverseName());
- if (!dataverse.equals(aid.getDataverseName())) {
- aid = new AdapterIdentifier(dataverse, aid.getName());
- }
- MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
- metadataProvider.setMetadataTxnContext(mdTxnCtx);
- String libraryName = cas.getLibName();
- lockUtil.createAdapterBegin(lockManager, metadataProvider.getLocks(), dataverse, aid.getName(), libraryName);
- try {
- Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, dataverse);
- if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverse);
- }
- Library libraryInMetadata = MetadataManager.INSTANCE.getLibrary(mdTxnCtx, dataverse, libraryName);
- if (libraryInMetadata == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_LIBRARY, sourceLoc, libraryName);
- }
- // Add adapters
- String adapterFactoryClass = cas.getExternalIdent();
- DatasourceAdapter dsa = new DatasourceAdapter(aid, adapterFactoryClass,
- IDataSourceAdapter.AdapterType.EXTERNAL, libraryName);
- MetadataManager.INSTANCE.addAdapter(mdTxnCtx, dsa);
- if (LOGGER.isInfoEnabled()) {
- LOGGER.info("Installed adapter: " + aid.getName());
- }
- MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
-
- } catch (Exception e) {
- abort(e, e, mdTxnCtx);
- throw e;
- } finally {
- metadataProvider.getLocks().unlock();
- }
+ return new Triple<>(paramTypeSignature, depTypeSignature, paramInlineTypeEntity);
}
protected void handleFunctionDropStatement(MetadataProvider metadataProvider, Statement stmt) throws Exception {
FunctionDropStatement stmtDropFunction = (FunctionDropStatement) stmt;
FunctionSignature signature = stmtDropFunction.getFunctionSignature();
- signature.setDataverseName(getActiveDataverseName(signature.getDataverseName()));
- lockUtil.dropFunctionBegin(lockManager, metadataProvider.getLocks(), signature.getDataverseName(),
- signature.getName());
+ DataverseName dataverseName = getActiveDataverseName(signature.getDataverseName());
+ signature.setDataverseName(dataverseName);
+ lockUtil.dropFunctionBegin(lockManager, metadataProvider.getLocks(), dataverseName, signature.getName());
try {
doDropFunction(metadataProvider, stmtDropFunction, signature);
} finally {
@@ -2161,21 +2216,158 @@
}
}
- protected void doDropFunction(MetadataProvider metadataProvider, FunctionDropStatement stmtDropFunction,
+ protected boolean doDropFunction(MetadataProvider metadataProvider, FunctionDropStatement stmtDropFunction,
FunctionSignature signature) throws Exception {
+ DataverseName dataverseName = signature.getDataverseName();
SourceLocation sourceLoc = stmtDropFunction.getSourceLocation();
MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
metadataProvider.setMetadataTxnContext(mdTxnCtx);
try {
+ Dataverse dataverse = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, dataverseName);
+ if (dataverse == null) {
+ if (stmtDropFunction.getIfExists()) {
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return false;
+ } else {
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ }
+ }
Function function = MetadataManager.INSTANCE.getFunction(mdTxnCtx, signature);
if (function == null) {
- if (!stmtDropFunction.getIfExists()) {
- throw new CompilationException(ErrorCode.UNKNOWN_FUNCTION, sourceLoc, signature);
+ if (stmtDropFunction.getIfExists()) {
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return false;
+ } else {
+ throw new CompilationException(ErrorCode.UNKNOWN_FUNCTION, sourceLoc, signature.toString());
}
- } else {
- MetadataManager.INSTANCE.dropFunction(mdTxnCtx, signature);
+ }
+
+ List<TypeSignature> inlineTypes = TypeUtil.getFunctionInlineTypes(function);
+
+ MetadataManager.INSTANCE.dropFunction(mdTxnCtx, signature);
+ for (TypeSignature inlineType : inlineTypes) {
+ MetadataManager.INSTANCE.dropDatatype(mdTxnCtx, inlineType.getDataverseName(), inlineType.getName());
}
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return true;
+ } catch (Exception e) {
+ abort(e, e, mdTxnCtx);
+ throw e;
+ }
+ }
+
+ protected void handleCreateAdapterStatement(MetadataProvider metadataProvider, Statement stmt) throws Exception {
+ CreateAdapterStatement cas = (CreateAdapterStatement) stmt;
+ DataverseName dataverseName = getActiveDataverseName(cas.getDataverseName());
+ DataverseName libraryDataverseName = cas.getLibraryDataverseName();
+ if (libraryDataverseName == null) {
+ libraryDataverseName = dataverseName;
+ }
+ String libraryName = cas.getLibraryName();
+ lockUtil.createAdapterBegin(lockManager, metadataProvider.getLocks(), dataverseName, cas.getAdapterName(),
+ libraryDataverseName, libraryName);
+ try {
+ doCreateAdapter(metadataProvider, cas);
+ } finally {
+ metadataProvider.getLocks().unlock();
+ }
+ }
+
+ protected void doCreateAdapter(MetadataProvider metadataProvider, CreateAdapterStatement cas) throws Exception {
+ SourceLocation sourceLoc = cas.getSourceLocation();
+ MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
+ metadataProvider.setMetadataTxnContext(mdTxnCtx);
+ try {
+ DataverseName dataverseName = getActiveDataverseName(cas.getDataverseName());
+ Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, dataverseName);
+ if (dv == null) {
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ }
+ String adapterName = cas.getAdapterName();
+ DatasourceAdapter adapter = MetadataManager.INSTANCE.getAdapter(mdTxnCtx, dataverseName, adapterName);
+ if (adapter != null) {
+ if (cas.getIfNotExists()) {
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return;
+ }
+ throw new CompilationException(ErrorCode.ADAPTER_EXISTS, sourceLoc, adapterName);
+ }
+
+ DataverseName libraryDataverseName = cas.getLibraryDataverseName();
+ if (libraryDataverseName == null) {
+ libraryDataverseName = dataverseName;
+ }
+ String libraryName = cas.getLibraryName();
+ Library library = MetadataManager.INSTANCE.getLibrary(mdTxnCtx, libraryDataverseName, libraryName);
+ if (library == null) {
+ throw new CompilationException(ErrorCode.UNKNOWN_LIBRARY, sourceLoc, libraryName);
+ }
+ // Add adapters
+ ExternalFunctionLanguage language =
+ ExternalFunctionCompilerUtil.getExternalFunctionLanguage(library.getLanguage());
+ List<String> externalIdentifier = cas.getExternalIdentifier();
+ ExternalFunctionCompilerUtil.validateExternalIdentifier(externalIdentifier, language,
+ cas.getSourceLocation());
+
+ if (language != ExternalFunctionLanguage.JAVA) {
+ throw new CompilationException(ErrorCode.UNSUPPORTED_ADAPTER_LANGUAGE, cas.getSourceLocation(),
+ language.name());
+ }
+ String adapterFactoryClass = externalIdentifier.get(0);
+
+ adapter = new DatasourceAdapter(new AdapterIdentifier(dataverseName, adapterName),
+ IDataSourceAdapter.AdapterType.EXTERNAL, adapterFactoryClass, libraryDataverseName, libraryName);
+ MetadataManager.INSTANCE.addAdapter(mdTxnCtx, adapter);
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Installed adapter: " + adapterName);
+ }
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ } catch (Exception e) {
+ abort(e, e, mdTxnCtx);
+ throw e;
+ }
+ }
+
+ protected void handleAdapterDropStatement(MetadataProvider metadataProvider, Statement stmt) throws Exception {
+ AdapterDropStatement stmtDropAdapter = (AdapterDropStatement) stmt;
+ DataverseName dataverseName = getActiveDataverseName(stmtDropAdapter.getDataverseName());
+ String adapterName = stmtDropAdapter.getAdapterName();
+ lockUtil.dropAdapterBegin(lockManager, metadataProvider.getLocks(), dataverseName, adapterName);
+ try {
+ doDropAdapter(metadataProvider, stmtDropAdapter, dataverseName, adapterName);
+ } finally {
+ metadataProvider.getLocks().unlock();
+ }
+ }
+
+ protected boolean doDropAdapter(MetadataProvider metadataProvider, AdapterDropStatement stmtDropAdapter,
+ DataverseName dataverseName, String adapterName) throws Exception {
+ SourceLocation sourceLoc = stmtDropAdapter.getSourceLocation();
+ MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
+ metadataProvider.setMetadataTxnContext(mdTxnCtx);
+ try {
+ Dataverse dataverse = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, dataverseName);
+ if (dataverse == null) {
+ if (stmtDropAdapter.getIfExists()) {
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return false;
+ } else {
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ }
+ }
+ DatasourceAdapter adapter = MetadataManager.INSTANCE.getAdapter(mdTxnCtx, dataverseName, adapterName);
+ if (adapter == null) {
+ if (stmtDropAdapter.getIfExists()) {
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return false;
+ } else {
+ throw new CompilationException(ErrorCode.UNKNOWN_ADAPTER, sourceLoc, adapterName);
+ }
+ }
+
+ MetadataManager.INSTANCE.dropAdapter(mdTxnCtx, dataverseName, adapterName);
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return true;
} catch (Exception e) {
abort(e, e, mdTxnCtx);
throw e;
@@ -2312,26 +2504,38 @@
String libraryName = stmtDropLibrary.getLibraryName();
lockUtil.dropLibraryBegin(lockManager, metadataProvider.getLocks(), dataverseName, libraryName);
try {
- doDropLibrary(metadataProvider, dataverseName, libraryName, hcc);
+ doDropLibrary(metadataProvider, stmtDropLibrary, dataverseName, libraryName, hcc);
} finally {
metadataProvider.getLocks().unlock();
}
}
- private void doDropLibrary(MetadataProvider metadataProvider, DataverseName dataverseName, String libraryName,
- IHyracksClientConnection hcc) throws Exception {
+ protected boolean doDropLibrary(MetadataProvider metadataProvider, LibraryDropStatement stmtDropLibrary,
+ DataverseName dataverseName, String libraryName, IHyracksClientConnection hcc) throws Exception {
JobUtils.ProgressState progress = ProgressState.NO_PROGRESS;
MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
boolean bActiveTxn = true;
metadataProvider.setMetadataTxnContext(mdTxnCtx);
try {
- Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, dataverseName);
- if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, dataverseName);
+ Dataverse dataverse = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, dataverseName);
+ if (dataverse == null) {
+ if (stmtDropLibrary.getIfExists()) {
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return false;
+ } else {
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, stmtDropLibrary.getSourceLocation(),
+ dataverseName);
+ }
}
Library library = MetadataManager.INSTANCE.getLibrary(mdTxnCtx, dataverseName, libraryName);
if (library == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_LIBRARY, libraryName);
+ if (stmtDropLibrary.getIfExists()) {
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return false;
+ } else {
+ throw new CompilationException(ErrorCode.UNKNOWN_LIBRARY, stmtDropLibrary.getSourceLocation(),
+ libraryName);
+ }
}
// #. mark the existing library as PendingDropOp
@@ -2360,6 +2564,7 @@
MetadataManager.INSTANCE.dropLibrary(mdTxnCtx, dataverseName, libraryName);
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return true;
} catch (Exception e) {
if (bActiveTxn) {
abort(e, e, mdTxnCtx);
@@ -2431,7 +2636,7 @@
}
}
- protected void doDropSynonym(MetadataProvider metadataProvider, SynonymDropStatement stmtSynDrop,
+ protected boolean doDropSynonym(MetadataProvider metadataProvider, SynonymDropStatement stmtSynDrop,
DataverseName dataverseName, String synonymName) throws Exception {
MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
metadataProvider.setMetadataTxnContext(mdTxnCtx);
@@ -2440,12 +2645,13 @@
if (synonym == null) {
if (stmtSynDrop.getIfExists()) {
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
- return;
+ return false;
}
throw new CompilationException(ErrorCode.UNKNOWN_SYNONYM, stmtSynDrop.getSourceLocation(), synonymName);
}
MetadataManager.INSTANCE.dropSynonym(mdTxnCtx, dataverseName, synonymName);
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return true;
} catch (Exception e) {
abort(e, e, mdTxnCtx);
throw e;
@@ -2820,7 +3026,7 @@
}
}
- private void handleStartFeedStatement(MetadataProvider metadataProvider, Statement stmt,
+ protected void handleStartFeedStatement(MetadataProvider metadataProvider, Statement stmt,
IHyracksClientConnection hcc) throws Exception {
StartFeedStatement sfs = (StartFeedStatement) stmt;
SourceLocation sourceLoc = sfs.getSourceLocation();
@@ -2859,7 +3065,7 @@
}
listener = new FeedEventsListener(this, metadataProvider.getApplicationContext(), hcc, entityId,
datasets, null, FeedIntakeOperatorNodePushable.class.getSimpleName(),
- NoRetryPolicyFactory.INSTANCE, feed, feedConnections);
+ NoRetryPolicyFactory.INSTANCE, feed, feedConnections, compilationProvider.getLanguage());
}
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
committed = true;
@@ -2874,7 +3080,7 @@
}
}
- private void handleStopFeedStatement(MetadataProvider metadataProvider, Statement stmt) throws Exception {
+ protected void handleStopFeedStatement(MetadataProvider metadataProvider, Statement stmt) throws Exception {
StopFeedStatement sfst = (StopFeedStatement) stmt;
SourceLocation sourceLoc = sfst.getSourceLocation();
DataverseName dataverseName = getActiveDataverseName(sfst.getDataverseName());
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java
index 3eeed59..d06b8ab 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java
@@ -39,6 +39,7 @@
import org.apache.asterix.api.http.IQueryWebServerRegistrant;
import org.apache.asterix.api.http.server.ActiveStatsApiServlet;
import org.apache.asterix.api.http.server.ApiServlet;
+import org.apache.asterix.api.http.server.BasicAuthServlet;
import org.apache.asterix.api.http.server.CcQueryCancellationServlet;
import org.apache.asterix.api.http.server.ClusterApiServlet;
import org.apache.asterix.api.http.server.ClusterControllerDetailsApiServlet;
@@ -91,6 +92,7 @@
import org.apache.asterix.translator.IStatementExecutorFactory;
import org.apache.asterix.translator.Receptionist;
import org.apache.asterix.util.MetadataBuiltinFunctions;
+import org.apache.asterix.utils.RedactionUtil;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
@@ -112,6 +114,7 @@
import org.apache.hyracks.http.server.HttpServerConfigBuilder;
import org.apache.hyracks.http.server.WebManager;
import org.apache.hyracks.ipc.impl.HyracksConnection;
+import org.apache.hyracks.util.LogRedactionUtil;
import org.apache.hyracks.util.LoggingConfigUtil;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
@@ -158,8 +161,8 @@
componentProvider = new StorageComponentProvider();
ccExtensionManager = new CCExtensionManager(new ArrayList<>(getExtensions()));
IGlobalRecoveryManager globalRecoveryManager = createGlobalRecoveryManager();
- appCtx = createApplicationContext(null, globalRecoveryManager, lifecycleCoordinator,
- () -> new Receptionist("CC"), ConfigValidator::new, ccExtensionManager, new AdapterFactoryService());
+ appCtx = createApplicationContext(null, globalRecoveryManager, lifecycleCoordinator, Receptionist::new,
+ ConfigValidator::new, ccExtensionManager, new AdapterFactoryService());
final CCConfig ccConfig = controllerService.getCCConfig();
if (System.getProperty("java.rmi.server.hostname") == null) {
System.setProperty("java.rmi.server.hostname", ccConfig.getClusterPublicAddress());
@@ -231,6 +234,7 @@
public void configureLoggingLevel(Level level) {
super.configureLoggingLevel(level);
LoggingConfigUtil.defaultIfMissing(GlobalConfig.ASTERIX_LOGGER_NAME, level);
+ LogRedactionUtil.setRedactor(RedactionUtil.LOG_REDACTOR);
}
protected List<AsterixExtension> getExtensions() throws Exception {
@@ -347,9 +351,10 @@
case Servlets.ACTIVE_STATS:
return new ActiveStatsApiServlet(appCtx, ctx, paths);
case Servlets.UDF:
- return new UdfApiServlet(ctx, paths, appCtx, ccExtensionManager.getCompilationProvider(SQLPP),
- getStatementExecutorFactory(), componentProvider, server.getScheme(),
- server.getAddress().getPort());
+ return new BasicAuthServlet(ctx,
+ new UdfApiServlet(ctx, paths, appCtx, ccExtensionManager.getCompilationProvider(SQLPP),
+ getStatementExecutorFactory(), componentProvider, server.getScheme(),
+ server.getAddress().getPort()));
default:
throw new IllegalStateException(key);
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java
index 2e5c09c..e90976e 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java
@@ -72,6 +72,7 @@
import org.apache.asterix.transaction.management.resource.PersistentLocalResourceRepository;
import org.apache.asterix.translator.Receptionist;
import org.apache.asterix.util.MetadataBuiltinFunctions;
+import org.apache.asterix.utils.RedactionUtil;
import org.apache.hyracks.api.application.IServiceContext;
import org.apache.hyracks.api.client.NodeStatus;
import org.apache.hyracks.api.config.IConfigManager;
@@ -86,6 +87,7 @@
import org.apache.hyracks.http.server.HttpServerConfig;
import org.apache.hyracks.http.server.HttpServerConfigBuilder;
import org.apache.hyracks.http.server.WebManager;
+import org.apache.hyracks.util.LogRedactionUtil;
import org.apache.hyracks.util.LoggingConfigUtil;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
@@ -173,7 +175,7 @@
}
protected IReceptionistFactory getReceptionistFactory() {
- return () -> new Receptionist(nodeId);
+ return Receptionist::new;
}
protected IConfigValidatorFactory getConfigValidatorFactory() {
@@ -184,6 +186,7 @@
public void configureLoggingLevel(Level level) {
super.configureLoggingLevel(level);
LoggingConfigUtil.defaultIfMissing(GlobalConfig.ASTERIX_LOGGER_NAME, level);
+ LogRedactionUtil.setRedactor(RedactionUtil.LOG_REDACTOR);
}
protected void configureServers() throws Exception {
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/FeedOperations.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/FeedOperations.java
index 8ea0ad4..68234b7 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/FeedOperations.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/FeedOperations.java
@@ -29,6 +29,7 @@
import java.util.Set;
import java.util.TreeSet;
+import org.apache.asterix.algebra.base.ILangExtension;
import org.apache.asterix.app.result.ResponsePrinter;
import org.apache.asterix.app.translator.DefaultStatementExecutorFactory;
import org.apache.asterix.app.translator.QueryTranslator;
@@ -309,7 +310,7 @@
if (opDesc instanceof LSMTreeInsertDeleteOperatorDescriptor
&& ((LSMTreeInsertDeleteOperatorDescriptor) opDesc).isPrimary()) {
metaOp = new FeedMetaOperatorDescriptor(jobSpec, feedConnectionId, opDesc,
- feedPolicyEntity.getProperties(), FeedRuntimeType.STORE);
+ feedPolicyEntity.getProperties(), FeedRuntimeType.STORE, true);
opId = metaOp.getOperatorId();
opDesc.setOperatorId(opId);
} else {
@@ -323,7 +324,7 @@
// anything on the network interface needs to be message compatible
if (connectorDesc instanceof MToNPartitioningConnectorDescriptor) {
metaOp = new FeedMetaOperatorDescriptor(jobSpec, feedConnectionId, opDesc,
- feedPolicyEntity.getProperties(), FeedRuntimeType.COMPUTE);
+ feedPolicyEntity.getProperties(), FeedRuntimeType.COMPUTE, true);
opId = metaOp.getOperatorId();
opDesc.setOperatorId(opId);
}
@@ -450,7 +451,8 @@
public static Pair<JobSpecification, AlgebricksAbsolutePartitionConstraint> buildStartFeedJob(
MetadataProvider metadataProvider, Feed feed, List<FeedConnection> feedConnections,
- IStatementExecutor statementExecutor, IHyracksClientConnection hcc) throws Exception {
+ IStatementExecutor statementExecutor, IHyracksClientConnection hcc, ILangExtension.Language translatorLang)
+ throws Exception {
FeedPolicyAccessor fpa = new FeedPolicyAccessor(new HashMap<>());
Pair<JobSpecification, ITypedAdapterFactory> intakeInfo = buildFeedIntakeJobSpec(feed, metadataProvider, fpa);
List<JobSpecification> jobsList = new ArrayList<>();
@@ -465,8 +467,9 @@
metadataProvider.getConfig().put(FeedActivityDetails.COLLECT_LOCATIONS,
StringUtils.join(ingestionLocations, ','));
// TODO: Once we deprecated AQL, this extra queryTranslator can be removed.
- IStatementExecutor translator =
- getSQLPPTranslator(metadataProvider, ((QueryTranslator) statementExecutor).getSessionOutput());
+ IStatementExecutor translator = translatorLang == ILangExtension.Language.AQL
+ ? getSQLPPTranslator(metadataProvider, ((QueryTranslator) statementExecutor).getSessionOutput())
+ : statementExecutor;
// Add connection job
for (FeedConnection feedConnection : feedConnections) {
JobSpecification connectionJob =
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
index 81f749e..84f9a94 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
@@ -19,6 +19,7 @@
package org.apache.asterix.utils;
import static org.apache.asterix.app.translator.QueryTranslator.abort;
+import static org.apache.asterix.common.config.DatasetConfig.DatasetType;
import static org.apache.hyracks.storage.am.common.dataflow.IndexDropOperatorDescriptor.DropOption;
import java.rmi.RemoteException;
@@ -129,7 +130,9 @@
sourceDataset.getDatasetName(), sourceDataset.getNodeGroupName(), sourceNodes,
targetDataset.getNodeGroupName(), targetNcNames);
// Rebalances the source dataset into the target dataset.
- rebalance(sourceDataset, targetDataset, metadataProvider, hcc, datasetRebalanceCallback);
+ if (sourceDataset.getDatasetType() != DatasetType.EXTERNAL) {
+ rebalance(sourceDataset, targetDataset, metadataProvider, hcc, datasetRebalanceCallback);
+ }
} else {
targetDataset = null;
// if this the last NC in the cluster, just drop the dataset
@@ -353,6 +356,9 @@
// Drops dataset files of a given dataset.
private static void dropDatasetFiles(Dataset dataset, MetadataProvider metadataProvider,
IHyracksClientConnection hcc) throws Exception {
+ if (dataset.getDatasetType() == DatasetType.EXTERNAL) {
+ return;
+ }
List<JobSpecification> jobs = new ArrayList<>();
List<Index> indexes = metadataProvider.getDatasetIndexes(dataset.getDataverseName(), dataset.getDatasetName());
for (Index index : indexes) {
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RedactionUtil.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RedactionUtil.java
new file mode 100644
index 0000000..156b78a
--- /dev/null
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RedactionUtil.java
@@ -0,0 +1,54 @@
+/*
+ * 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.utils;
+
+import static java.util.regex.Pattern.CASE_INSENSITIVE;
+import static java.util.regex.Pattern.DOTALL;
+import static org.apache.asterix.external.util.ExternalDataConstants.AwsS3.SECRET_ACCESS_KEY_FIELD_NAME;
+
+import java.util.regex.Pattern;
+
+import org.apache.hyracks.util.ILogRedactor;
+
+public class RedactionUtil {
+ private RedactionUtil() {
+ throw new AssertionError("do not instantiate");
+ }
+
+ private static final Pattern STATEMENT_PATTERN =
+ Pattern.compile("(" + SECRET_ACCESS_KEY_FIELD_NAME + ").*", CASE_INSENSITIVE | DOTALL);
+ private static final String STATEMENT_REPLACEMENT = "$1...<redacted sensitive data>";
+
+ public static final ILogRedactor LOG_REDACTOR = new ILogRedactor() {
+ @Override
+ public String userData(String text) {
+ return text;
+ }
+
+ @Override
+ public String statement(String text) {
+ return STATEMENT_PATTERN.matcher(text).replaceFirst(STATEMENT_REPLACEMENT);
+ }
+
+ @Override
+ public String unredactUserData(String text) {
+ return text;
+ }
+ };
+}
diff --git a/asterixdb/asterix-app/src/main/resources/cc.conf b/asterixdb/asterix-app/src/main/resources/cc.conf
index d85a5ef..d5da6d4 100644
--- a/asterixdb/asterix-app/src/main/resources/cc.conf
+++ b/asterixdb/asterix-app/src/main/resources/cc.conf
@@ -18,7 +18,8 @@
[nc/asterix_nc1]
txn.log.dir=target/tmp/asterix_nc1/txnlog
core.dump.dir=target/tmp/asterix_nc1/coredump
-iodevices=asterix_nc1/iodevice1,asterix_nc1/iodevice2
+iodevices=asterix_nc1/iodevice1
+iodevices=asterix_nc1/iodevice2
nc.api.port=19004
#jvm.args=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5006
@@ -26,7 +27,8 @@
ncservice.port=9091
txn.log.dir=target/tmp/asterix_nc2/txnlog
core.dump.dir=target/tmp/asterix_nc2/coredump
-iodevices=asterix_nc2/iodevice1,asterix_nc2/iodevice2
+iodevices=asterix_nc2/iodevice1
+iodevices=asterix_nc1/iodevice2
nc.api.port=19005
#jvm.args=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5007
@@ -53,10 +55,11 @@
compiler.framesize=32KB
compiler.sortmemory=320KB
compiler.groupmemory=160KB
-compiler.joinmemory=256KB
+compiler.joinmemory=768KB
compiler.textsearchmemory=160KB
compiler.windowmemory=192KB
compiler.sort.parallel=false
+compiler.internal.sanitycheck=true
messaging.frame.size=4096
messaging.frame.count=512
diff --git a/asterixdb/asterix-app/src/main/resources/cc3.conf b/asterixdb/asterix-app/src/main/resources/cc3.conf
index 88362aa..d2a8556 100644
--- a/asterixdb/asterix-app/src/main/resources/cc3.conf
+++ b/asterixdb/asterix-app/src/main/resources/cc3.conf
@@ -51,7 +51,7 @@
compiler.framesize=32KB
compiler.sortmemory=320KB
compiler.groupmemory=160KB
-compiler.joinmemory=256KB
+compiler.joinmemory=1024KB
compiler.textsearchmemory=160KB
compiler.windowmemory=192KB
compiler.parallelism=3
diff --git a/asterixdb/asterix-app/src/main/resources/entrypoint.py b/asterixdb/asterix-app/src/main/resources/entrypoint.py
old mode 100644
new mode 100755
index cd3298e..0917f49
--- a/asterixdb/asterix-app/src/main/resources/entrypoint.py
+++ b/asterixdb/asterix-app/src/main/resources/entrypoint.py
@@ -15,46 +15,235 @@
# specific language governing permissions and limitations
# under the License.
-import math,sys
-sys.path.insert(0,'./site-packages/')
-import Pyro4
+import sys
+from os import pathsep
+addr = str(sys.argv[1])
+port = str(sys.argv[2])
+paths = sys.argv[3]
+for p in paths.split(pathsep):
+ sys.path.append(p)
+from struct import *
+import signal
+import msgpack
+import socket
from importlib import import_module
from pathlib import Path
+from enum import IntEnum
+from io import BytesIO
-@Pyro4.expose
+PROTO_VERSION = 1
+HEADER_SZ = 8+8+1
+REAL_HEADER_SZ = 4+8+8+1
+
+
+class MessageType(IntEnum):
+ HELO = 0
+ QUIT = 1
+ INIT = 2
+ INIT_RSP = 3
+ CALL = 4
+ CALL_RSP = 5
+ ERROR = 6
+
+
+class MessageFlags(IntEnum):
+ NORMAL = 0
+ INITIAL_REQ = 1
+ INITIAL_ACK = 2
+ ERROR = 3
+
+
class Wrapper(object):
wrapped_module = None
wrapped_class = None
wrapped_fn = None
+ packer = msgpack.Packer(autoreset=False)
+ unpacker = msgpack.Unpacker()
+ response_buf = BytesIO()
+ stdin_buf = BytesIO()
+ wrapped_fns = {}
+ alive = True
- def __init__(self, module_name, class_name, fn_name):
+ def init(self, module_name, class_name, fn_name):
self.wrapped_module = import_module(module_name)
# do not allow modules to be called that are not part of the uploaded module
+ wrapped_fn = None
if not self.check_module_path(self.wrapped_module):
wrapped_module = None
- return None
+ raise ImportError("Module was not found in library")
if class_name is not None:
- self.wrapped_class = getattr(import_module(module_name),class_name)()
+ self.wrapped_class = getattr(
+ import_module(module_name), class_name)()
if self.wrapped_class is not None:
- self.wrapped_fn = getattr(self.wrapped_class,fn_name)
+ wrapped_fn = getattr(self.wrapped_class, fn_name)
else:
- self.wrapped_fn = locals()[fn_name]
+ wrapped_fn = locals()[fn_name]
+ if wrapped_fn is None:
+ raise ImportError("Could not find class or function in specified module")
+ self.wrapped_fns[self.rmid] = wrapped_fn
- def nextTuple(self, *args):
- return self.wrapped_fn(args)
+ def nextTuple(self, *args, key=None):
+ return self.wrapped_fns[key](*args)
- def ping(self):
- return "pong"
-
- def check_module_path(self,module):
+ def check_module_path(self, module):
cwd = Path('.').resolve()
module_path = Path(module.__file__).resolve()
return cwd in module_path.parents
+ def read_header(self, readbuf):
+ self.sz, self.mid, self.rmid, self.flag = unpack(
+ "!iqqb", readbuf[0:21])
+ return True
-port = int(sys.argv[1])
-wrap = Wrapper(sys.argv[2],sys.argv[3],sys.argv[4])
-d = Pyro4.Daemon(host="127.0.0.1",port=port)
-d.register(wrap,"nextTuple")
-print(Pyro4.config.dump())
-d.requestLoop()
+ def write_header(self, response_buf, dlen):
+ total_len = dlen + HEADER_SZ
+ header = pack("!iqqb", total_len, int(-1), int(self.rmid), self.flag)
+ self.response_buf.write(header)
+ return total_len+4
+
+ def get_ver_hlen(self, hlen):
+ return hlen + (PROTO_VERSION << 4)
+
+ def get_hlen(self):
+ return self.ver_hlen - (PROTO_VERSION << 4)
+
+ def init_remote_ipc(self):
+ self.response_buf.seek(0)
+ self.flag = MessageFlags.INITIAL_REQ
+ dlen = len(self.unpacked_msg[1])
+ resp_len = self.write_header(self.response_buf, dlen)
+ self.response_buf.write(self.unpacked_msg[1])
+ self.resp = self.response_buf.getbuffer()[0:resp_len]
+ self.send_msg()
+ self.packer.reset()
+
+ def helo(self):
+ #need to ack the connection back before sending actual HELO
+ self.init_remote_ipc()
+
+ self.flag = MessageFlags.NORMAL
+ self.response_buf.seek(0)
+ self.packer.pack(int(MessageType.HELO))
+ self.packer.pack("HELO")
+ dlen = 5 #tag(1) + body(4)
+ resp_len = self.write_header(self.response_buf, dlen)
+ self.response_buf.write(self.packer.bytes())
+ self.resp = self.response_buf.getbuffer()[0:resp_len]
+ self.send_msg()
+ self.packer.reset()
+ return True
+
+ def handle_init(self):
+ self.flag = MessageFlags.NORMAL
+ self.response_buf.seek(0)
+ args = self.unpacked_msg[1]
+ module = args[0]
+ if len(args) == 3:
+ clazz = args[1]
+ fn = args[2]
+ else:
+ clazz = None
+ fn = args[1]
+ self.init(module, clazz, fn)
+ self.packer.pack(int(MessageType.INIT_RSP))
+ dlen = 1 # just the tag.
+ resp_len = self.write_header(self.response_buf, dlen)
+ self.response_buf.write(self.packer.bytes())
+ self.resp = self.response_buf.getbuffer()[0:resp_len]
+ self.send_msg()
+ self.packer.reset()
+ return True
+
+ def quit(self):
+ self.alive = False
+ return True
+
+ def handle_call(self):
+ self.flag = MessageFlags.NORMAL
+ args = self.unpacked_msg[1]
+ result = None
+ if args is None:
+ result = self.nextTuple(key=self.rmid)
+ else:
+ result = self.nextTuple(args, key=self.rmid)
+ self.packer.reset()
+ self.response_buf.seek(0)
+ body = msgpack.packb(result)
+ dlen = len(body)+1 # 1 for tag
+ resp_len = self.write_header(self.response_buf, dlen)
+ self.packer.pack(int(MessageType.CALL_RSP))
+ self.response_buf.write(self.packer.bytes())
+ self.response_buf.write(body)
+ self.resp = self.response_buf.getbuffer()[0:resp_len]
+ self.send_msg()
+ self.packer.reset()
+ return True
+
+ def handle_error(self,e):
+ self.flag = MessageFlags.NORMAL
+ result = type(e).__name__ + ": " + str(e)
+ self.packer.reset()
+ self.response_buf.seek(0)
+ body = msgpack.packb(result)
+ dlen = len(body)+1 # 1 for tag
+ resp_len = self.write_header(self.response_buf, dlen)
+ self.packer.pack(int(MessageType.ERROR))
+ self.response_buf.write(self.packer.bytes())
+ self.response_buf.write(body)
+ self.resp = self.response_buf.getbuffer()[0:resp_len]
+ self.send_msg()
+ self.packer.reset()
+ return True
+
+ type_handler = {
+ MessageType.HELO: helo,
+ MessageType.QUIT: quit,
+ MessageType.INIT: handle_init,
+ MessageType.CALL: handle_call
+ }
+
+ def connect_sock(self, addr, port):
+ self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ try:
+ self.sock.connect((addr, int(port)))
+ except socket.error as msg:
+ print(sys.stderr, msg)
+
+ def disconnect_sock(self, *args):
+ self.sock.shutdown(socket.SHUT_RDWR)
+ self.sock.close()
+
+ def recv_msg(self):
+ completed = False
+ while not completed and self.alive:
+ readbuf = sys.stdin.buffer.read1(4096)
+ try:
+ if(len(readbuf) < REAL_HEADER_SZ):
+ while(len(readbuf) < REAL_HEADER_SZ):
+ readbuf += sys.stdin.buffer.read1(4096)
+ self.read_header(readbuf)
+ if(self.sz > len(readbuf)):
+ while(len(readbuf) < self.sz):
+ readbuf += sys.stdin.buffer.read1(4096)
+ self.unpacker.feed(readbuf[21:])
+ self.unpacked_msg = list(self.unpacker)
+ self.type = MessageType(self.unpacked_msg[0])
+ completed = self.type_handler[self.type](self)
+ except BaseException as e:
+ completed = self.handle_error(e)
+
+ def send_msg(self):
+ self.sock.sendall(self.resp)
+ self.resp = None
+ return
+
+ def recv_loop(self):
+ while self.alive:
+ self.recv_msg()
+ self.disconnect_sock()
+
+
+wrap = Wrapper()
+wrap.connect_sock(addr, port)
+signal.signal(signal.SIGTERM, wrap.disconnect_sock)
+wrap.recv_loop()
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/app/bootstrap/TestNodeController.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/app/bootstrap/TestNodeController.java
index ebf98df..1040781 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/app/bootstrap/TestNodeController.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/app/bootstrap/TestNodeController.java
@@ -800,8 +800,8 @@
new LSMPrimaryUpsertOperatorNodePushable(ctx, ctx.getTaskAttemptId().getTaskId().getPartition(),
indexHelperFactory, primaryIndexInfo.primaryIndexInsertFieldsPermutations,
recordDescProvider.getInputRecordDescriptor(new ActivityId(new OperatorDescriptorId(0), 0), 0),
- modificationCallbackFactory, searchCallbackFactory,
- keyIndexes.length, recordType, -1, frameOpCallbackFactory == null
+ modificationCallbackFactory, searchCallbackFactory, keyIndexes.length,
+ 0, recordType, -1, frameOpCallbackFactory == null
? dataset.getFrameOpCallbackFactory(mdProvider) : frameOpCallbackFactory,
MissingWriterFactory.INSTANCE, hasSecondaries);
RecordDescriptor upsertOutRecDesc = getUpsertOutRecDesc(primaryIndexInfo.rDesc, dataset,
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/ActiveStatsTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/ActiveStatsTest.java
index 963ba7c..b23b3cf 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/ActiveStatsTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/ActiveStatsTest.java
@@ -107,7 +107,7 @@
// Add event listener
ActiveEntityEventsListener eventsListener = new DummyFeedEventsListener(statementExecutor, appCtx, null,
entityId, datasetList, partitionConstraint, FeedIntakeOperatorNodePushable.class.getSimpleName(),
- NoRetryPolicyFactory.INSTANCE, null, Collections.emptyList());
+ NoRetryPolicyFactory.INSTANCE, null, Collections.emptyList(), Language.SQLPP);
// Register mock runtime
NCAppRuntimeContext nc1AppCtx =
(NCAppRuntimeContext) ExecutionTestUtil.integrationUtil.ncs[0].getApplicationContext();
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/DummyFeedEventsListener.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/DummyFeedEventsListener.java
index 88f1332..884d209 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/DummyFeedEventsListener.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/DummyFeedEventsListener.java
@@ -26,6 +26,7 @@
import org.apache.asterix.active.EntityId;
import org.apache.asterix.active.IActiveEntityEventSubscriber;
import org.apache.asterix.active.IRetryPolicyFactory;
+import org.apache.asterix.algebra.base.ILangExtension;
import org.apache.asterix.app.active.FeedEventsListener;
import org.apache.asterix.common.dataflow.ICcApplicationContext;
import org.apache.asterix.external.feed.watch.WaitForStateSubscriber;
@@ -43,9 +44,10 @@
public DummyFeedEventsListener(IStatementExecutor statementExecutor, ICcApplicationContext appCtx,
IHyracksClientConnection hcc, EntityId entityId, List<Dataset> datasets,
AlgebricksAbsolutePartitionConstraint locations, String runtimeName, IRetryPolicyFactory retryPolicyFactory,
- Feed feed, List<FeedConnection> feedConnections) throws HyracksDataException {
+ Feed feed, List<FeedConnection> feedConnections, ILangExtension.Language translatorLang)
+ throws HyracksDataException {
super(statementExecutor, appCtx, hcc, entityId, datasets, locations, runtimeName, retryPolicyFactory, feed,
- feedConnections);
+ feedConnections, translatorLang);
}
@Override
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
index ceb0dbb..2399064 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
@@ -68,6 +68,7 @@
import java.util.function.Predicate;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
@@ -1622,13 +1623,22 @@
protected static boolean isExpected(Exception e, CompilationUnit cUnit) {
final List<String> expErrors = cUnit.getExpectedError();
for (String exp : expErrors) {
- if (e.toString().contains(exp)) {
+ if (e.toString().contains(exp) || containsPattern(e.toString(), exp)) {
return true;
}
}
return false;
}
+ private static boolean containsPattern(String exception, String maybePattern) {
+ try {
+ return Pattern.compile(maybePattern).matcher(exception).find();
+ } catch (PatternSyntaxException pse) {
+ // ignore, this isn't always a legal pattern
+ return false;
+ }
+ }
+
public int getTimeoutSecs(String statement) {
final Matcher timeoutMatcher = POLL_TIMEOUT_PATTERN.matcher(statement);
if (timeoutMatcher.find()) {
@@ -2070,7 +2080,7 @@
// Get the expected exception
expectedError = expectedErrors.get(numOfErrors - 1);
String actualError = e.toString();
- if (!actualError.contains(expectedError)) {
+ if (!actualError.contains(expectedError) && !containsPattern(actualError, expectedError)) {
LOGGER.error("Expected to find the following in error text: +++++{}+++++", expectedError);
return true;
}
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/CheckpointInSecondaryIndexTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/CheckpointInSecondaryIndexTest.java
index b43c445..d60702f 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/CheckpointInSecondaryIndexTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/CheckpointInSecondaryIndexTest.java
@@ -165,9 +165,9 @@
public void createIndex() throws Exception {
List<List<String>> partitioningKeys = new ArrayList<>();
partitioningKeys.add(Collections.singletonList("key"));
- dataset = new TestDataset(DATAVERSE_NAME, DATASET_NAME, DATAVERSE_NAME, DATA_TYPE_NAME,
- NODE_GROUP_NAME, NoMergePolicyFactory.NAME, null, new InternalDatasetDetails(null,
- PartitioningStrategy.HASH, partitioningKeys, null, null, null, false, null),
+ dataset = new TestDataset(DATAVERSE_NAME, DATASET_NAME, DATAVERSE_NAME, DATA_TYPE_NAME, NODE_GROUP_NAME,
+ NoMergePolicyFactory.NAME, null, new InternalDatasetDetails(null, PartitioningStrategy.HASH,
+ partitioningKeys, null, null, null, false, null, null),
null, DatasetType.INTERNAL, DATASET_ID, 0);
secondaryIndex = new Index(DATAVERSE_NAME, DATASET_NAME, INDEX_NAME, INDEX_TYPE, INDEX_FIELD_NAMES,
INDEX_FIELD_INDICATORS, INDEX_FIELD_TYPES, false, false, false, 0);
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/GlobalVirtualBufferCacheTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/GlobalVirtualBufferCacheTest.java
index 0e51f28..2034aa8 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/GlobalVirtualBufferCacheTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/GlobalVirtualBufferCacheTest.java
@@ -189,16 +189,16 @@
private void createIndex() throws Exception {
dataset = new TestDataset(StorageTestUtils.DATAVERSE_NAME, "ds", StorageTestUtils.DATAVERSE_NAME,
- StorageTestUtils.DATA_TYPE_NAME, StorageTestUtils.NODE_GROUP_NAME,
- NoMergePolicyFactory.NAME, null, new InternalDatasetDetails(null, PartitioningStrategy.HASH,
- StorageTestUtils.PARTITIONING_KEYS, null, null, null, false, null),
+ StorageTestUtils.DATA_TYPE_NAME, StorageTestUtils.NODE_GROUP_NAME, NoMergePolicyFactory.NAME,
+ null, new InternalDatasetDetails(null, PartitioningStrategy.HASH, StorageTestUtils.PARTITIONING_KEYS,
+ null, null, null, false, null, null),
null, DatasetType.INTERNAL, StorageTestUtils.DATASET_ID, 0);
filteredDataset = new TestDataset(StorageTestUtils.DATAVERSE_NAME, "filtered_ds",
StorageTestUtils.DATAVERSE_NAME, StorageTestUtils.DATA_TYPE_NAME, StorageTestUtils.NODE_GROUP_NAME,
NoMergePolicyFactory.NAME, null,
new InternalDatasetDetails(null, PartitioningStrategy.HASH, StorageTestUtils.PARTITIONING_KEYS, null,
- null, null, false, Collections.singletonList("value")),
+ null, null, false, 0, Collections.singletonList("value")),
null, DatasetType.INTERNAL, StorageTestUtils.DATASET_ID + 1, 0);
primaryIndexInfos = new PrimaryIndexInfo[NUM_PARTITIONS];
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/MultiPartitionLSMIndexTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/MultiPartitionLSMIndexTest.java
index d43b6d5..41b889d 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/MultiPartitionLSMIndexTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/MultiPartitionLSMIndexTest.java
@@ -68,6 +68,7 @@
import org.apache.hyracks.storage.am.lsm.btree.impl.TestLsmBtree;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMMemoryComponent;
+import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache;
import org.apache.hyracks.storage.am.lsm.common.impls.NoMergePolicyFactory;
import org.junit.After;
import org.junit.AfterClass;
@@ -154,9 +155,9 @@
public void createIndex() throws Exception {
List<List<String>> partitioningKeys = new ArrayList<>();
partitioningKeys.add(Collections.singletonList("key"));
- dataset = new TestDataset(DATAVERSE_NAME, DATASET_NAME, DATAVERSE_NAME, DATA_TYPE_NAME,
- NODE_GROUP_NAME, NoMergePolicyFactory.NAME, null, new InternalDatasetDetails(null,
- PartitioningStrategy.HASH, partitioningKeys, null, null, null, false, null),
+ dataset = new TestDataset(DATAVERSE_NAME, DATASET_NAME, DATAVERSE_NAME, DATA_TYPE_NAME, NODE_GROUP_NAME,
+ NoMergePolicyFactory.NAME, null, new InternalDatasetDetails(null, PartitioningStrategy.HASH,
+ partitioningKeys, null, null, null, false, null, null),
null, DatasetType.INTERNAL, DATASET_ID, 0);
secondaryIndex = new Index(DATAVERSE_NAME, DATASET_NAME, INDEX_NAME, INDEX_TYPE, INDEX_FIELD_NAMES,
INDEX_FIELD_INDICATORS, INDEX_FIELD_TYPES, false, false, false, 0);
@@ -284,7 +285,6 @@
}
}
}
- System.out.println("Proceed to flush");
}
}
});
@@ -338,31 +338,37 @@
}
}
// The memory component has been allocated. now we allow the first actor to proceed to schedule flush
- MutableBoolean flushStarted = new MutableBoolean(false);
+ MutableBoolean flushCompleted = new MutableBoolean(false);
primaryLsmBtrees[0].addFlushCallback(new ITestOpCallback<Semaphore>() {
@Override
public void before(Semaphore t) {
- synchronized (flushStarted) {
- flushStarted.setValue(true);
- flushStarted.notifyAll();
- }
}
@Override
public void after(Semaphore t) {
+ synchronized (flushCompleted) {
+ flushCompleted.setValue(true);
+ flushCompleted.notifyAll();
+ }
}
});
synchronized (proceedToScheduleFlush) {
proceedToScheduleFlush.setValue(true);
proceedToScheduleFlush.notifyAll();
}
- // Now we need to know that the flush has been scheduled
- synchronized (flushStarted) {
- while (!flushStarted.booleanValue()) {
- flushStarted.wait(100);
+ // Must wait for the flush to complete. Otherwise, the GVBC may flush partition 1
+ synchronized (flushCompleted) {
+ while (!flushCompleted.booleanValue()) {
+ flushCompleted.wait();
}
}
+ IVirtualBufferCache gvbc = ncAppCtx.getVirtualBufferCache();
+ while (gvbc.getUsage() > gvbc.getPageBudget() / 2) {
+ // ensure the memory component pages of lsm tree 0 are freed
+ Thread.sleep(100);
+ }
+
// we now allow the allocation to proceed
synchronized (proceedToAllocateSecondaryIndex) {
proceedToAllocateSecondaryIndex.setValue(true);
@@ -373,6 +379,7 @@
primaryLsmBtrees[1].clearAllocateCallbacks();
// check the Ids of the memory components of partition 1
// This shows the bug
+ Assert.assertNotEquals(null, primaryLsmBtrees[1].getCurrentMemoryComponent().getId());
Assert.assertEquals(primaryLsmBtrees[1].getCurrentMemoryComponent().getId(),
secondaryLsmBtrees[1].getCurrentMemoryComponent().getId());
} catch (Throwable e) {
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/SearchCursorComponentSwitchTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/SearchCursorComponentSwitchTest.java
index 28da85c..a9e86cb 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/SearchCursorComponentSwitchTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/SearchCursorComponentSwitchTest.java
@@ -124,9 +124,9 @@
public void createIndex() throws Exception {
List<List<String>> partitioningKeys = new ArrayList<>();
partitioningKeys.add(Collections.singletonList("key"));
- dataset = new TestDataset(DATAVERSE_NAME, DATASET_NAME, DATAVERSE_NAME, DATA_TYPE_NAME,
- NODE_GROUP_NAME, NoMergePolicyFactory.NAME, null, new InternalDatasetDetails(null,
- PartitioningStrategy.HASH, partitioningKeys, null, null, null, false, null),
+ dataset = new TestDataset(DATAVERSE_NAME, DATASET_NAME, DATAVERSE_NAME, DATA_TYPE_NAME, NODE_GROUP_NAME,
+ NoMergePolicyFactory.NAME, null, new InternalDatasetDetails(null, PartitioningStrategy.HASH,
+ partitioningKeys, null, null, null, false, null, null),
null, DatasetType.INTERNAL, DATASET_ID, 0);
PrimaryIndexInfo primaryIndexInfo = nc.createPrimaryIndex(dataset, KEY_TYPES, RECORD_TYPE, META_TYPE, null,
storageManager, KEY_INDEXES, KEY_INDICATORS_LIST, 0);
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/StorageTestUtils.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/StorageTestUtils.java
index e41c193..3ef1e62 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/StorageTestUtils.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/StorageTestUtils.java
@@ -95,7 +95,7 @@
public static final TestDataset DATASET =
new TestDataset(DATAVERSE_NAME, DATASET_NAME, DATAVERSE_NAME, DATA_TYPE_NAME, NODE_GROUP_NAME,
NoMergePolicyFactory.NAME, null, new InternalDatasetDetails(null, PartitioningStrategy.HASH,
- PARTITIONING_KEYS, null, null, null, false, null),
+ PARTITIONING_KEYS, null, null, null, false, null, null),
null, DatasetType.INTERNAL, DATASET_ID, 0);
private StorageTestUtils() {
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestDataset.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestDataset.java
index a6a53cb..f28e9bb 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestDataset.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestDataset.java
@@ -71,9 +71,9 @@
public IResourceFactory getResourceFactory(MetadataProvider mdProvider, Index index, ARecordType recordType,
ARecordType metaType, ILSMMergePolicyFactory mergePolicyFactory, Map<String, String> mergePolicyProperties)
throws AlgebricksException {
- ITypeTraits[] filterTypeTraits = DatasetUtil.computeFilterTypeTraits(this, recordType);
+ ITypeTraits[] filterTypeTraits = DatasetUtil.computeFilterTypeTraits(this, recordType, metaType);
IBinaryComparatorFactory[] filterCmpFactories = DatasetUtil.computeFilterBinaryComparatorFactories(this,
- recordType, mdProvider.getStorageComponentProvider().getComparatorFactoryProvider());
+ recordType, metaType, mdProvider.getStorageComponentProvider().getComparatorFactoryProvider());
IResourceFactory resourceFactory =
TestLsmBTreeResourceFactoryProvider.INSTANCE.getResourceFactory(mdProvider, this, index, recordType,
metaType, mergePolicyFactory, mergePolicyProperties, filterTypeTraits, filterCmpFactories);
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/aws/WildCardToRegexTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/aws/WildCardToRegexTest.java
new file mode 100644
index 0000000..f15b657
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/aws/WildCardToRegexTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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.test.external_dataset.aws;
+
+import static org.apache.asterix.external.util.ExternalDataUtils.patternToRegex;
+
+import java.util.regex.Pattern;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.junit.Test;
+
+import junit.framework.TestCase;
+
+public class WildCardToRegexTest extends TestCase {
+
+ @Test
+ public void test() throws HyracksDataException {
+ String result = patternToRegex("*?[abc]");
+ assertEquals(".*.[abc]", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("*?[!@#$%^&*()+<>|=!{}.]");
+ assertEquals(".*.[^@#\\$%\\^&\\*\\(\\)\\+\\<\\>\\|\\=\\!\\{\\}\\.]", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("**??[[a-z*0-9]]");
+ assertEquals(".*.*..[\\[a-z\\*0-9]\\]", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("**??[[a-z*0-9]]");
+ assertEquals(".*.*..[\\[a-z\\*0-9]\\]", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("*?[!abc]");
+ assertEquals(".*.[^abc]", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("[!]abc");
+ assertEquals("\\[\\!\\]abc", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("[!]abc]");
+ assertEquals("[^\\]abc]", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("[]]");
+ assertEquals("[\\]]", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("[]abcd");
+ assertEquals("\\[\\]abcd", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("[]abcd]");
+ assertEquals("[\\]abcd]", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("[^]");
+ assertEquals("[\\^]", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("[^]]");
+ assertEquals("[\\^]\\]", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("[!]");
+ assertEquals("\\[\\!\\]", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("[!]]");
+ assertEquals("[^\\]]", result);
+ Pattern.compile(result);
+
+ result = patternToRegex("[][!][^]]]]*[![*a-zA--&&^$||0-9B$\\\\*&&]*&&[^a-b||0--9][[[");
+ assertEquals(
+ "[\\]\\[\\!][\\^]\\]\\]\\].*[^\\[\\*a-zA\\-\\-\\&\\&\\^\\$\\|\\|0-9B\\$\\\\\\\\\\*\\&\\&].*&&[\\^a-b\\|\\|0\\-\\-9]\\[\\[\\[",
+ result);
+ Pattern.compile(result);
+ }
+}
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTxnTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTxnTest.java
index d4cb04f..b34f5c6 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTxnTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTxnTest.java
@@ -112,8 +112,8 @@
testExecutor.executeSqlppUpdateOrDdl("CREATE nodegroup " + nodeGroup + " on asterix_nc2;", format);
// create original dataset
testExecutor.executeSqlppUpdateOrDdl("CREATE TYPE KeyType AS { id: int };", format);
- testExecutor.executeSqlppUpdateOrDdl(
- "CREATE DATASET " + datasetName + "(KeyType) PRIMARY KEY id on " + nodeGroup + ";", format);
+ testExecutor.executeSqlppUpdateOrDdl("CREATE DATASET " + datasetName
+ + "(KeyType) PRIMARY KEY id WITH {\"node-group\":{\"name\":\"" + nodeGroup + "\"}};", format);
// find source dataset
Dataset sourceDataset;
MetadataProvider metadataProvider = MetadataProvider.create(appCtx, null);
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/NullMissingTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/NullMissingTest.java
index 3b4f78f..55a1a80 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/NullMissingTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/NullMissingTest.java
@@ -31,7 +31,6 @@
import org.apache.asterix.common.annotations.MissingNullInOutFunction;
import org.apache.asterix.om.functions.BuiltinFunctions;
-import org.apache.asterix.om.functions.FunctionInfo;
import org.apache.asterix.om.functions.IFunctionDescriptor;
import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
import org.apache.asterix.om.types.ATypeTag;
@@ -40,6 +39,7 @@
import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
import org.apache.asterix.runtime.functions.FunctionCollection;
import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IEvaluatorContext;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
@@ -68,7 +68,7 @@
private static final Logger LOGGER = LogManager.getLogger();
// those are the functions that need IATypes of their args and use them in the function constructor
- private static Set<FunctionInfo> functionsRequiringTypes = new HashSet<>();
+ private static Set<FunctionIdentifier> functionsRequiringTypes = new HashSet<>();
@Parameters(name = "NullMissingTest {index}: {0}")
public static Collection<Object[]> tests() {
@@ -132,7 +132,7 @@
Pair<IScalarEvaluatorFactory[], IAType[]> argumentsAndTypesPair = argEvalFactoryIterator.next();
// Set the IAType if it's needed
- if (functionsRequiringTypes.contains(new FunctionInfo(funcDesc.getIdentifier(), true))) {
+ if (functionsRequiringTypes.contains(funcDesc.getIdentifier())) {
funcDesc.setImmutableStates((Object[]) argumentsAndTypesPair.second);
}
@@ -193,21 +193,21 @@
@BeforeClass
public static void buildFunctionsRequiringType() {
// Those are the functions that need IATypes of their args and use them in the function constructor
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.ARRAY_POSITION, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.ARRAY_CONTAINS, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.ARRAY_SORT, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.ARRAY_DISTINCT, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.ARRAY_EXCEPT, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.EQ, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.LT, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.GT, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.GE, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.LE, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.NEQ, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.MISSING_IF, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.NAN_IF, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.NEGINF_IF, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.NULL_IF, true));
- functionsRequiringTypes.add(new FunctionInfo(BuiltinFunctions.POSINF_IF, true));
+ functionsRequiringTypes.add(BuiltinFunctions.ARRAY_POSITION);
+ functionsRequiringTypes.add(BuiltinFunctions.ARRAY_CONTAINS);
+ functionsRequiringTypes.add(BuiltinFunctions.ARRAY_SORT);
+ functionsRequiringTypes.add(BuiltinFunctions.ARRAY_DISTINCT);
+ functionsRequiringTypes.add(BuiltinFunctions.ARRAY_EXCEPT);
+ functionsRequiringTypes.add(BuiltinFunctions.EQ);
+ functionsRequiringTypes.add(BuiltinFunctions.LT);
+ functionsRequiringTypes.add(BuiltinFunctions.GT);
+ functionsRequiringTypes.add(BuiltinFunctions.GE);
+ functionsRequiringTypes.add(BuiltinFunctions.LE);
+ functionsRequiringTypes.add(BuiltinFunctions.NEQ);
+ functionsRequiringTypes.add(BuiltinFunctions.MISSING_IF);
+ functionsRequiringTypes.add(BuiltinFunctions.NAN_IF);
+ functionsRequiringTypes.add(BuiltinFunctions.NEGINF_IF);
+ functionsRequiringTypes.add(BuiltinFunctions.NULL_IF);
+ functionsRequiringTypes.add(BuiltinFunctions.POSINF_IF);
}
}
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/DataverseNameParserTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/DataverseNameParserTest.java
new file mode 100644
index 0000000..1cd41ae
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/DataverseNameParserTest.java
@@ -0,0 +1,71 @@
+/*
+ * 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.test.sqlpp;
+
+import java.util.List;
+
+import org.apache.asterix.common.metadata.DataverseName;
+import org.apache.asterix.common.metadata.DataverseNameTest;
+import org.apache.asterix.lang.common.base.Expression;
+import org.apache.asterix.lang.common.base.IParser;
+import org.apache.asterix.lang.common.base.IParserFactory;
+import org.apache.asterix.lang.common.base.IRewriterFactory;
+import org.apache.asterix.lang.common.base.IStatementRewriter;
+import org.apache.asterix.lang.common.expression.FieldAccessor;
+import org.apache.asterix.lang.common.expression.VariableExpr;
+import org.apache.asterix.lang.sqlpp.parser.SqlppParserFactory;
+import org.apache.asterix.lang.sqlpp.rewrites.SqlppRewriterFactory;
+import org.junit.Assert;
+
+public class DataverseNameParserTest extends DataverseNameTest {
+
+ private final IParserFactory parserFactory = new SqlppParserFactory();
+
+ private final IRewriterFactory rewriterFactory = new SqlppRewriterFactory(parserFactory);
+
+ @Override
+ protected void testDataverseNameImpl(DataverseName dataverseName, List<String> parts, String expectedCanonicalForm,
+ String expectedDisplayForm) throws Exception {
+ super.testDataverseNameImpl(dataverseName, parts, expectedCanonicalForm, expectedDisplayForm);
+
+ String displayForm = dataverseName.toString();
+
+ // check parse-ability of the display form
+ IParser parser = parserFactory.createParser(displayForm);
+ Expression expr = parser.parseExpression();
+ IStatementRewriter rewriter = rewriterFactory.createStatementRewriter();
+
+ for (int i = parts.size() - 1; i >= 0; i--) {
+ String part = parts.get(i);
+ String parsedPart;
+ if (i > 0) {
+ Assert.assertEquals(Expression.Kind.FIELD_ACCESSOR_EXPRESSION, expr.getKind());
+ FieldAccessor faExpr = (FieldAccessor) expr;
+ parsedPart = faExpr.getIdent().getValue();
+ expr = faExpr.getExpr();
+ } else {
+ Assert.assertEquals(Expression.Kind.VARIABLE_EXPRESSION, expr.getKind());
+ VariableExpr varExpr = (VariableExpr) expr;
+ parsedPart = rewriter.toFunctionParameterName(varExpr.getVar());
+ }
+ Assert.assertEquals("unexpected parsed part at position " + i + " in " + parts, part, parsedPart);
+ }
+ }
+}
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/ParserTestExecutor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/ParserTestExecutor.java
index c454993..8b6f05f 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/ParserTestExecutor.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/sqlpp/ParserTestExecutor.java
@@ -29,11 +29,14 @@
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.asterix.common.config.GlobalConfig;
import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.lang.common.base.IParser;
import org.apache.asterix.lang.common.base.IParserFactory;
@@ -41,6 +44,7 @@
import org.apache.asterix.lang.common.base.IRewriterFactory;
import org.apache.asterix.lang.common.base.Statement;
import org.apache.asterix.lang.common.rewrites.LangRewritingContext;
+import org.apache.asterix.lang.common.statement.CreateFunctionStatement;
import org.apache.asterix.lang.common.statement.DataverseDecl;
import org.apache.asterix.lang.common.statement.FunctionDecl;
import org.apache.asterix.lang.common.statement.Query;
@@ -52,6 +56,8 @@
import org.apache.asterix.metadata.bootstrap.MetadataBuiltinEntities;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
+import org.apache.asterix.metadata.entities.Dataverse;
+import org.apache.asterix.metadata.entities.Function;
import org.apache.asterix.test.common.ComparisonException;
import org.apache.asterix.test.common.TestExecutor;
import org.apache.asterix.testframework.context.TestCaseContext;
@@ -70,6 +76,7 @@
private IParserFactory sqlppParserFactory = new SqlppParserFactory();
private IRewriterFactory sqlppRewriterFactory = new SqlppRewriterFactory(sqlppParserFactory);
+ private Set<FunctionSignature> createdFunctions = new HashSet<>();
@Override
public void executeTest(String actualPath, TestCaseContext testCaseCtx, ProcessBuilder pb,
@@ -130,8 +137,11 @@
GlobalConfig.ASTERIX_LOGGER.info(queryFile.toString());
try {
List<Statement> statements = parser.parse();
- List<FunctionDecl> functions = getDeclaredFunctions(statements);
DataverseName dvName = getDefaultDataverse(statements);
+ List<FunctionDecl> functions = getDeclaredFunctions(statements, dvName);
+ List<FunctionSignature> createdFunctionsList = getCreatedFunctions(statements, dvName);
+ createdFunctions.addAll(createdFunctionsList);
+
MetadataProvider metadataProvider = mock(MetadataProvider.class);
@SuppressWarnings("unchecked")
@@ -139,6 +149,15 @@
when(metadataProvider.getDefaultDataverseName()).thenReturn(dvName);
when(metadataProvider.getConfig()).thenReturn(config);
when(config.get(FunctionUtil.IMPORT_PRIVATE_FUNCTIONS)).thenReturn("true");
+ when(metadataProvider.findDataverse(any(DataverseName.class))).thenAnswer(new Answer<Dataverse>() {
+ @Override
+ public Dataverse answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ final Dataverse mockDataverse = mock(Dataverse.class);
+ when(mockDataverse.getDataverseName()).thenReturn((DataverseName) args[0]);
+ return mockDataverse;
+ }
+ });
when(metadataProvider.findDataset(any(DataverseName.class), anyString())).thenAnswer(new Answer<Dataset>() {
@Override
public Dataset answer(InvocationOnMock invocation) {
@@ -149,6 +168,20 @@
return mockDataset;
}
});
+ when(metadataProvider.lookupUserDefinedFunction(any(FunctionSignature.class)))
+ .thenAnswer(new Answer<Function>() {
+ @Override
+ public Function answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ FunctionSignature fs = (FunctionSignature) args[0];
+ if (!createdFunctions.contains(fs)) {
+ return null;
+ }
+ Function mockFunction = mock(Function.class);
+ when(mockFunction.getSignature()).thenReturn(fs);
+ return mockFunction;
+ }
+ });
for (Statement st : statements) {
if (st.getKind() == Statement.Kind.QUERY) {
@@ -177,16 +210,38 @@
}
// Extracts declared functions.
- private List<FunctionDecl> getDeclaredFunctions(List<Statement> statements) {
- List<FunctionDecl> functionDecls = new ArrayList<FunctionDecl>();
+ private List<FunctionDecl> getDeclaredFunctions(List<Statement> statements, DataverseName defaultDataverseName) {
+ List<FunctionDecl> functionDecls = new ArrayList<>();
for (Statement st : statements) {
if (st.getKind() == Statement.Kind.FUNCTION_DECL) {
- functionDecls.add((FunctionDecl) st);
+ FunctionDecl fds = (FunctionDecl) st;
+ FunctionSignature signature = fds.getSignature();
+ if (signature.getDataverseName() == null) {
+ signature.setDataverseName(defaultDataverseName);
+ }
+ functionDecls.add(fds);
}
}
return functionDecls;
}
+ // Extracts created functions.
+ private List<FunctionSignature> getCreatedFunctions(List<Statement> statements,
+ DataverseName defaultDataverseName) {
+ List<FunctionSignature> createdFunctions = new ArrayList<>();
+ for (Statement st : statements) {
+ if (st.getKind() == Statement.Kind.CREATE_FUNCTION) {
+ CreateFunctionStatement cfs = (CreateFunctionStatement) st;
+ FunctionSignature signature = cfs.getFunctionSignature();
+ if (signature.getDataverseName() == null) {
+ signature = new FunctionSignature(defaultDataverseName, signature.getName(), signature.getArity());
+ }
+ createdFunctions.add(signature);
+ }
+ }
+ return createdFunctions;
+ }
+
// Gets the default dataverse for the input statements.
private DataverseName getDefaultDataverse(List<Statement> statements) {
for (Statement st : statements) {
@@ -208,14 +263,19 @@
+ "org.apache.asterix.metadata.declared.MetadataProvider, "
+ "org.apache.asterix.lang.common.rewrites.LangRewritingContext, " + "java.util.Collection)",
declaredFunctions, topExpr, metadataProvider, context, null);
- PA.invokeMethod(rewriter, "inlineColumnAlias()");
+ PA.invokeMethod(rewriter, "resolveFunctionCalls()");
PA.invokeMethod(rewriter, "generateColumnNames()");
PA.invokeMethod(rewriter, "substituteGroupbyKeyExpression()");
PA.invokeMethod(rewriter, "rewriteGroupBys()");
PA.invokeMethod(rewriter, "rewriteSetOperations()");
+ PA.invokeMethod(rewriter, "inlineColumnAlias()");
+ PA.invokeMethod(rewriter, "rewriteWindowExpressions()");
+ PA.invokeMethod(rewriter, "rewriteGroupingSets()");
PA.invokeMethod(rewriter, "variableCheckAndRewrite()");
+ PA.invokeMethod(rewriter, "extractAggregatesFromCaseExpressions()");
PA.invokeMethod(rewriter, "rewriteGroupByAggregationSugar()");
-
+ PA.invokeMethod(rewriter, "rewriteWindowAggregationSugar()");
+ PA.invokeMethod(rewriter, "rewriteSpecialFunctionNames()");
}
}
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/IndexDropOperatorNodePushableTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/IndexDropOperatorNodePushableTest.java
index f7f7207..d08a960 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/IndexDropOperatorNodePushableTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/IndexDropOperatorNodePushableTest.java
@@ -105,9 +105,9 @@
List<List<String>> partitioningKeys = new ArrayList<>();
partitioningKeys.add(Collections.singletonList("key"));
Dataset dataset = new Dataset(DATAVERSE_NAME, DATASET_NAME, DATAVERSE_NAME, DATA_TYPE_NAME, NODE_GROUP_NAME,
- NoMergePolicyFactory.NAME,
- null, new InternalDatasetDetails(null, InternalDatasetDetails.PartitioningStrategy.HASH,
- partitioningKeys, null, null, null, false, null),
+ NoMergePolicyFactory.NAME, null,
+ new InternalDatasetDetails(null, InternalDatasetDetails.PartitioningStrategy.HASH, partitioningKeys,
+ null, null, null, false, null, null),
null, DatasetConfig.DatasetType.INTERNAL, DATASET_ID, 0);
// create dataset
TestNodeController.PrimaryIndexInfo indexInfo = nc.createPrimaryIndex(dataset, KEY_TYPES, RECORD_TYPE,
diff --git a/asterixdb/asterix-app/src/test/resources/TweetSent/roundtrip.py b/asterixdb/asterix-app/src/test/resources/TweetSent/roundtrip.py
new file mode 100644
index 0000000..37350be
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/TweetSent/roundtrip.py
@@ -0,0 +1,24 @@
+# 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.
+
+class Tests(object):
+
+ def roundtrip(self, *args):
+ return args
+
+ def warning(self):
+ raise ArithmeticError("oof")
diff --git a/asterixdb/asterix-app/src/test/resources/cc-compression.conf b/asterixdb/asterix-app/src/test/resources/cc-compression.conf
index 105d313..a3047a0 100644
--- a/asterixdb/asterix-app/src/test/resources/cc-compression.conf
+++ b/asterixdb/asterix-app/src/test/resources/cc-compression.conf
@@ -38,7 +38,6 @@
storage.buffercache.pagesize=32KB
storage.buffercache.size=128MB
storage.memorycomponent.globalbudget=512MB
-storage.compression.block=snappy
[cc]
address = 127.0.0.1
@@ -51,8 +50,9 @@
compiler.framesize=32KB
compiler.sortmemory=320KB
compiler.groupmemory=160KB
-compiler.joinmemory=256KB
+compiler.joinmemory=768KB
compiler.textsearchmemory=160KB
compiler.windowmemory=192KB
messaging.frame.size=4096
messaging.frame.count=512
+storage.compression.block=snappy
diff --git a/asterixdb/asterix-app/src/test/resources/cc-ssl.conf b/asterixdb/asterix-app/src/test/resources/cc-ssl.conf
index 499e9fc..1c0a68f 100644
--- a/asterixdb/asterix-app/src/test/resources/cc-ssl.conf
+++ b/asterixdb/asterix-app/src/test/resources/cc-ssl.conf
@@ -62,7 +62,7 @@
compiler.framesize=32KB
compiler.sortmemory=320KB
compiler.groupmemory=160KB
-compiler.joinmemory=256KB
+compiler.joinmemory=768KB
compiler.textsearchmemory=160KB
compiler.windowmemory=192KB
messaging.frame.size=4096
diff --git a/asterixdb/asterix-app/src/test/resources/cc-storage.conf b/asterixdb/asterix-app/src/test/resources/cc-storage.conf
index 41296a7..9e869c7 100644
--- a/asterixdb/asterix-app/src/test/resources/cc-storage.conf
+++ b/asterixdb/asterix-app/src/test/resources/cc-storage.conf
@@ -36,7 +36,6 @@
storage.buffercache.pagesize=32KB
storage.buffercache.size=128MB
storage.memorycomponent.globalbudget=512MB
-storage.compression.block=snappy
[cc]
address = 127.0.0.1
@@ -54,5 +53,6 @@
compiler.windowmemory=192KB
messaging.frame.size=4096
messaging.frame.count=512
+storage.compression.block=snappy
txn.log.checkpoint.pollfrequency=10
txn.dataset.checkpoint.interval=10
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/cc.conf b/asterixdb/asterix-app/src/test/resources/cc.conf
index a113e3a..158eaa0 100644
--- a/asterixdb/asterix-app/src/test/resources/cc.conf
+++ b/asterixdb/asterix-app/src/test/resources/cc.conf
@@ -18,7 +18,8 @@
[nc/asterix_nc1]
txn.log.dir=target/tmp/asterix_nc1/txnlog
core.dump.dir=target/tmp/asterix_nc1/coredump
-iodevices=target/tmp/asterix_nc1/iodevice1,../asterix-server/target/tmp/asterix_nc1/iodevice2
+iodevices=target/tmp/asterix_nc1/iodevice1,
+iodevices=../asterix-server/target/tmp/asterix_nc1/iodevice2
nc.api.port=19004
#jvm.args=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5006
diff --git a/asterixdb/asterix-app/src/test/resources/dapd/denorm_user_event.aql b/asterixdb/asterix-app/src/test/resources/dapd/denorm_user_event.aql
index 053fc58..fad1243 100644
--- a/asterixdb/asterix-app/src/test/resources/dapd/denorm_user_event.aql
+++ b/asterixdb/asterix-app/src/test/resources/dapd/denorm_user_event.aql
@@ -45,8 +45,8 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
-declare dataset Users(UserType) primary key u_name on group1;
-declare dataset Events(EventType) primary key e_name on group1;
+declare dataset Users(UserType) primary key u_name with {"node-group":{"name":"group1"}};
+declare dataset Events(EventType) primary key e_name with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/denorm_user_event.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/dapd/q1.aql b/asterixdb/asterix-app/src/test/resources/dapd/q1.aql
index e0de0eb..b30641d 100644
--- a/asterixdb/asterix-app/src/test/resources/dapd/q1.aql
+++ b/asterixdb/asterix-app/src/test/resources/dapd/q1.aql
@@ -41,7 +41,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
-declare dataset User(UserType) primary key name on group1;
+declare dataset User(UserType) primary key name with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/q1.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/dapd/q2.aql b/asterixdb/asterix-app/src/test/resources/dapd/q2.aql
index 3b46729..0b8ea6c 100644
--- a/asterixdb/asterix-app/src/test/resources/dapd/q2.aql
+++ b/asterixdb/asterix-app/src/test/resources/dapd/q2.aql
@@ -55,7 +55,7 @@
drop dataset Event;
declare dataset Event(EventType)
- primary key event_id on group1;
+ primary key event_id with {"node-group":{"name":"group1"}};
load dataset Event
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/demo0927/local/dataset-filter-int.aql b/asterixdb/asterix-app/src/test/resources/demo0927/local/dataset-filter-int.aql
index dfd4d1f..88dc20f 100644
--- a/asterixdb/asterix-app/src/test/resources/demo0927/local/dataset-filter-int.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo0927/local/dataset-filter-int.aql
@@ -38,7 +38,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/mycustomers.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo0927/local/dataset-filter-str.aql b/asterixdb/asterix-app/src/test/resources/demo0927/local/dataset-filter-str.aql
index dea955e..a281084 100644
--- a/asterixdb/asterix-app/src/test/resources/demo0927/local/dataset-filter-str.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo0927/local/dataset-filter-str.aql
@@ -38,7 +38,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/mycustomers.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo0927/local/join-cust-ord.aql b/asterixdb/asterix-app/src/test/resources/demo0927/local/join-cust-ord.aql
index e2dca16..1c66f44 100644
--- a/asterixdb/asterix-app/src/test/resources/demo0927/local/join-cust-ord.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo0927/local/join-cust-ord.aql
@@ -48,9 +48,9 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/custorder.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/01-load-cust.aql b/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/01-load-cust.aql
index e309fec..e295730 100644
--- a/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/01-load-cust.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/01-load-cust.aql
@@ -38,7 +38,7 @@
declare nodegroup group1 on rainbow-01, rainbow-02, rainbow-03, rainbow-04, rainbow-05;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
load dataset Customers from rainbow-01:"/home/hyracks/demo-data/customerData.json";
// delete dataset Customers;
diff --git a/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/02-filter-cust.aql b/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/02-filter-cust.aql
index 60fe34c..ad3a3c4 100644
--- a/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/02-filter-cust.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/02-filter-cust.aql
@@ -38,7 +38,7 @@
declare nodegroup group1 on rainbow-01, rainbow-02, rainbow-03, rainbow-04, rainbow-05;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
write output to rainbow-01:"/home/hyracks/mycustomers.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/03-load-ord.aql b/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/03-load-ord.aql
index 5bc0242..299e2b5 100644
--- a/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/03-load-ord.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/03-load-ord.aql
@@ -30,7 +30,7 @@
declare nodegroup group1 on rainbow-01, rainbow-02, rainbow-03, rainbow-04, rainbow-05;
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
load dataset Orders from rainbow-01:"/home/hyracks/demo-data/orderData.json";
// delete dataset Orders;
diff --git a/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/04-join-custord.aql b/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/04-join-custord.aql
index 2c0a184..abe03f4 100644
--- a/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/04-join-custord.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo0927/rainbow/04-join-custord.aql
@@ -48,9 +48,9 @@
declare nodegroup group1 on rainbow-01, rainbow-02, rainbow-03, rainbow-04, rainbow-05;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
write output to rainbow-01:"/home/hyracks/custorder.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo1112/local/01-load-cust.aql b/asterixdb/asterix-app/src/test/resources/demo1112/local/01-load-cust.aql
index 768c844..78fb98a 100644
--- a/asterixdb/asterix-app/src/test/resources/demo1112/local/01-load-cust.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo1112/local/01-load-cust.aql
@@ -38,7 +38,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
load dataset Customers
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/demo1112/local/02-filter-cust.aql b/asterixdb/asterix-app/src/test/resources/demo1112/local/02-filter-cust.aql
index 5feb7ac..1127abe 100644
--- a/asterixdb/asterix-app/src/test/resources/demo1112/local/02-filter-cust.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo1112/local/02-filter-cust.aql
@@ -38,7 +38,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/mycustomers.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo1112/local/03-load-ord.aql b/asterixdb/asterix-app/src/test/resources/demo1112/local/03-load-ord.aql
index 6866f18..9dc69135b 100644
--- a/asterixdb/asterix-app/src/test/resources/demo1112/local/03-load-ord.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo1112/local/03-load-ord.aql
@@ -30,7 +30,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
load dataset Orders
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/demo1112/local/04-join-custord.aql b/asterixdb/asterix-app/src/test/resources/demo1112/local/04-join-custord.aql
index 90d5543..8033a5d 100644
--- a/asterixdb/asterix-app/src/test/resources/demo1112/local/04-join-custord.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo1112/local/04-join-custord.aql
@@ -48,9 +48,9 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/custorder.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/01-load-cust.aql b/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/01-load-cust.aql
index 6a89f63..8858936 100644
--- a/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/01-load-cust.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/01-load-cust.aql
@@ -38,7 +38,7 @@
declare nodegroup group1 on rainbow-01, rainbow-02, rainbow-03, rainbow-04, rainbow-05;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
load dataset Customers from rainbow-01:"/home/onose/demo-data/customerData.adm";
// drop dataset Customers;
diff --git a/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/03-load-ord.aql b/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/03-load-ord.aql
index 2d6db81..2fb2740 100644
--- a/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/03-load-ord.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/03-load-ord.aql
@@ -30,6 +30,6 @@
declare nodegroup group1 on rainbow-01, rainbow-02, rainbow-03, rainbow-04, rainbow-05;
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
load dataset Orders from rainbow-01:"/home/onose/demo-data/orderData.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/04-join-custord.aql b/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/04-join-custord.aql
index ea6756a..0fd3e75 100644
--- a/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/04-join-custord.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/04-join-custord.aql
@@ -48,9 +48,9 @@
declare nodegroup group1 on rainbow-01, rainbow-02, rainbow-03, rainbow-04, rainbow-05;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
write output to rainbow-01:"/home/onose/hyracks-rainbow/results/custorder.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/05-count-custord.aql b/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/05-count-custord.aql
index 4eb0312..db3c485 100644
--- a/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/05-count-custord.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo1112/rainbow/05-count-custord.aql
@@ -48,9 +48,9 @@
declare nodegroup group1 on rainbow-01, rainbow-02, rainbow-03, rainbow-04, rainbow-05;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
write output to rainbow-01:"/home/onose/hyracks-rainbow/results/custorder.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo_aql/local/01-load-cust.aql b/asterixdb/asterix-app/src/test/resources/demo_aql/local/01-load-cust.aql
index 12a0207..0665520 100644
--- a/asterixdb/asterix-app/src/test/resources/demo_aql/local/01-load-cust.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo_aql/local/01-load-cust.aql
@@ -36,7 +36,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
load dataset Customers
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/demo_aql/local/02-filter-cust.aql b/asterixdb/asterix-app/src/test/resources/demo_aql/local/02-filter-cust.aql
index a4d27b1..c252b5a 100644
--- a/asterixdb/asterix-app/src/test/resources/demo_aql/local/02-filter-cust.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo_aql/local/02-filter-cust.aql
@@ -36,7 +36,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/02-filter-cust.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo_aql/local/03-count-cust-age.aql b/asterixdb/asterix-app/src/test/resources/demo_aql/local/03-count-cust-age.aql
index 9ba6702..a4a6c4d 100644
--- a/asterixdb/asterix-app/src/test/resources/demo_aql/local/03-count-cust-age.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo_aql/local/03-count-cust-age.aql
@@ -36,7 +36,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/03-count-cust-age.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo_aql/local/04-load-ord.aql b/asterixdb/asterix-app/src/test/resources/demo_aql/local/04-load-ord.aql
index b447d46..a9f6c6d 100644
--- a/asterixdb/asterix-app/src/test/resources/demo_aql/local/04-load-ord.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo_aql/local/04-load-ord.aql
@@ -30,7 +30,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
load dataset Orders
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/demo_aql/local/05-count-param1.aql b/asterixdb/asterix-app/src/test/resources/demo_aql/local/05-count-param1.aql
index a2e5eb1..722ea81 100644
--- a/asterixdb/asterix-app/src/test/resources/demo_aql/local/05-count-param1.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo_aql/local/05-count-param1.aql
@@ -30,7 +30,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/05-count-param1.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo_aql/local/06-count-custord.aql b/asterixdb/asterix-app/src/test/resources/demo_aql/local/06-count-custord.aql
index e72a79d..67be87d 100644
--- a/asterixdb/asterix-app/src/test/resources/demo_aql/local/06-count-custord.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo_aql/local/06-count-custord.aql
@@ -46,9 +46,9 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/06-count-custord.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo_aql/local/101-load-dblp.aql b/asterixdb/asterix-app/src/test/resources/demo_aql/local/101-load-dblp.aql
index b1dc420..94aafe0 100644
--- a/asterixdb/asterix-app/src/test/resources/demo_aql/local/101-load-dblp.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo_aql/local/101-load-dblp.aql
@@ -29,7 +29,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
load dataset DBLP
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/demo_aql/local/102-fuzzy-select.aql b/asterixdb/asterix-app/src/test/resources/demo_aql/local/102-fuzzy-select.aql
index 1d7a2ca..e0f0234 100644
--- a/asterixdb/asterix-app/src/test/resources/demo_aql/local/102-fuzzy-select.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo_aql/local/102-fuzzy-select.aql
@@ -29,7 +29,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/102-fuzzy-select.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo_aql/local/110-self-join-dblp.aql b/asterixdb/asterix-app/src/test/resources/demo_aql/local/110-self-join-dblp.aql
index df6f75a..8d953b8 100644
--- a/asterixdb/asterix-app/src/test/resources/demo_aql/local/110-self-join-dblp.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo_aql/local/110-self-join-dblp.aql
@@ -29,7 +29,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/110-self-join-dblp.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo_aql/rainbow/02-filter-cust.aql b/asterixdb/asterix-app/src/test/resources/demo_aql/rainbow/02-filter-cust.aql
index 9762c2e..2154c97 100644
--- a/asterixdb/asterix-app/src/test/resources/demo_aql/rainbow/02-filter-cust.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo_aql/rainbow/02-filter-cust.aql
@@ -36,7 +36,7 @@
declare nodegroup group1 on rainbow-01, rainbow-02, rainbow-03, rainbow-04, rainbow-05;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
write output to rainbow-01:"/home/onose/hyracks-rainbow/results/02-filter-cust.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo_aql/rainbow/05-count-param1.aql b/asterixdb/asterix-app/src/test/resources/demo_aql/rainbow/05-count-param1.aql
index 3371aea..22d8b7b 100644
--- a/asterixdb/asterix-app/src/test/resources/demo_aql/rainbow/05-count-param1.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo_aql/rainbow/05-count-param1.aql
@@ -30,7 +30,7 @@
declare nodegroup group1 on rainbow-01, rainbow-02, rainbow-03, rainbow-04, rainbow-05;
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
write output to rainbow-01:"/home/onose/hyracks-rainbow/results/05-count-param1.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/demo_aql/rainbow/101-load-dblp.aql b/asterixdb/asterix-app/src/test/resources/demo_aql/rainbow/101-load-dblp.aql
index 1d865ff..d1efd80 100644
--- a/asterixdb/asterix-app/src/test/resources/demo_aql/rainbow/101-load-dblp.aql
+++ b/asterixdb/asterix-app/src/test/resources/demo_aql/rainbow/101-load-dblp.aql
@@ -30,7 +30,7 @@
declare nodegroup group1 on rainbow-01, rainbow-02, rainbow-03, rainbow-04, rainbow-05;
declare dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
load dataset DBLP from
rainbow-01:"/home/onose/demo-data/dblp-id.txt" delimited by ":";
diff --git a/asterixdb/asterix-app/src/test/resources/dmlts/scripts/enlist-scan-cust.aql b/asterixdb/asterix-app/src/test/resources/dmlts/scripts/enlist-scan-cust.aql
index e3baaea..d8eb051 100644
--- a/asterixdb/asterix-app/src/test/resources/dmlts/scripts/enlist-scan-cust.aql
+++ b/asterixdb/asterix-app/src/test/resources/dmlts/scripts/enlist-scan-cust.aql
@@ -42,7 +42,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
enlist dataset Customers;
diff --git a/asterixdb/asterix-app/src/test/resources/dmlts/scripts/load-cust.aql b/asterixdb/asterix-app/src/test/resources/dmlts/scripts/load-cust.aql
index a74bdae..7c27cb3 100644
--- a/asterixdb/asterix-app/src/test/resources/dmlts/scripts/load-cust.aql
+++ b/asterixdb/asterix-app/src/test/resources/dmlts/scripts/load-cust.aql
@@ -42,7 +42,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
load dataset Customers
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/amerix/30-filter-dblp.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/amerix/30-filter-dblp.aql
index 64b9e35..5eb85d6 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/amerix/30-filter-dblp.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/amerix/30-filter-dblp.aql
@@ -29,7 +29,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/amerix.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/dblp/000-1-char-at.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/dblp/000-1-char-at.aql
index 450ef16..114f9c9 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/dblp/000-1-char-at.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/dblp/000-1-char-at.aql
@@ -29,7 +29,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/dblp.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/dblp/030-filter.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/dblp/030-filter.aql
index b601756..6c62d26 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/dblp/030-filter.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/dblp/030-filter.aql
@@ -29,7 +29,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
write output to asterix_nc1:'/tmp/dblp.adm';
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/010-load-dblp.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/010-load-dblp.aql
index 85d29ce..fcceee1 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/010-load-dblp.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/010-load-dblp.aql
@@ -29,7 +29,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
// load dataset DBLP from asterix_nc1:'/asterix/asterix-app/data/pub-small/dblp-small-id.txt'
load dataset DBLP
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/020-drop-dblp.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/020-drop-dblp.aql
index 407f455..b59ada2 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/020-drop-dblp.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/020-drop-dblp.aql
@@ -29,6 +29,6 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
drop dataset DBLP;
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/030-filter-dblp.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/030-filter-dblp.aql
index 3dea415..b97bfb7 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/030-filter-dblp.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/030-filter-dblp.aql
@@ -29,7 +29,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
write output to asterix_nc1:'/tmp/pub.adm';
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/040-load-csx.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/040-load-csx.aql
index 28d08f3..ccebb9e 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/040-load-csx.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/040-load-csx.aql
@@ -29,7 +29,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset CSX(CSXType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
// load dataset CSX from asterix_nc1:'/asterix/asterix-app/data/pub-small/csx-small-id.txt'
load dataset CSX
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/050-drop-csx.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/050-drop-csx.aql
index 03c0b00..3e48c17 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/050-drop-csx.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/050-drop-csx.aql
@@ -29,6 +29,6 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset CSX(CSXType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
drop dataset CSX;
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/060-filter-csx.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/060-filter-csx.aql
index bbe1ad9..aad3065 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/060-filter-csx.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/060-filter-csx.aql
@@ -31,7 +31,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset CSX(CSXType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
write output to asterix_nc1:'/tmp/pub.adm';
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/070-join-aql.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/070-join-aql.aql
index c49131b..9c8e762 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/070-join-aql.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/070-join-aql.aql
@@ -37,7 +37,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
declare dataset CSX(CSXType)
primary key id on group1;
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/080-join-op.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/080-join-op.aql
index 802accf..bd8d48c 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/080-join-op.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/pub/080-join-op.aql
@@ -37,7 +37,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
declare dataset CSX(CSXType)
primary key id on group1;
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/users-visitors/030-filter-users.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/users-visitors/030-filter-users.aql
index a73db6e..3051b11 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/users-visitors/030-filter-users.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/users-visitors/030-filter-users.aql
@@ -28,7 +28,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Users(UserType)
- primary key uid on group1;
+ primary key uid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:'/tmp/users.adm';
diff --git a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/users-visitors/060-fililter-visitors.aql b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/users-visitors/060-fililter-visitors.aql
index d5634e7..2f3e103 100644
--- a/asterixdb/asterix-app/src/test/resources/fuzzyjoin/users-visitors/060-fililter-visitors.aql
+++ b/asterixdb/asterix-app/src/test/resources/fuzzyjoin/users-visitors/060-fililter-visitors.aql
@@ -28,7 +28,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Visitors(VisitorType)
- primary key vid on group1;
+ primary key vid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:'/tmp/visitors.adm';
diff --git a/asterixdb/asterix-app/src/test/resources/metadata/queries/basic/meta13/meta13.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/metadata/queries/basic/meta13/meta13.1.ddl.aql
index 52d7d19..8cf7085 100644
--- a/asterixdb/asterix-app/src/test/resources/metadata/queries/basic/meta13/meta13.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/metadata/queries/basic/meta13/meta13.1.ddl.aql
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Create functions and drop that function and query metadata
+ * Description : Create functions and drop that function and query metadata
* : to verify entries in Function dataset for the dropped UDF.
* Expected Res : Success
* Date : Sep 17 2012
diff --git a/asterixdb/asterix-app/src/test/resources/metadata/queries/transaction/failure_subsequent_no_execution.aql b/asterixdb/asterix-app/src/test/resources/metadata/queries/transaction/failure_subsequent_no_execution.aql
index 43f9417..9f4ac09 100644
--- a/asterixdb/asterix-app/src/test/resources/metadata/queries/transaction/failure_subsequent_no_execution.aql
+++ b/asterixdb/asterix-app/src/test/resources/metadata/queries/transaction/failure_subsequent_no_execution.aql
@@ -55,7 +55,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Customers(CustomerType)
- primary key cid, name on group1;
+ primary key cid, name with {"node-group":{"name":"group1"}};
create nodegroup group1 on asterix_nc1, asterix_nc2;
diff --git a/asterixdb/asterix-app/src/test/resources/metadata/queries/transaction/failure_subsequent_no_execution/failure_subsequent_no_execution.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/metadata/queries/transaction/failure_subsequent_no_execution/failure_subsequent_no_execution.1.ddl.aql
index 43f9417..9f4ac09 100644
--- a/asterixdb/asterix-app/src/test/resources/metadata/queries/transaction/failure_subsequent_no_execution/failure_subsequent_no_execution.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/metadata/queries/transaction/failure_subsequent_no_execution/failure_subsequent_no_execution.1.ddl.aql
@@ -55,7 +55,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Customers(CustomerType)
- primary key cid, name on group1;
+ primary key cid, name with {"node-group":{"name":"group1"}};
create nodegroup group1 on asterix_nc1, asterix_nc2;
diff --git a/asterixdb/asterix-app/src/test/resources/metadata/results/basic/meta06/meta06.1.adm b/asterixdb/asterix-app/src/test/resources/metadata/results/basic/meta06/meta06.1.adm
index 9df885d..a7ebb36 100644
--- a/asterixdb/asterix-app/src/test/resources/metadata/results/basic/meta06/meta06.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/metadata/results/basic/meta06/meta06.1.adm
@@ -1 +1 @@
-{ "DataverseName": "testdv", "Name": "fun01", "Arity": "0", "Params": [ ], "ReturnType": "any", "Definition": "\"This is an AQL Bodied UDF\"", "Language": "AQL", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ ] }
\ No newline at end of file
+{ "DataverseName": "testdv", "Name": "fun01", "Arity": "0", "Params": [ ], "ReturnType": "", "Definition": "\"This is an AQL Bodied UDF\"", "Language": "AQL", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ] }
diff --git a/asterixdb/asterix-app/src/test/resources/misc/split01.aql b/asterixdb/asterix-app/src/test/resources/misc/split01.aql
index 804611a..5b48a7a 100644
--- a/asterixdb/asterix-app/src/test/resources/misc/split01.aql
+++ b/asterixdb/asterix-app/src/test/resources/misc/split01.aql
@@ -48,9 +48,9 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/split01.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/cust-load.aql b/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/cust-load.aql
index 67fa306..33e089c 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/cust-load.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/cust-load.aql
@@ -35,7 +35,7 @@
declare nodegroup group1 on asterix_nc1;
declare dataset Dataverse(DataverseType)
- primary key dataverseName on group1;
+ primary key dataverseName with {"node-group":{"name":"group1"}};
for $c in dataset('Dataverse')
return $c
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/emp-load.aql b/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/emp-load.aql
index 8919f97..e8fc76b 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/emp-load.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/emp-load.aql
@@ -38,6 +38,6 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset Emp(EmpType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
load dataset Emp from asterix_nc1:"/home/yasser/Dropbox/Research/data/EmpData.json";
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/join-01.aql b/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/join-01.aql
index a4638db..b4fa55f 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/join-01.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/join-01.aql
@@ -52,9 +52,9 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/home/yasser/Dropbox/Research/data/results/result_join_1.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/numeric-drop.aql b/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/numeric-drop.aql
index 6b0ba33..2bc4cbd 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/numeric-drop.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/numeric-drop.aql
@@ -33,6 +33,6 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset Numeric(ExampleType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
drop dataset Numeric;
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/ord-load.aql b/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/ord-load.aql
index d36692f..d526f2f 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/ord-load.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/ord-load.aql
@@ -33,6 +33,6 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
load dataset Orders from asterix_nc1:"/home/yasser/Dropbox/Research/data/orderData.json";
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/spatial-scan.aql b/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/spatial-scan.aql
index c9c06989..b6bfbfd 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/spatial-scan.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/custord/local/spatial-scan.aql
@@ -34,7 +34,7 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset Spatial(ExampleType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/home/yasser/Dropbox/Research/data/results/result_spatial_3.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/alltables-loadAsOpen.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/alltables-loadAsOpen.aql
index 9eaccdf..8db50fb 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/alltables-loadAsOpen.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/alltables-loadAsOpen.aql
@@ -57,21 +57,21 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
//load dataset LineItems from asterix_nc1:"/home/yasser/Dropbox/Research/data/tpch_data/alldata/jsonformat/lineitem.json" pre-sorted;
//load dataset Orders from asterix_nc1:"/home/yasser/Dropbox/Research/data/tpch_data/alldata/jsonformat/orders.json" pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/alltablesAsopen-scan.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/alltablesAsopen-scan.aql
index 759c9c0..fc85cc2 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/alltablesAsopen-scan.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/alltablesAsopen-scan.aql
@@ -97,21 +97,21 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/home/yasser/Desktop/result_scan.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-drop.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-drop.aql
index 6a9ce68..f3e6a8c 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-drop.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-drop.aql
@@ -108,21 +108,21 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
drop dataset LineItems;
//drop dataset Orders;
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-load.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-load.aql
index bbb71d1..9ce82f5 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-load.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-load.aql
@@ -108,21 +108,21 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
//load dataset LineItems from asterix_nc1:"/home/yasser/Dropbox/Research/data/tpch_data/alldata/jsonformat/lineitem.json" pre-sorted;
//load dataset Orders from asterix_nc1:"/home/yasser/Dropbox/Research/data/tpch_data/alldata/jsonformat/orders.json" pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-q1.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-q1.aql
index 6f39833..2d7dc47 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-q1.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-q1.aql
@@ -42,7 +42,7 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/home/yasser/Dropbox/Research/data/results/result_tpch_closed_1.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-q3.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-q3.aql
index 4ec89d7..c07998f 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-q3.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-q3.aql
@@ -67,9 +67,9 @@
declare dataset LineItems(LineItemType)
primary key l_orderkey, l_linenumber on group1;
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/home/yasser/Dropbox/Research/data/results/result_tpch_closed_3.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-q9.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-q9.aql
index 7640d2a..9e66584 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-q9.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-q9.aql
@@ -92,17 +92,17 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/home/yasser/Dropbox/Research/data/results/result_tpch_closed_9.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-scan.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-scan.aql
index a861c09..66c30cc 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-scan.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/closedtables-scan.aql
@@ -108,21 +108,21 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/home/yasser/Desktop/result_scan.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-drop.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-drop.aql
index db51750..31a19c7 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-drop.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-drop.aql
@@ -57,21 +57,21 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
drop dataset LineItems;
//drop dataset Orders;
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-load.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-load.aql
index 3b06aa0..89b2590 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-load.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-load.aql
@@ -57,21 +57,21 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
//load dataset LineItems from asterix_nc1:"/home/yasser/Dropbox/Research/data/tpch_data/alldata/jsonformat/lineitem.json" pre-sorted;
//load dataset Orders from asterix_nc1:"/home/yasser/Dropbox/Research/data/tpch_data/alldata/jsonformat/orders.json" pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q1.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q1.aql
index 1b3fd79..cd41928 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q1.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q1.aql
@@ -28,7 +28,7 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/home/yasser/Dropbox/Research/data/results/result_tpch_open_1.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q3.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q3.aql
index 98296f8..9c319eb 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q3.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q3.aql
@@ -36,7 +36,7 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
primary key o_orderkey on group1;
declare dataset Customers(CustomerType)
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q5.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q5.aql
index 94876a5..408c5a5f 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q5.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q5.aql
@@ -48,17 +48,17 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/home/yasser/Dropbox/Research/data/results/result_tpch_open_5.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q9.aql b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q9.aql
index d2642ee..dccef80 100644
--- a/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q9.aql
+++ b/asterixdb/asterix-app/src/test/resources/nontagged/tpch/local/opentables-q9.aql
@@ -57,17 +57,17 @@
set format "org.apache.asterix.runtime.formats.nontagged.NonTaggedDataFormat";
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/home/yasser/Dropbox/Research/data/results/result_tpch_closed_9.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/common-expr-01.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/common-expr-01.sqlpp
new file mode 100644
index 0000000..30249d8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/common-expr-01.sqlpp
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+/*
+ * Test common expression extraction
+ */
+
+DROP DATAVERSE test IF EXISTS;
+CREATE DATAVERSE test;
+
+USE test;
+
+CREATE TYPE test.TestType AS
+{
+ id : INTEGER
+};
+
+CREATE DATASET t1(TestType) PRIMARY KEY id;
+
+WITH DT_PATTERN AS "YYYY-MM-DDThh:mm:ss"
+
+SELECT
+ v2.c11,
+ v1.c3,
+ SUM(v1.c4)
+FROM (
+ SELECT
+ c1,
+ c2,
+ GET_MONTH(PRINT_DATETIME(PARSE_DATETIME(c1,DT_PATTERN),DT_PATTERN)) AS c3,
+ (CASE WHEN CONTAINS(c2, "x") THEN 1 ELSE 0 END) AS c4
+ FROM test.t1
+) AS v1
+INNER JOIN (
+ SELECT
+ GET_HOUR(DURATION_FROM_INTERVAL(INTERVAL(
+ PARSE_DATETIME(PRINT_DATETIME(CURRENT_DATETIME(),DT_PATTERN),DT_PATTERN),
+ PARSE_DATETIME(MAX(PRINT_DATETIME(PARSE_DATETIME(t1.c5,DT_PATTERN),DT_PATTERN)),DT_PATTERN)
+ ))) AS c11
+ FROM test.t1
+) AS v2 ON TRUE
+WHERE
+ GET_DAY(DURATION_FROM_INTERVAL(INTERVAL(
+ PARSE_DATETIME(PRINT_DATETIME(CURRENT_DATETIME(),DT_PATTERN),DT_PATTERN),
+ PARSE_DATETIME(v1.c1,DT_PATTERN)
+ ))) <= 30
+ AND
+ (v1.c2 NOT IN ["a","b","c","d"])
+GROUP BY
+ v1.c3, v2.c11;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/consolidate-selects-complex.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/consolidate-selects-complex.aql
index c3a2988..9cbd549 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/consolidate-selects-complex.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/consolidate-selects-complex.aql
@@ -31,7 +31,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
load dataset DBLP
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/consolidate-selects-simple.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/consolidate-selects-simple.aql
index fa272ef..fe0c6de 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/consolidate-selects-simple.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/consolidate-selects-simple.aql
@@ -26,7 +26,7 @@
c_address: string,
c_nationkey: int32,
c_phone: string,
- c_acctbal: double,
+ c_acctbal: double,
c_mktsegment: string,
c_comment: string
}
@@ -34,7 +34,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/consolidate-selects-simple.aql";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/cust_group_no_agg.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/cust_group_no_agg.sqlpp
index 3c82655..3f64adf 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/cust_group_no_agg.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/cust_group_no_agg.sqlpp
@@ -39,7 +39,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Customers(CustomerType) primary key c_custkey on group1;
+create dataset Customers(CustomerType) primary key c_custkey WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/.adm";
select element name
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/denorm-cust-order.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/denorm-cust-order.sqlpp
index 508d6ec..5205324 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/denorm-cust-order.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/denorm-cust-order.sqlpp
@@ -57,9 +57,9 @@
asterix_nc1,
asterix_nc2
;
-create dataset Customers(CustomerType) primary key cid on group1;
+create dataset Customers(CustomerType) primary key cid WITH {"node-group":{"name":"group1"}};
-create dataset Orders(OrderType) primary key oid on group1;
+create dataset Orders(OrderType) primary key oid WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/custorder.adm";
select element {'cid':cid,'cust':(from g select c),'cnt-orders':count(o),'orders': (from g select o)}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_0.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_0.sqlpp
new file mode 100644
index 0000000..33d826b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_0.sqlpp
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+// filter on meta and query on record
+drop dataverse KeyVerse if exists;
+create dataverse KeyVerse;
+use KeyVerse;
+
+create type DocumentType as open{
+ attr: int64
+};
+
+create type KVMetaType as open{
+ `key`:string,
+ vbucket:int32,
+ cas:int64,
+ expiration:int32,
+ flags:int32,
+ revSeq:int64,
+ seq:int64,
+ lockTime:int32
+};
+
+create dataset KVStore(DocumentType) with meta(KVMetaType) primary key meta().`key` with filter on attr;
+
+select * from KVStore WHERE attr > 10;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_1.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_1.sqlpp
new file mode 100644
index 0000000..3a5743c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_1.sqlpp
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+// filter on meta and query on meta
+drop dataverse KeyVerse if exists;
+create dataverse KeyVerse;
+use KeyVerse;
+
+create type DocumentType as open{
+ attr: int64
+};
+
+create type KVMetaType as open{
+ `key`:string,
+ vbucket:int32,
+ cas:int64,
+ expiration:int32,
+ flags:int32,
+ revSeq:int64,
+ seq:int64,
+ lockTime:int32
+};
+
+create dataset KVStore(DocumentType) with meta(KVMetaType) primary key meta().`key` with filter on meta().seq;
+
+select * from KVStore WHERE meta().seq > 11;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_2.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_2.sqlpp
new file mode 100644
index 0000000..415e1a9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_2.sqlpp
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+// filter on meta key and query on meta key
+drop dataverse KeyVerse if exists;
+create dataverse KeyVerse;
+use KeyVerse;
+
+create type DocumentType as open{
+ attr: int64
+};
+
+create type KVMetaType as open{
+ `key`:string,
+ vbucket:int32,
+ cas:int64,
+ expiration:int32,
+ flags:int32,
+ revSeq:int64,
+ seq:int64,
+ lockTime:int32
+};
+
+create dataset KVStore(DocumentType) with meta(KVMetaType) primary key meta().`key` with filter on meta().`key`;
+
+select k, meta() as meta from KVStore k WHERE meta().`key` > 12;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_3.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_3.sqlpp
new file mode 100644
index 0000000..4cca505
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_3.sqlpp
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+// filter on meta and query on record
+drop dataverse KeyVerse if exists;
+create dataverse KeyVerse;
+use KeyVerse;
+
+create type DocumentType as open{
+ attr: int64
+};
+
+create type KVMetaType as open{
+ `key`:string,
+ vbucket:int32,
+ cas:int64,
+ expiration:int32,
+ flags:int32,
+ revSeq:int64,
+ seq:int64,
+ lockTime:int32,
+ attr: int64
+};
+
+create dataset KVStore(DocumentType) with meta(KVMetaType) primary key meta().`key` with filter on attr;
+
+select * from KVStore WHERE attr > 10;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_4.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_4.sqlpp
new file mode 100644
index 0000000..cfd4363
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_4.sqlpp
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+// filter on meta and query on meta
+drop dataverse KeyVerse if exists;
+create dataverse KeyVerse;
+use KeyVerse;
+
+create type DocumentType as open{
+ attr: int64
+};
+
+create type KVMetaType as open{
+ `key`:string,
+ vbucket:int32,
+ cas:int64,
+ expiration:int32,
+ flags:int32,
+ revSeq:int64,
+ seq:int64,
+ lockTime:int32,
+ attr: int64
+};
+
+create dataset KVStore(DocumentType) with meta(KVMetaType) primary key meta().`key` with filter on meta().attr;
+
+select * from KVStore WHERE meta().attr > 10;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_5.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_5.sqlpp
new file mode 100644
index 0000000..0383e88
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_5.sqlpp
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+// filter on meta and query on meta with a composite primary key
+drop dataverse KeyVerse if exists;
+create dataverse KeyVerse;
+use KeyVerse;
+
+create type DocumentType as open{
+ attr1: int64,
+ attr2: int64
+};
+
+create type KVMetaType as open{
+ `key`:string,
+ vbucket:int32,
+ cas:int64,
+ expiration:int32,
+ flags:int32,
+ revSeq:int64,
+ seq:int64,
+ lockTime:int32,
+ attr: int64
+};
+
+create dataset KVStore(DocumentType) with meta(KVMetaType) primary key attr1, attr2 with filter on meta().attr;
+
+select * from KVStore WHERE meta().attr > 10;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_with_idx_0.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_with_idx_0.sqlpp
new file mode 100644
index 0000000..cfa2f00
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_with_idx_0.sqlpp
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+DROP DATAVERSE test IF EXISTS;
+CREATE DATAVERSE test;
+USE test;
+
+create type DocumentType as open{
+ location: point,
+ area_code: string,
+ text: string
+};
+
+create type KVMetaType as open{
+ `key`:string,
+ vbucket:int32,
+ seq:int64,
+ cas:int64,
+ expiration:int32,
+ flags:int32,
+ revSeq:int64,
+ lockTime:int32
+};
+
+CREATE TYPE OfficerLocation AS {
+ oid: int,
+ location: point,
+ vehicle: string
+};
+
+
+CREATE DATASET KVStore(DocumentType) with meta(KVMetaType) primary key meta().`key` with filter on meta().seq;
+CREATE DATASET OfficerLocations(OfficerLocation) PRIMARY KEY oid;
+
+CREATE INDEX s_location ON KVStore(location) type RTREE;
+CREATE INDEX o_location ON OfficerLocations(location) type RTREE;
+
+
+SELECT t FROM KVStore t, OfficerLocations o
+WHERE spatial_intersect(create_circle(t.location, 100.0), o.location) AND meta(t).seq > 100;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_with_idx_1.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_with_idx_1.sqlpp
new file mode 100644
index 0000000..4d74d24
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_with_idx_1.sqlpp
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+DROP DATAVERSE test IF EXISTS;
+CREATE DATAVERSE test;
+USE test;
+
+create type DocumentType as open{
+ location: point,
+ area_code: string,
+ text: string
+};
+
+create type KVMetaType as open{
+ `key`:string,
+ vbucket:int32,
+ seq:int64,
+ cas:int64,
+ expiration:int32,
+ flags:int32,
+ revSeq:int64,
+ lockTime:int32
+};
+
+CREATE TYPE OfficerLocation AS {
+ oid: int,
+ location: point,
+ vehicle: string
+};
+
+
+CREATE DATASET KVStore(DocumentType) with meta(KVMetaType) primary key meta().`key` with filter on meta().seq;
+CREATE DATASET OfficerLocations(OfficerLocation) PRIMARY KEY oid;
+
+
+SELECT t FROM KVStore t, OfficerLocations o
+WHERE spatial_intersect(create_circle(t.location, 100.0), o.location) AND meta(t).seq > 100;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_with_idx_2.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_with_idx_2.sqlpp
new file mode 100644
index 0000000..a63c3d31
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_with_idx_2.sqlpp
@@ -0,0 +1,56 @@
+/*
+ * 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.
+ */
+DROP DATAVERSE test IF EXISTS;
+CREATE DATAVERSE test;
+USE test;
+
+create type DocumentType as open{
+ location: point,
+ area_code: string,
+ attr1: int64,
+ text: string
+};
+
+create type KVMetaType as open{
+ `key`:string,
+ vbucket:int32,
+ seq:int64,
+ cas:int64,
+ expiration:int32,
+ flags:int32,
+ revSeq:int64,
+ lockTime:int32
+};
+
+CREATE TYPE OfficerLocation AS {
+ oid: int,
+ location: point,
+ attr2: int64
+};
+
+
+CREATE DATASET KVStore(DocumentType) with meta(KVMetaType) primary key meta().`key` with filter on meta().seq;
+CREATE DATASET OfficerLocations(OfficerLocation) PRIMARY KEY oid;
+
+CREATE INDEX s_location ON KVStore(attr1);
+CREATE INDEX o_location ON OfficerLocations(location) type RTREE;
+
+
+SELECT t FROM KVStore t, OfficerLocations o
+WHERE t.attr1 = o.attr2 AND meta(t).seq > 100;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_with_idx_3.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_with_idx_3.sqlpp
new file mode 100644
index 0000000..5ade370
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/filter_on_meta_with_idx_3.sqlpp
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+DROP DATAVERSE test IF EXISTS;
+CREATE DATAVERSE test;
+USE test;
+
+create type DocumentType as open{
+ location: point,
+ area_code: string,
+ attr1: int64,
+ text: string
+};
+
+create type KVMetaType as open{
+ `key`:string,
+ vbucket:int32,
+ seq:int64,
+ cas:int64,
+ expiration:int32,
+ flags:int32,
+ revSeq:int64,
+ lockTime:int32
+};
+
+CREATE TYPE OfficerLocation AS {
+ oid: int,
+ location: point,
+ attr2: int64
+};
+
+
+CREATE DATASET KVStore(DocumentType) with meta(KVMetaType) primary key meta().`key` with filter on meta().seq;
+CREATE DATASET OfficerLocations(OfficerLocation) PRIMARY KEY oid;
+
+
+SELECT t FROM KVStore t, OfficerLocations o
+WHERE t.attr1 = o.attr2 AND meta(t).seq > 100;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-dblp-csx-selflink.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-dblp-csx-selflink.aql
index 1b3f930..cbc88ce 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-dblp-csx-selflink.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-dblp-csx-selflink.aql
@@ -46,8 +46,8 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
-create dataset DBLP(DBLPType) primary key id on group1;
-create dataset CSX(CSXType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id with {"node-group":{"name":"group1"}};
+create dataset CSX(CSXType) primary key id with {"node-group":{"name":"group1"}};
write output to asterix_nc1:'rttest/test.adm';
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-dblp-csx-simple.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-dblp-csx-simple.aql
index b0beb4d..166f305 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-dblp-csx-simple.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-dblp-csx-simple.aql
@@ -44,8 +44,8 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
-create dataset DBLP(DBLPType) primary key id on group1;
-create dataset CSX(CSXType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id with {"node-group":{"name":"group1"}};
+create dataset CSX(CSXType) primary key id with {"node-group":{"name":"group1"}};
write output to asterix_nc1:'rttest/fj-dblp-csx.adm';
for $s in dataset('DBLP')
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-dblp-csx.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-dblp-csx.aql
index c86c8b9..048df9e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-dblp-csx.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-dblp-csx.aql
@@ -40,8 +40,8 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
-create dataset DBLP(DBLPType) primary key id on group1;
-create dataset CSX(CSXType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id with {"node-group":{"name":"group1"}};
+create dataset CSX(CSXType) primary key id with {"node-group":{"name":"group1"}};
write output to asterix_nc1:'rttest/fj-dblp-csx.adm';
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-phase1.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-phase1.aql
index 6ef16b5..9a436ed 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-phase1.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/fj-phase1.aql
@@ -37,10 +37,10 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Users(UserType)
- primary key uid on group1;
+ primary key uid with {"node-group":{"name":"group1"}};
create dataset Visitors(VisitorType)
- primary key vid on group1;
+ primary key vid with {"node-group":{"name":"group1"}};
// set simfunction "jaccard";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/inlined_q18_large_volume_customer.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/inlined_q18_large_volume_customer.aql
index f5537db..e0580a2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/inlined_q18_large_volume_customer.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/inlined_q18_large_volume_customer.aql
@@ -67,11 +67,11 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
create dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
create dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/inlined_q18_large_volume_customer.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/introhashpartitionmerge.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/introhashpartitionmerge.sqlpp
index 9921e58..67587dd 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/introhashpartitionmerge.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/introhashpartitionmerge.sqlpp
@@ -33,7 +33,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset TOKENSRANKEDADM(TOKENSRANKEDADMType) primary key rank on group1;
+create dataset TOKENSRANKEDADM(TOKENSRANKEDADMType) primary key rank WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/introhashpartitionmerge.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/join-super-key_01.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/join-super-key_01.sqlpp
index 0e7fc0b..9b5e045 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/join-super-key_01.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/join-super-key_01.sqlpp
@@ -89,9 +89,9 @@
asterix_nc2
;
write output to asterix_nc1:"/tmp/join-super-key_01.adm";
-create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey on group1;
+create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey WITH {"node-group":{"name":"group1"}};
select element {'l_partkey':li.l_partkey}
from LineItems as li,
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/join-super-key_02.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/join-super-key_02.sqlpp
index 7247cdc..9c188bc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/join-super-key_02.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/join-super-key_02.sqlpp
@@ -89,9 +89,9 @@
asterix_nc2
;
write output to asterix_nc1:"/tmp/join-super-key_01.adm";
-create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey on group1;
+create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey WITH {"node-group":{"name":"group1"}};
select element {'l_partkey':li.l_partkey}
from PartSupp as ps,
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/loj-super-key_01.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/loj-super-key_01.sqlpp
index 38bd3e3..3fe8de3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/loj-super-key_01.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/loj-super-key_01.sqlpp
@@ -89,9 +89,9 @@
asterix_nc2
;
write output to asterix_nc1:"/tmp/loj-super-key_01.adm";
-create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey on group1;
+create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey WITH {"node-group":{"name":"group1"}};
select element {'li':li,'partsupp':partsupp}
from LineItems as li
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/loj-super-key_02.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/loj-super-key_02.sqlpp
index 9705785..d6254ab 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/loj-super-key_02.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/loj-super-key_02.sqlpp
@@ -89,9 +89,9 @@
asterix_nc2
;
write output to asterix_nc1:"/tmp/loj-super-key_01.adm";
-create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey on group1;
+create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey WITH {"node-group":{"name":"group1"}};
select element {'partsupp':ps,'li':items}
from PartSupp as ps
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/nested_loj2.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/nested_loj2.sqlpp
index aae756c..001da3f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/nested_loj2.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/nested_loj2.sqlpp
@@ -72,11 +72,11 @@
asterix_nc1,
asterix_nc2
;
-create dataset LineItems(LineItemType) primary key l_orderkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_orderkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
-create dataset Customers(CustomerType) primary key c_custkey on group1;
+create dataset Customers(CustomerType) primary key c_custkey WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/nested_loj.adm";
select element {'cust':c,'orders':orders}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/nested_loj3.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/nested_loj3.aql
index 2deac67..4022e84 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/nested_loj3.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/nested_loj3.aql
@@ -75,13 +75,13 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
create dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
create dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
create dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/nested_loj.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orderby-desc-using-gby.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orderby-desc-using-gby.aql
index 794a0ab..4ed67ae 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orderby-desc-using-gby.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orderby-desc-using-gby.aql
@@ -42,7 +42,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/gby-using-orderby-desc.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orderby-desc-using-gby_ps.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orderby-desc-using-gby_ps.sqlpp
index 254bd26..7bebb74 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orderby-desc-using-gby_ps.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orderby-desc-using-gby_ps.sqlpp
@@ -47,7 +47,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Customers(CustomerType) primary key cid on group1;
+create dataset Customers(CustomerType) primary key cid WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/gby-using-orderby-desc.adm";
set `compiler.sort.parallel` "true";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-aggreg.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-aggreg.aql
index 18ce36b..cd18239 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-aggreg.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-aggreg.aql
@@ -34,7 +34,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Orders(OrderType)
- primary key oid on group1;
+ primary key oid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/orders-aggreg.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_01.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_01.sqlpp
index 190f2f2..b010a1f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_01.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_01.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
load dataset Orders using localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_01_ps.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_01_ps.sqlpp
index 7764086..1c5bfaa 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_01_ps.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_01_ps.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
load dataset Orders using localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_02.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_02.sqlpp
index 64e2395..deb8b4c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_02.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_02.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
load dataset Orders using localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_02_ps.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_02_ps.sqlpp
index 3814e1c..f5f47b6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_02_ps.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive-open_02_ps.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
load dataset Orders using localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_01.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_01.sqlpp
index 4fe9e18..5243efd 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_01.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_01.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
load dataset Orders using localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_01_ps.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_01_ps.sqlpp
index 80cec87..5ecea40 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_01_ps.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_01_ps.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
load dataset Orders using localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_02.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_02.sqlpp
index c16810f..fa77884 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_02.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_02.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
load dataset Orders using localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_02_ps.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_02_ps.sqlpp
index de4604e..cb60838 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_02_ps.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-conjunctive_02_ps.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
load dataset Orders using localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-index-only.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-index-only.aql
index 26f9d73..df3f03e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-index-only.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-index-only.aql
@@ -38,7 +38,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
create index idx_Orders_Custkey on Orders(o_custkey);
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-open-index-only.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-open-index-only.aql
index 2e9095a..2857ed4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-open-index-only.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-open-index-only.aql
@@ -38,7 +38,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
create index idx_Orders_Custkey on Orders(o_custkey);
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-open.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-open.aql
index 9547e6a..8780af2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-open.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search-open.aql
@@ -38,7 +38,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
create index idx_Orders_Custkey on Orders(o_custkey);
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search.aql
index 3b49d9c..c464258 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/orders-index-search.aql
@@ -38,7 +38,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
create index idx_Orders_Custkey on Orders(o_custkey);
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/prim-idx-search-open.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/prim-idx-search-open.aql
index f59d88a..de8dc87 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/prim-idx-search-open.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/prim-idx-search-open.aql
@@ -39,7 +39,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/prim_index_search.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/prim-idx-search.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/prim-idx-search.aql
index acba88d..2d2f79c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/prim-idx-search.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/prim-idx-search.aql
@@ -39,7 +39,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/prim_index_search.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/pull_select_above_eq_join.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/pull_select_above_eq_join.sqlpp
index 8634de5..b03b85b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/pull_select_above_eq_join.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/pull_select_above_eq_join.sqlpp
@@ -43,9 +43,9 @@
asterix_nc1,
asterix_nc2
;
-create dataset Users(UserType) primary key uid on group1;
+create dataset Users(UserType) primary key uid WITH {"node-group":{"name":"group1"}};
-create dataset Visitors(VisitorType) primary key vid on group1;
+create dataset Visitors(VisitorType) primary key vid WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/pull-select-above-eq-join.adm";
select element {'uid':user.uid,'vid':visitor.vid}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/push-project-through-group.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/push-project-through-group.sqlpp
index 535ae58..7807359 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/push-project-through-group.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/push-project-through-group.sqlpp
@@ -36,7 +36,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/fuzzyjoin_080.adm";
select element {'id':paperDBLP.id,'matches':matches}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/push_limit.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/push_limit.aql
index 1106cae..6198c45 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/push_limit.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/push_limit.aql
@@ -34,7 +34,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/push_limit.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q03_shipping_priority.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q03_shipping_priority.aql
index fcc9def..3002280 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q03_shipping_priority.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q03_shipping_priority.aql
@@ -67,11 +67,11 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
create dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
create dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/q3_shipping_priority.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q05_local_supplier_volume.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q05_local_supplier_volume.aql
index d90b699..7868fcc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q05_local_supplier_volume.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q05_local_supplier_volume.aql
@@ -90,17 +90,17 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
create dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
create dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
create dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
create dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
create dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/q5_local_supplier.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q1.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q1.aql
index 2feb94f..17734e3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q1.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q1.aql
@@ -45,7 +45,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
-create dataset User(UserType) primary key name on group1;
+create dataset User(UserType) primary key name with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/q1.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q2.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q2.aql
index 15eb3ef..5e8018a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q2.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/q2.aql
@@ -52,7 +52,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
-create dataset Event(EventType) primary key name on group1;
+create dataset Event(EventType) primary key name with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/q2.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343-2.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343-2.aql
index ae8f860..b5f85b0 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343-2.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343-2.aql
@@ -59,9 +59,9 @@
asterix_nc1;
create dataset LineItem(LineItemType)
- primary key l_orderkey, l_linenumber on group_test;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group_test"}};
create dataset Orders(OrderType)
- primary key o_orderkey on group_test;
+ primary key o_orderkey with {"node-group":{"name":"group_test"}};
declare function tmp()
{
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343-3.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343-3.aql
index 78e93d8..e044e87 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343-3.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343-3.aql
@@ -59,9 +59,9 @@
asterix_nc2;
create dataset LineItem(LineItemType)
- primary key l_orderkey, l_linenumber on group_test;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group_test"}};
create dataset Orders(OrderType)
- primary key o_orderkey on group_test;
+ primary key o_orderkey with {"node-group":{"name":"group_test"}};
declare function tmp()
{
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343-4.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343-4.aql
index 05b1c36..a811380 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343-4.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343-4.aql
@@ -58,9 +58,9 @@
asterix_nc1;
create dataset LineItem(LineItemType)
- primary key l_orderkey, l_linenumber on group_test;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group_test"}};
create dataset Orders(OrderType)
- primary key o_orderkey on group_test;
+ primary key o_orderkey with {"node-group":{"name":"group_test"}};
create index lineitem_shipdateIx on LineItem (l_shipdate);
create index lineitem_receiptdateIx on LineItem (l_receiptdate);
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343.aql
index f94f8b0..d99210d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/query-ASTERIXDB-1343.aql
@@ -58,9 +58,9 @@
asterix_nc1;
create dataset LineItem(LineItemType)
- primary key l_orderkey, l_linenumber on group_test;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group_test"}};
create dataset Orders(OrderType)
- primary key o_orderkey on group_test;
+ primary key o_orderkey with {"node-group":{"name":"group_test"}};
declare function tmp()
{
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index-index-only.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index-index-only.aql
index 54bcef1..2c1deb3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index-index-only.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index-index-only.aql
@@ -35,7 +35,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset MyData(MyRecord)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
load dataset MyData
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index-open-index-only.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index-open-index-only.aql
index 8e7420e..03acb15 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index-open-index-only.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index-open-index-only.aql
@@ -35,7 +35,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset MyData(MyRecord)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
load dataset MyData
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index-open.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index-open.aql
index a79face..f0f2855 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index-open.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index-open.aql
@@ -35,7 +35,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset MyData(MyRecord)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
load dataset MyData
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index.aql
index 5636d16..6a2b459 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/rtree-secondary-index.aql
@@ -35,7 +35,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset MyData(MyRecord)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
load dataset MyData
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-delete-all.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-delete-all.aql
index 103ccb5..0e37727 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-delete-all.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-delete-all.aql
@@ -48,9 +48,9 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset LineItems_q1(LineItemType)
- primary key l_orderkey on group1;
+ primary key l_orderkey with {"node-group":{"name":"group1"}};
create dataset LineID(LineIDType)
- primary key l_orderkey on group1;
+ primary key l_orderkey with {"node-group":{"name":"group1"}};
delete $l from dataset LineItems_q1;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-delete-rtree-secondary-index.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-delete-rtree-secondary-index.aql
index 6ac940c..06a8a9e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-delete-rtree-secondary-index.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-delete-rtree-secondary-index.aql
@@ -35,7 +35,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset MyData(MyRecord)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
load dataset MyData
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-delete.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-delete.aql
index c140021..4247764 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-delete.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-delete.aql
@@ -49,9 +49,9 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset LineItems_q1(LineItemType)
- primary key l_orderkey on group1;
+ primary key l_orderkey with {"node-group":{"name":"group1"}};
create dataset LineID(LineIDType)
- primary key l_orderkey on group1;
+ primary key l_orderkey with {"node-group":{"name":"group1"}};
delete $l from dataset LineItems_q1 where $l.l_shipdate <= '1998-09-02';
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-insert-secondary-index.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-insert-secondary-index.aql
index c1de7b7..f98d5c7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-insert-secondary-index.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-insert-secondary-index.aql
@@ -48,10 +48,10 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset LineItems_q1(LineItemType)
- primary key l_orderkey on group1;
+ primary key l_orderkey with {"node-group":{"name":"group1"}};
create dataset LineID(LineIDType)
- primary key l_orderkey on group1;
+ primary key l_orderkey with {"node-group":{"name":"group1"}};
create index idx_LineID_partkey on LineID(l_partkey);
create index idx_LineID_suppkey on LineID(l_suppkey);
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-insert.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-insert.aql
index d501fc0..289d4f0 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-insert.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/scan-insert.aql
@@ -48,10 +48,10 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset LineItems_q1(LineItemType)
- primary key l_orderkey on group1;
+ primary key l_orderkey with {"node-group":{"name":"group1"}};
create dataset LineID(LineIDType)
- primary key l_orderkey on group1;
+ primary key l_orderkey with {"node-group":{"name":"group1"}};
insert into dataset LineID (
for $l in dataset('LineItems_q1')
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/skip-index/skip-rtree-secondary-index.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/skip-index/skip-rtree-secondary-index.aql
index eedaecb..734a3b8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/skip-index/skip-rtree-secondary-index.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/skip-index/skip-rtree-secondary-index.aql
@@ -41,7 +41,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset MyData(MyRecord)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
load dataset MyData
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/skip-index/skip-secondary-btree-index-3.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/skip-index/skip-secondary-btree-index-3.sqlpp
new file mode 100644
index 0000000..d634a26
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/skip-index/skip-secondary-btree-index-3.sqlpp
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Skip secondary index for IN operator
+ * Expected Res : Success
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+create type test.TestType as
+{
+ id : integer,
+ fname : string,
+ lname : string
+};
+
+create dataset testdst(TestType) primary key id;
+
+create index sec_Idx on testdst (fname) type btree;
+
+select element emp
+from testdst as emp
+where emp.fname /*+ skip-index */ in ['Max', 'Roger']
+;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/sort-cust.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/sort-cust.aql
index 3eda850..597fc13 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/sort-cust.aql
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/sort-cust.aql
@@ -45,7 +45,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/custlimit.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/statement-params/statement-params-index-01.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/statement-params/statement-params-index-01.sqlpp
new file mode 100644
index 0000000..bde8e75
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/statement-params/statement-params-index-01.sqlpp
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+/*
+ * Description: Test that BTree index is used in query plan
+ */
+
+// requesttype=application/json
+
+// param $p_fname:json="Julio"
+// param $p_lname:json=null
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+create type test.Emp as
+ closed {
+ id : bigint,
+ fname : string,
+ lname : string,
+ age : bigint,
+ dept : string
+};
+
+create dataset employee(Emp) primary key id;
+
+create index idx_employee_fname on employee (fname) type btree;
+
+create index idx_employee_lname on employee (lname) type btree;
+
+select l.id, l.fname, l.lname, l.age
+from employee as l
+where
+ ($p_fname is null or l.fname = $p_fname )
+ and
+ ($p_lname is null or l.lname = $p_lname)
+order by l.id;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/statement-params/statement-params-index-02.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/statement-params/statement-params-index-02.sqlpp
new file mode 100644
index 0000000..e74acc5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/statement-params/statement-params-index-02.sqlpp
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+/*
+ * Description: Test that BTree index is used in query plan
+ */
+
+// requesttype=application/json
+
+// param $p_fname:json="Julio"
+// param $p_lname:json="Isa"
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+create type test.Emp as
+ closed {
+ id : bigint,
+ fname : string,
+ lname : string,
+ age : bigint,
+ dept : string
+};
+
+create dataset employee(Emp) primary key id;
+
+create index idx_employee_fname on employee (fname) type btree;
+
+create index idx_employee_lname on employee (lname) type btree;
+
+select l.id, l.fname, l.lname, l.age
+from employee as l
+where
+ ($p_fname is null or l.fname = $p_fname )
+ and
+ ($p_lname is null or l.lname = $p_lname)
+order by l.id;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
index a33e6dd..bd35c4b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval after
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +43,8 @@
create dataset Students(StudentType)
primary key name;
-select element { "staff": f.employment, "student" : d.attendance }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_after(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
index e8ebb86..acea862 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval before
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -45,4 +45,6 @@
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_before(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp
index 854cd59..bc4ec80 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval covered_by
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +43,8 @@
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-covered-by`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covered_by(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp
index 1fa198d..a054f13 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval covers
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +43,8 @@
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-covers`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covers(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp
index 1d48700..d683999 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp
@@ -17,9 +17,11 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval ended_by
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
+ * Note : Range hint is not used in ended_by because it is not implemented.
+ * This test will default to Hybrid Hash Join
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +45,8 @@
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-ended-by`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ended_by(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp
index 14346f6..946edbc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp
@@ -17,9 +17,11 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval ends
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
+ * Note : Range hint is not used in ends because it is not implemented.
+ * This test will default to Hybrid Hash Join
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +45,8 @@
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-ends`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ends(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp
index 7bce341..9dc0710 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp
@@ -17,9 +17,11 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval meets
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
+ * Note : Range hint is not used in meets because it is not implemented.
+ * This test will default to Hybrid Hash Join
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +45,8 @@
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-meets`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_meets(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp
index 19f206d..720daf1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp
@@ -17,9 +17,11 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval met_by
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
+ * Note : Range hint is not used in met_by because it is not implemented.
+ * This test will default to Hybrid Hash Join
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +45,8 @@
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-met-by`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_met_by(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
index 72a1f50..38a5149 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval overlapped_by
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +43,8 @@
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlapped-by`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapped_by(f.employment, d.attendance);
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp
index f1c3a68..71b43e7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval overlapping
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +43,8 @@
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlapping`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapping(f.employment, d.attendance);
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp
index efb224f..2bf3fd4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp
@@ -17,9 +17,9 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval overlaps
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +43,8 @@
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlaps`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlaps(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp
index 410504d..b19044a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp
@@ -17,9 +17,11 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval started_by
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
+ * Note : Range hint is not used in started_by because it is not implemented.
+ * This test will default to Hybrid Hash Join
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +45,8 @@
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-started-by`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_started_by(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp
index 87ec386..38d855d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp
@@ -17,9 +17,11 @@
* under the License.
*/
/*
- * Description : Check temporal join functionality for interval
+ * Description : Check temporal join functionality for interval starts
* Expected Result : Success
- * Date : 21th Oct, 2019
+ * Date : 10th Aug, 2019
+ * Note : Range hint is not used in ended_by because it is not implemented.
+ * This test will default to Hybrid Hash Join
*/
drop dataverse TinyCollege if exists;
@@ -43,6 +45,8 @@
create dataset Students(StudentType)
primary key name;
-select element { "staff" : f.name, "student" : d.name }
+select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-starts`(f.employment, d.attendance);
\ No newline at end of file
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_starts(f.employment, d.attendance);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/union/union_opt_1_1.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/union/union_opt_1_1.sqlpp
new file mode 100644
index 0000000..532d646
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/union/union_opt_1_1.sqlpp
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+create type onekType1 as
+ closed {
+ unique1 : bigint,
+ unique2 : bigint,
+ two : bigint,
+ four : bigint,
+ ten : bigint,
+ twenty : bigint,
+ onePercent : bigint,
+ tenPercent : bigint,
+ twentyPercent : bigint,
+ fiftyPercent : bigint,
+ unique3 : bigint,
+ evenOnePercent : bigint,
+ oddOnePercent : bigint,
+ stringu1 : string,
+ stringu2 : string,
+ string4 : string
+};
+
+-- switch unique1 and unique2 in the schema
+
+create type onekType2 as
+ closed {
+ unique2 : bigint,
+ unique1 : bigint,
+ two : bigint,
+ four : bigint,
+ ten : bigint,
+ twenty : bigint,
+ onePercent : bigint,
+ tenPercent : bigint,
+ twentyPercent : bigint,
+ fiftyPercent : bigint,
+ unique3 : bigint,
+ evenOnePercent : bigint,
+ oddOnePercent : bigint,
+ stringu1 : string,
+ stringu2 : string,
+ string4 : string
+};
+
+create dataset onek1(onekType1) primary key unique2;
+
+create dataset onek2(onekType2) primary key unique2;
+
+create index onek1_idx on onek1(unique1);
+
+create index onek2_idx on onek2(unique1);
+
+with T as (
+ select value t1 from onek1 t1
+ union all
+ select value t2 from onek2 t2
+)
+select unique1, unique2, unique3 from T
+where unique1 >= 98
+order by unique2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/union/union_opt_1_2.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/union/union_opt_1_2.sqlpp
new file mode 100644
index 0000000..2554acb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/union/union_opt_1_2.sqlpp
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+create type onekType1 as
+ closed {
+ unique1 : bigint,
+ unique2 : bigint,
+ two : bigint,
+ four : bigint,
+ ten : bigint,
+ twenty : bigint,
+ onePercent : bigint,
+ tenPercent : bigint,
+ twentyPercent : bigint,
+ fiftyPercent : bigint,
+ unique3 : bigint,
+ evenOnePercent : bigint,
+ oddOnePercent : bigint,
+ stringu1 : string,
+ stringu2 : string,
+ string4 : string
+};
+
+-- switch unique1 and unique2 in the schema
+
+create type onekType2 as
+ closed {
+ unique2 : bigint,
+ unique1 : bigint,
+ two : bigint,
+ four : bigint,
+ ten : bigint,
+ twenty : bigint,
+ onePercent : bigint,
+ tenPercent : bigint,
+ twentyPercent : bigint,
+ fiftyPercent : bigint,
+ unique3 : bigint,
+ evenOnePercent : bigint,
+ oddOnePercent : bigint,
+ stringu1 : string,
+ stringu2 : string,
+ string4 : string
+};
+
+create dataset onek1(onekType1) primary key unique2;
+
+create dataset onek2(onekType2) primary key unique2;
+
+create index onek1_idx on onek1(unique1);
+
+create index onek2_idx on onek2(unique1);
+
+with T as (
+ select unique1, unique2, unique3 from onek1
+ union all
+ select unique1, unique2, unique3 from onek2
+)
+select value t from T t
+where unique1 >= 98
+order by unique2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/union/union_opt_1_3.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/union/union_opt_1_3.sqlpp
new file mode 100644
index 0000000..73d6c95
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/union/union_opt_1_3.sqlpp
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+create type fbuType as
+{
+ id : bigint
+};
+
+create dataset fbu1(fbuType) primary key id;
+
+create dataset fbu2(fbuType) primary key id;
+
+create index fbu1_idx on fbu1(alias: string);
+
+create index fbu2_idx on fbu2(alias: string);
+
+with T as (
+ select value t1 from fbu1 t1
+ union all
+ select value t2 from fbu2 t2
+)
+select alias, name from T
+where alias >= "Von"
+order by alias;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/union/union_opt_1_4.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/union/union_opt_1_4.sqlpp
new file mode 100644
index 0000000..260ef94
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/union/union_opt_1_4.sqlpp
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+create type fbuType as
+{
+ id : bigint
+};
+
+create dataset fbu1(fbuType) primary key id;
+
+create dataset fbu2(fbuType) primary key id;
+
+create index fbu1_idx on fbu1(alias: string);
+
+create index fbu2_idx on fbu2(alias: string);
+
+with T as (
+ select alias, name from fbu1
+ union all
+ select alias, name from fbu2
+)
+select value t from T t
+where alias >= "Von"
+order by alias;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/consolidate-selects-complex.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/consolidate-selects-complex.sqlpp
index 03d105f..ff91548 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/consolidate-selects-complex.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/consolidate-selects-complex.sqlpp
@@ -36,7 +36,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
load dataset DBLP using localfs ((`path`=`asterix_nc1://data/dblp-small/dblp-small-id.txt`),(`format`=`delimited-text`),(`delimiter`=`:`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/consolidate-selects-simple.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/consolidate-selects-simple.sqlpp
index 1ce7642..fcd5e68 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/consolidate-selects-simple.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/consolidate-selects-simple.sqlpp
@@ -39,7 +39,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Customers(CustomerType) primary key c_custkey on group1;
+create dataset Customers(CustomerType) primary key c_custkey WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/consolidate-selects-simple.aql";
select element c
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/cust_group_no_agg.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/cust_group_no_agg.sqlpp
index 3c82655..3f64adf 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/cust_group_no_agg.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/cust_group_no_agg.sqlpp
@@ -39,7 +39,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Customers(CustomerType) primary key c_custkey on group1;
+create dataset Customers(CustomerType) primary key c_custkey WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/.adm";
select element name
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/denorm-cust-order.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/denorm-cust-order.sqlpp
index 508d6ec..5205324 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/denorm-cust-order.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/denorm-cust-order.sqlpp
@@ -57,9 +57,9 @@
asterix_nc1,
asterix_nc2
;
-create dataset Customers(CustomerType) primary key cid on group1;
+create dataset Customers(CustomerType) primary key cid WITH {"node-group":{"name":"group1"}};
-create dataset Orders(OrderType) primary key oid on group1;
+create dataset Orders(OrderType) primary key oid WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/custorder.adm";
select element {'cid':cid,'cust':(from g select c),'cnt-orders':count(o),'orders': (from g select o)}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/distinct_aggregate.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/distinct_aggregate.sqlpp
index e840882..812e6d0 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/distinct_aggregate.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/distinct_aggregate.sqlpp
@@ -47,7 +47,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset LineItems_q1(LineItemType) primary key l_orderkey,l_linenumber on group1;
+create dataset LineItems_q1(LineItemType) primary key l_orderkey,l_linenumber WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/tpch_q1_pricing_summary_report_nt.adm";
select element {'l_returnflag':l_returnflag,'l_linestatus':l_linestatus,'count_suppkey':count(g)}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/fj-dblp-csx.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/fj-dblp-csx.sqlpp
index 66d3523..51c137c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/fj-dblp-csx.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/fj-dblp-csx.sqlpp
@@ -45,9 +45,9 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset CSX(CSXType) primary key id on group1;
+create dataset CSX(CSXType) primary key id WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/fj-dblp-csx.adm";
select element {'idDBLP':idDBLP,'idCSX':idCSX}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/fj-phase1.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/fj-phase1.sqlpp
index 0b89b41..98a8dce 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/fj-phase1.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/fj-phase1.sqlpp
@@ -41,9 +41,9 @@
asterix_nc1,
asterix_nc2
;
-create dataset Users(UserType) primary key uid on group1;
+create dataset Users(UserType) primary key uid WITH {"node-group":{"name":"group1"}};
-create dataset Visitors(VisitorType) primary key vid on group1;
+create dataset Visitors(VisitorType) primary key vid WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/rares03.adm";
select element {'uid':user.uid,'tokens':tokens}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/fj-phase2-with-hints.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/fj-phase2-with-hints.sqlpp
index f8c55e0..26af6b6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/fj-phase2-with-hints.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/fj-phase2-with-hints.sqlpp
@@ -36,7 +36,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP_fuzzyjoin_078(DBLPType) primary key id on group1;
+create dataset DBLP_fuzzyjoin_078(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/fuzzyjoin_078.adm";
select element {'id':paperDBLP.id,'tokens':tokensDBLP}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/inlined_q18_large_volume_customer.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/inlined_q18_large_volume_customer.sqlpp
index 8d97b03..c806296 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/inlined_q18_large_volume_customer.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/inlined_q18_large_volume_customer.sqlpp
@@ -72,11 +72,11 @@
asterix_nc1,
asterix_nc2
;
-create dataset LineItems(LineItemType) primary key l_orderkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_orderkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
-create dataset Customers(CustomerType) primary key c_custkey on group1;
+create dataset Customers(CustomerType) primary key c_custkey WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/inlined_q18_large_volume_customer.adm";
select element {'c_name':c_name,'c_custkey':c_custkey,'o_orderkey':o_orderkey,'o_orderdate':o_orderdate,'o_totalprice':o_totalprice,'sum_quantity':inlined_q18_large_volume_customer.strict_sum((
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/introhashpartitionmerge.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/introhashpartitionmerge.sqlpp
index 103aae8..a9cf298 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/introhashpartitionmerge.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/introhashpartitionmerge.sqlpp
@@ -33,7 +33,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset TOKENSRANKEDADM(TOKENSRANKEDADMType) primary key rank on group1;
+create dataset TOKENSRANKEDADM(TOKENSRANKEDADMType) primary key rank WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/introhashpartitionmerge.adm";
select element token2.rank
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/join-super-key_01.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/join-super-key_01.sqlpp
index 0e7fc0b..9b5e045 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/join-super-key_01.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/join-super-key_01.sqlpp
@@ -89,9 +89,9 @@
asterix_nc2
;
write output to asterix_nc1:"/tmp/join-super-key_01.adm";
-create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey on group1;
+create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey WITH {"node-group":{"name":"group1"}};
select element {'l_partkey':li.l_partkey}
from LineItems as li,
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/join-super-key_02.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/join-super-key_02.sqlpp
index 7247cdc..9c188bc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/join-super-key_02.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/join-super-key_02.sqlpp
@@ -89,9 +89,9 @@
asterix_nc2
;
write output to asterix_nc1:"/tmp/join-super-key_01.adm";
-create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey on group1;
+create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey WITH {"node-group":{"name":"group1"}};
select element {'l_partkey':li.l_partkey}
from PartSupp as ps,
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/loj-super-key_01.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/loj-super-key_01.sqlpp
index 38bd3e3..3fe8de3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/loj-super-key_01.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/loj-super-key_01.sqlpp
@@ -89,9 +89,9 @@
asterix_nc2
;
write output to asterix_nc1:"/tmp/loj-super-key_01.adm";
-create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey on group1;
+create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey WITH {"node-group":{"name":"group1"}};
select element {'li':li,'partsupp':partsupp}
from LineItems as li
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/loj-super-key_02.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/loj-super-key_02.sqlpp
index 9705785..d6254ab 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/loj-super-key_02.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/loj-super-key_02.sqlpp
@@ -89,9 +89,9 @@
asterix_nc2
;
write output to asterix_nc1:"/tmp/loj-super-key_01.adm";
-create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_partkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey on group1;
+create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey WITH {"node-group":{"name":"group1"}};
select element {'partsupp':ps,'li':items}
from PartSupp as ps
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/nested_loj2.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/nested_loj2.sqlpp
index aae756c..001da3f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/nested_loj2.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/nested_loj2.sqlpp
@@ -72,11 +72,11 @@
asterix_nc1,
asterix_nc2
;
-create dataset LineItems(LineItemType) primary key l_orderkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_orderkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
-create dataset Customers(CustomerType) primary key c_custkey on group1;
+create dataset Customers(CustomerType) primary key c_custkey WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/nested_loj.adm";
select element {'cust':c,'orders':orders}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/nested_loj3.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/nested_loj3.sqlpp
index b54dee6..0b460b4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/nested_loj3.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/nested_loj3.sqlpp
@@ -81,13 +81,13 @@
asterix_nc1,
asterix_nc2
;
-create dataset LineItems(LineItemType) primary key l_orderkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_orderkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
-create dataset Customers(CustomerType) primary key c_custkey on group1;
+create dataset Customers(CustomerType) primary key c_custkey WITH {"node-group":{"name":"group1"}};
-create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey on group1;
+create dataset PartSupp(PartSuppType) primary key ps_partkey,ps_suppkey WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/nested_loj.adm";
select element {'cust':c,'orders':orders}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orderby-desc-using-gby.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orderby-desc-using-gby.sqlpp
index 2313e90..6d349c0 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orderby-desc-using-gby.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orderby-desc-using-gby.sqlpp
@@ -47,7 +47,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Customers(CustomerType) primary key cid on group1;
+create dataset Customers(CustomerType) primary key cid WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/gby-using-orderby-desc.adm";
select element {'name':name,'age':age}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-aggreg.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-aggreg.sqlpp
index 5ef7be6..fd54dcb 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-aggreg.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-aggreg.sqlpp
@@ -37,7 +37,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key oid on group1;
+create dataset Orders(OrderType) primary key oid WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/orders-aggreg.adm";
select element {'cid':cid,'ordpercust':`orders-aggreg`.strict_count(g),'totalcust':`orders-aggreg`.strict_sum((
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive-open_01.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive-open_01.sqlpp
index 190f2f2..b010a1f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive-open_01.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive-open_01.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
load dataset Orders using localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive-open_02.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive-open_02.sqlpp
index 64e2395..deb8b4c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive-open_02.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive-open_02.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
load dataset Orders using localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive_01.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive_01.sqlpp
index 4fe9e18..5243efd 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive_01.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive_01.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
load dataset Orders using localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive_02.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive_02.sqlpp
index c16810f..fa77884 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive_02.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-conjunctive_02.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
load dataset Orders using localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-open.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-open.sqlpp
index 532f011..366d4b4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-open.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search-open.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
create index idx_Orders_Custkey on Orders (o_custkey) type btree;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search.sqlpp
index 99d8f81..b7d0368 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/orders-index-search.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
create index idx_Orders_Custkey on Orders (o_custkey) type btree;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/prim-idx-search-open.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/prim-idx-search-open.sqlpp
index 44c7aff..294cc85 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/prim-idx-search-open.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/prim-idx-search-open.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/prim_index_search.adm";
select element {'o_orderkey':o.o_orderkey,'o_custkey':o.o_custkey}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/prim-idx-search.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/prim-idx-search.sqlpp
index 91bc4fc..4663c89 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/prim-idx-search.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/prim-idx-search.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/prim_index_search.adm";
select element {'o_orderkey':o.o_orderkey,'o_custkey':o.o_custkey}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/pull_select_above_eq_join.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/pull_select_above_eq_join.sqlpp
index 8634de5..b03b85b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/pull_select_above_eq_join.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/pull_select_above_eq_join.sqlpp
@@ -43,9 +43,9 @@
asterix_nc1,
asterix_nc2
;
-create dataset Users(UserType) primary key uid on group1;
+create dataset Users(UserType) primary key uid WITH {"node-group":{"name":"group1"}};
-create dataset Visitors(VisitorType) primary key vid on group1;
+create dataset Visitors(VisitorType) primary key vid WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/pull-select-above-eq-join.adm";
select element {'uid':user.uid,'vid':visitor.vid}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/push-project-through-group.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/push-project-through-group.sqlpp
index 535ae58..7807359 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/push-project-through-group.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/push-project-through-group.sqlpp
@@ -36,7 +36,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/fuzzyjoin_080.adm";
select element {'id':paperDBLP.id,'matches':matches}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/push_limit.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/push_limit.sqlpp
index 721ad69..168c659 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/push_limit.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/push_limit.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/push_limit.adm";
select element {'price':o.o_totalprice,'date':o.o_orderdate}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q03_shipping_priority.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q03_shipping_priority.sqlpp
index 509ed18..90e7a13 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q03_shipping_priority.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q03_shipping_priority.sqlpp
@@ -72,11 +72,11 @@
asterix_nc1,
asterix_nc2
;
-create dataset LineItems(LineItemType) primary key l_orderkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_orderkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
-create dataset Customers(CustomerType) primary key c_custkey on group1;
+create dataset Customers(CustomerType) primary key c_custkey WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/q3_shipping_priority.adm";
select element {'l_orderkey':l_orderkey,'revenue':revenue,'o_orderdate':o_orderdate,'o_shippriority':o_shippriority}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q05_local_supplier_volume.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q05_local_supplier_volume.sqlpp
index fd520e2..70288b2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q05_local_supplier_volume.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q05_local_supplier_volume.sqlpp
@@ -98,17 +98,17 @@
asterix_nc1,
asterix_nc2
;
-create dataset LineItems(LineItemType) primary key l_orderkey,l_linenumber on group1;
+create dataset LineItems(LineItemType) primary key l_orderkey,l_linenumber WITH {"node-group":{"name":"group1"}};
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
-create dataset Customers(CustomerType) primary key c_custkey on group1;
+create dataset Customers(CustomerType) primary key c_custkey WITH {"node-group":{"name":"group1"}};
-create dataset Suppliers(SupplierType) primary key s_suppkey on group1;
+create dataset Suppliers(SupplierType) primary key s_suppkey WITH {"node-group":{"name":"group1"}};
-create dataset Nations(NationType) primary key n_nationkey on group1;
+create dataset Nations(NationType) primary key n_nationkey WITH {"node-group":{"name":"group1"}};
-create dataset Regions(RegionType) primary key r_regionkey on group1;
+create dataset Regions(RegionType) primary key r_regionkey WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/q5_local_supplier.adm";
select element {'n_name':n_name,'revenue':revenue}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q1.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q1.sqlpp
index 145f018..791f0b9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q1.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q1.sqlpp
@@ -49,7 +49,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset User(UserType) primary key name on group1;
+create dataset User(UserType) primary key name WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/q1.adm";
select element {'name':user.name}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q2.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q2.sqlpp
index 801f6a3..f2413ef 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q2.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/q2.sqlpp
@@ -54,7 +54,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Event(EventType) primary key name on group1;
+create dataset Event(EventType) primary key name WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/q2.adm";
select element {'sig_name':sig_name,'total_count':sig_sponsorship_count,'chapter_breakdown':by_chapter}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/rtree-secondary-index-open.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/rtree-secondary-index-open.sqlpp
index 4300355..0b86e27 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/rtree-secondary-index-open.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/rtree-secondary-index-open.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset MyData(MyRecord) primary key id on group1;
+create dataset MyData(MyRecord) primary key id WITH {"node-group":{"name":"group1"}};
load dataset MyData using localfs ((`path`=`asterix_nc1://data/spatial/spatialData.json`),("format"="adm")) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/rtree-secondary-index.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/rtree-secondary-index.sqlpp
index 0748c99..ff8bbee 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/rtree-secondary-index.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/rtree-secondary-index.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset MyData(MyRecord) primary key id on group1;
+create dataset MyData(MyRecord) primary key id WITH {"node-group":{"name":"group1"}};
load dataset MyData using localfs ((`path`=`asterix_nc1://data/spatial/spatialData.json`),("format"="adm")) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-delete-all.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-delete-all.sqlpp
index daf328d..c126e4d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-delete-all.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-delete-all.sqlpp
@@ -54,8 +54,8 @@
asterix_nc1,
asterix_nc2
;
-create dataset LineItems_q1(LineItemType) primary key l_orderkey on group1;
+create dataset LineItems_q1(LineItemType) primary key l_orderkey WITH {"node-group":{"name":"group1"}};
-create dataset LineID(LineIDType) primary key l_orderkey on group1;
+create dataset LineID(LineIDType) primary key l_orderkey WITH {"node-group":{"name":"group1"}};
delete from LineItems_q1;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-delete-rtree-secondary-index.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-delete-rtree-secondary-index.sqlpp
index 6493acd..eb4151b6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-delete-rtree-secondary-index.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-delete-rtree-secondary-index.sqlpp
@@ -40,7 +40,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset MyData(MyRecord) primary key id on group1;
+create dataset MyData(MyRecord) primary key id WITH {"node-group":{"name":"group1"}};
load dataset MyData using localfs ((`path`=`asterix_nc1://data/spatial/spatialData.json`),("format"="adm")) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-delete.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-delete.sqlpp
index 83c12e0..c41401a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-delete.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-delete.sqlpp
@@ -54,9 +54,9 @@
asterix_nc1,
asterix_nc2
;
-create dataset LineItems_q1(LineItemType) primary key l_orderkey on group1;
+create dataset LineItems_q1(LineItemType) primary key l_orderkey WITH {"node-group":{"name":"group1"}};
-create dataset LineID(LineIDType) primary key l_orderkey on group1;
+create dataset LineID(LineIDType) primary key l_orderkey WITH {"node-group":{"name":"group1"}};
delete from LineItems_q1
where l_shipdate <= '1998-09-02';
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-insert-secondary-index.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-insert-secondary-index.sqlpp
index b5e9c66..f3b5a85 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-insert-secondary-index.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-insert-secondary-index.sqlpp
@@ -54,9 +54,9 @@
asterix_nc1,
asterix_nc2
;
-create dataset LineItems_q1(LineItemType) primary key l_orderkey on group1;
+create dataset LineItems_q1(LineItemType) primary key l_orderkey WITH {"node-group":{"name":"group1"}};
-create dataset LineID(LineIDType) primary key l_orderkey on group1;
+create dataset LineID(LineIDType) primary key l_orderkey WITH {"node-group":{"name":"group1"}};
create index idx_LineID_partkey on LineID (l_partkey) type btree;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-insert.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-insert.sqlpp
index 0bda7a0..f4ef35f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-insert.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/scan-insert.sqlpp
@@ -54,9 +54,9 @@
asterix_nc1,
asterix_nc2
;
-create dataset LineItems_q1(LineItemType) primary key l_orderkey on group1;
+create dataset LineItems_q1(LineItemType) primary key l_orderkey WITH {"node-group":{"name":"group1"}};
-create dataset LineID(LineIDType) primary key l_orderkey on group1;
+create dataset LineID(LineIDType) primary key l_orderkey WITH {"node-group":{"name":"group1"}};
insert into LineID
select element {'l_orderkey':l.l_orderkey,'l_partkey':l.l_partkey,'l_suppkey':l.l_partkey}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/skip-index/skip-rtree-secondary-index.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/skip-index/skip-rtree-secondary-index.sqlpp
index 00ec8dc..58934cb 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/skip-index/skip-rtree-secondary-index.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/skip-index/skip-rtree-secondary-index.sqlpp
@@ -45,7 +45,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset MyData(MyRecord) primary key id on group1;
+create dataset MyData(MyRecord) primary key id WITH {"node-group":{"name":"group1"}};
load dataset MyData using localfs ((`path`=`asterix_nc1://data/spatial/spatialData.json`),("format"="adm")) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/sort-cust.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/sort-cust.sqlpp
index b2e78c0..5ce4d75 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/sort-cust.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/sort-cust.sqlpp
@@ -47,7 +47,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Customers(CustomerType) primary key cid on group1;
+create dataset Customers(CustomerType) primary key cid WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/custlimit.adm";
select element {'custname':c.name,'custage':c.age}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/unnest_list_in_subplan.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/unnest_list_in_subplan.sqlpp
index 3bdae74..e9a7228 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/unnest_list_in_subplan.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries_sqlpp/unnest_list_in_subplan.sqlpp
@@ -42,9 +42,9 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset TOKENSRANKEDADM(TOKENSRANKEDADMType) primary key rank on group1;
+create dataset TOKENSRANKEDADM(TOKENSRANKEDADMType) primary key rank WITH {"node-group":{"name":"group1"}};
write output to asterix_nc1:"rttest/unnest_list_in_subplan.adm";
select element {'id':idDBLP,'tokens':tokensDBLP}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/ASTERIXDB-2402.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/ASTERIXDB-2402.plan
index b6d1d39..0a4b517 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/ASTERIXDB-2402.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/ASTERIXDB-2402.plan
@@ -5,12 +5,12 @@
{
-- AGGREGATE |LOCAL|
-- ASSIGN |LOCAL|
- -- MICRO_PRE_CLUSTERED_GROUP_BY[$$200] |LOCAL|
+ -- MICRO_PRE_CLUSTERED_GROUP_BY[$$215] |LOCAL|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
}
- -- MICRO_STABLE_SORT [$$200(ASC)] |LOCAL|
+ -- MICRO_STABLE_SORT [$$215(ASC)] |LOCAL|
-- ASSIGN |LOCAL|
-- UNNEST |LOCAL|
-- SUBPLAN |LOCAL|
@@ -27,7 +27,7 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- INSERT_DELETE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$184] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$199] |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -37,28 +37,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$238] |PARTITIONED|
+ -- PRE_CLUSTERED_GROUP_BY[$$253] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- STREAM_SELECT |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$238(ASC)] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$238] |PARTITIONED|
+ -- STABLE_SORT [$$253(ASC)] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$253] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$294][$$207] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$294] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$309][$$222] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$309] |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- UNNEST |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$298] |PARTITIONED|
+ -- PRE_CLUSTERED_GROUP_BY[$$317] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
- -- MICRO_PRE_CLUSTERED_GROUP_BY[$$300, $$302] |LOCAL|
+ -- MICRO_PRE_CLUSTERED_GROUP_BY[$$319, $$321] |LOCAL|
{
-- AGGREGATE |LOCAL|
-- STREAM_SELECT |LOCAL|
@@ -68,8 +68,8 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$298(ASC), $$300(ASC), $$302(ASC)] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$298] |PARTITIONED|
+ -- STABLE_SORT [$$317(ASC), $$319(ASC), $$321(ASC)] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$317] |PARTITIONED|
-- UNION_ALL |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
@@ -106,7 +106,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$245(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$260(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -152,7 +152,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$245(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$260(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -166,12 +166,12 @@
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$207] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$222] |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$215, $$217][$$209, $$210] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$215, $$217] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$230, $$232][$$224, $$225] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$230, $$232] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-subclause/agg_filter_01/agg_filter_01.5.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-subclause/agg_filter_01/agg_filter_01.5.plan
index 92f10c3..07c478a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-subclause/agg_filter_01/agg_filter_01.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate-subclause/agg_filter_01/agg_filter_01.5.plan
@@ -1,94 +1,90 @@
-- DISTRIBUTE_RESULT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$128(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$128(ASC)] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$197(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$197(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- UNION_ALL |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- PRE_CLUSTERED_GROUP_BY[$$244] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$133] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$133(ASC)] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$133] |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$112] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- STABLE_SORT [$$244(ASC)] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$244] |PARTITIONED|
+ -- PRE_CLUSTERED_GROUP_BY[$$115] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- STREAM_SELECT |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ {
+ -- AGGREGATE |LOCAL|
+ -- STREAM_SELECT |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$115(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$112(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- PRE_CLUSTERED_GROUP_BY[$$247] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$136] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$136(ASC)] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$136] |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$113] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- STABLE_SORT [$$247(ASC)] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$247] |PARTITIONED|
+ -- PRE_CLUSTERED_GROUP_BY[$$116] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- STREAM_SELECT |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ {
+ -- AGGREGATE |LOCAL|
+ -- STREAM_SELECT |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$116(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$113(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/common-expr-01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/common-expr-01.plan
new file mode 100644
index 0000000..c7b21c2
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/common-expr-01.plan
@@ -0,0 +1,68 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$185, $$186] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$185, $$186] |PARTITIONED|
+ -- SORT_GROUP_BY[$$168, $$169] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- PRE_CLUSTERED_GROUP_BY[$$172] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- STREAM_SELECT |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$172(ASC)] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$172] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |UNPARTITIONED|
+ -- UNNEST |UNPARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- AGGREGATE |UNPARTITIONED|
+ -- RANDOM_MERGE_EXCHANGE |PARTITIONED|
+ -- AGGREGATE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_0.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_0.plan
new file mode 100644
index 0000000..fbdf7a6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_0.plan
@@ -0,0 +1,11 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_1.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_1.plan
new file mode 100644
index 0000000..69abc9a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_1.plan
@@ -0,0 +1,12 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_2.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_2.plan
new file mode 100644
index 0000000..69abc9a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_2.plan
@@ -0,0 +1,12 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_3.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_3.plan
new file mode 100644
index 0000000..fbdf7a6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_3.plan
@@ -0,0 +1,11 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_4.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_4.plan
new file mode 100644
index 0000000..69abc9a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_4.plan
@@ -0,0 +1,12 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_5.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_5.plan
new file mode 100644
index 0000000..69abc9a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_5.plan
@@ -0,0 +1,12 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_with_idx_0.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_with_idx_0.plan
new file mode 100644
index 0000000..6ab1e92
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_with_idx_0.plan
@@ -0,0 +1,25 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_with_idx_1.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_with_idx_1.plan
new file mode 100644
index 0000000..6ab1e92
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_with_idx_1.plan
@@ -0,0 +1,25 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_with_idx_2.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_with_idx_2.plan
new file mode 100644
index 0000000..0e83dd0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_with_idx_2.plan
@@ -0,0 +1,25 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$33][$$34] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$33] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$34] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_with_idx_3.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_with_idx_3.plan
new file mode 100644
index 0000000..0e83dd0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter_on_meta_with_idx_3.plan
@@ -0,0 +1,25 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$33][$$34] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$33] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$34] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-hybrid.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-hybrid.plan
index babba3b..2af5c43 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-hybrid.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-hybrid.plan
@@ -4,12 +4,12 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$49, $$50, $$51][$$idLeft_0, $$idLeft_1, $$idLeft_2] |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$49, $$50, $$51][$$idLeft_0, $$idLeft_1, $$idLeft_2] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$49, $$50, $$51] |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- NESTED_LOOP |PARTITIONED|
@@ -22,8 +22,8 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -32,12 +32,12 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -45,550 +45,35 @@
-- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0, $$idLeft_1, $$idLeft_2] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$52][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$331, $$329, $$330, $$327] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$331, $$329, $$330, $$327] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$201] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$194] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$194(ASC), $$210(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$211][$$214] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$363(ASC), $$244(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$363(ASC), $$244(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$395] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$395] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$246] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$81, $$84, $$76] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$81(ASC), $$84(ASC), $$76(ASC), $$i(ASC)] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$81, $$84, $$76] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$363(ASC), $$244(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$363(ASC), $$244(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$395] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$395] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$246] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0, $$idLeft_1, $$idLeft_2] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$53][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$341, $$344, $$347, $$333] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$341, $$344, $$347, $$333] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$259] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$259(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$364(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$364(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$397] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$397] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$166, $$167, $$184, $$168, $$169, $$185, $$170, $$171] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$166(ASC), $$167(ASC), $$184(ASC), $$168(ASC), $$169(ASC), $$185(ASC), $$170(ASC), $$171(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$166, $$168, $$170][$$167, $$169, $$171] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$166, $$168, $$170] |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$167, $$169, $$171] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$184][$$185] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$185] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$339, $$337, $$338, $$335] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$339, $$337, $$338, $$335] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$201][$$200] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$201] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$194] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$194(ASC), $$210(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$211][$$214] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$363(ASC), $$244(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$363(ASC), $$244(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$395] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$395] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$246] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$200] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$192, $$193, $$191] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$192(ASC), $$193(ASC), $$191(ASC), $$240(ASC)] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$192, $$193, $$191] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$241][$$244] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$363(ASC), $$244(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$363(ASC), $$244(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$395] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$395] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$246] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$364(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$364(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$397] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$397] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-selflink.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-selflink.plan
index a020bf4..f54154b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-selflink.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-selflink.plan
@@ -4,2433 +4,71 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$37, $$38][$$idLeft_0, $$idLeft_1] |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$37, $$38][$$idLeft_0, $$idLeft_1] |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$37, $$38][$$idLeft_0, $$idLeft_1] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$37][$$idLeft_0] |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$693][$$734] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$829] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1046, $$1044] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1046, $$1044] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$841][$$840] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$701] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$694] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$694(ASC), $$708(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$709][$$712] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$840] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$833] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$833(ASC), $$867(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$868][$$871] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$39][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$988, $$990, $$982] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$988, $$990, $$982] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$800] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$793] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$793(ASC), $$807(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$808][$$811] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1146(ASC), $$885(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1146(ASC), $$885(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1669] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1669] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$887] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$137, $$138, $$142, $$143] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$137(ASC), $$138(ASC), $$142(ASC), $$143(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$791][$$825] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$825] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$792][$$829] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$829] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1046, $$1044] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1046, $$1044] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$841][$$840] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$701] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$694] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$694(ASC), $$708(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$709][$$712] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$840] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$833] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$833(ASC), $$867(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$868][$$871] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1146(ASC), $$885(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1146(ASC), $$885(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1669] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1669] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$887] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$40][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1014, $$1016, $$993] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1014, $$1016, $$993] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$701] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$694] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$694(ASC), $$708(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$709][$$712] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$274, $$278, $$330, $$331, $$268, $$269, $$270, $$271] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$274(ASC), $$278(ASC), $$330(ASC), $$331(ASC), $$268(ASC), $$269(ASC), $$270(ASC), $$271(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$268, $$270][$$269, $$271] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$692][$$730] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$730] |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$693][$$734] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$829] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1046, $$1044] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1046, $$1044] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$841][$$840] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$701] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$694] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$694(ASC), $$708(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$709][$$712] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$840] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$833] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$833(ASC), $$867(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$868][$$871] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$269] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$330][$$331] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$331] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1008, $$1005, $$999] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1008, $$1005, $$999] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$344][$$343] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$800] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$793] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$793(ASC), $$807(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$808][$$811] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1146(ASC), $$885(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1146(ASC), $$885(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1669] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1669] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$887] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$343] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$336, $$369, $$373, $$335] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$336(ASC), $$369(ASC), $$373(ASC), $$335(ASC), $$425(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$426][$$429] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$791][$$825] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$825] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$792][$$829] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$829] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1046, $$1044] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1046, $$1044] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$841][$$840] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$701] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$694] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$694(ASC), $$708(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$709][$$712] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$840] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$833] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$833(ASC), $$867(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$868][$$871] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1146(ASC), $$885(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1146(ASC), $$885(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1669] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1669] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$887] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$41][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1062, $$1065, $$1019] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1062, $$1065, $$1019] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$912] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$912(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1148(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1148(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1673] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1673] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$512, $$688, $$513, $$514, $$578, $$515, $$579, $$518, $$519, $$522, $$526, $$687] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$512(ASC), $$688(ASC), $$513(ASC), $$514(ASC), $$578(ASC), $$515(ASC), $$579(ASC), $$518(ASC), $$519(ASC), $$522(ASC), $$526(ASC), $$687(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$512, $$514][$$513, $$515] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$512, $$514][$$518, $$519] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$692][$$730] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$730] |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$693][$$734] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$829] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1046, $$1044] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1046, $$1044] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$841][$$840] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$701] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$694] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$694(ASC), $$708(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$709][$$712] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$840] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$833] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$833(ASC), $$867(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$868][$$871] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$518] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$578][$$579] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$579] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1031, $$1032, $$1025] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1031, $$1032, $$1025] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$592][$$591] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$800] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$793] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$793(ASC), $$807(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$808][$$811] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1146(ASC), $$885(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1146(ASC), $$885(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1669] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1669] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$887] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$591] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$583, $$584, $$617, $$621] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$583(ASC), $$584(ASC), $$617(ASC), $$621(ASC), $$673(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$674][$$677] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$791][$$825] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$825] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$792][$$829] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$829] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1046, $$1044] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1046, $$1044] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$841][$$840] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$701] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$694] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$694(ASC), $$708(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$709][$$712] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$840] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$833] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$833(ASC), $$867(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$868][$$871] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1146(ASC), $$885(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1146(ASC), $$885(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1669] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1669] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$887] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$513] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$687][$$688] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$688] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1055, $$1056, $$1036] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1055, $$1056, $$1036] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$701][$$700] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$701] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$694] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$694(ASC), $$708(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$709][$$712] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$700] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$786, $$787, $$692, $$693, $$726, $$727, $$730, $$734] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$786(ASC), $$787(ASC), $$692(ASC), $$693(ASC), $$726(ASC), $$727(ASC), $$730(ASC), $$734(ASC), $$895(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$896][$$899] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$692, $$693][$$726, $$727] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$692][$$730] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$730] |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$693][$$734] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$829] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1046, $$1044] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1046, $$1044] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$841][$$840] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$701] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$694] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$694(ASC), $$708(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$709][$$712] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$840] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$833] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$833(ASC), $$867(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$868][$$871] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$726] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$786][$$787] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$787] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1048, $$1049, $$1042] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1048, $$1049, $$1042] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$800][$$799] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$800] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$793] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$793(ASC), $$807(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$808][$$811] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1146(ASC), $$885(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1146(ASC), $$885(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1669] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1669] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$887] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$799] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$791, $$792, $$825, $$829] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$791(ASC), $$792(ASC), $$825(ASC), $$829(ASC), $$881(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$882][$$885] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$791][$$825] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$825] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$792][$$829] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$829] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1046, $$1044] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1046, $$1044] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$841][$$840] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$701] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$694] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$694(ASC), $$708(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$709][$$712] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$840] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$833] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$833(ASC), $$867(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$868][$$871] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1146(ASC), $$885(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1146(ASC), $$885(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1669] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1669] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$887] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1147(ASC), $$899(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1147(ASC), $$899(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1671] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1671] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$901] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1148(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1148(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1673] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1673] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-simple.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-simple.plan
index 9270c86..757511d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-simple.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-simple.plan
@@ -4,143 +4,18 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$12][$$idLeft_0] |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$13][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$92, $$90] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$92, $$90] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$27] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$27(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$97(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$97(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$104] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$104] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$23] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$23(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$97(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$97(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$104] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$104] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-star.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-star.plan
index 6de1788..669a4a1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-star.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-dblp-csx-star.plan
@@ -4,499 +4,59 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$50, $$51, $$52][$$idLeft_0, $$idLeft_1, $$idLeft_2] |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$50, $$51, $$52][$$idLeft_0, $$idLeft_1, $$idLeft_2] |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$50, $$51][$$idLeft_0, $$idLeft_1] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$50][$$idLeft_0] |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$51][$$idRight_0] |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$802] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1125, $$1123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1125, $$1123] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$816][$$815] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$816] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$809] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$809(ASC), $$824(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$825][$$828] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$815] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$808] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$808(ASC), $$847(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$848][$$851] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$52][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1075, $$1073, $$1067] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1075, $$1073, $$1067] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$875] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$868] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$868(ASC), $$881(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$882][$$885] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1232(ASC), $$968(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1232(ASC), $$968(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1755] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1755] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$970] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$162, $$163, $$155, $$156] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$162(ASC), $$163(ASC), $$155(ASC), $$156(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$866][$$898] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$797] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$757][$$802] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$802] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1125, $$1123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1125, $$1123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$816][$$815] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$816] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$809] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$809(ASC), $$824(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$825][$$828] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$815] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$808] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$808(ASC), $$847(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$848][$$851] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1232(ASC), $$968(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1232(ASC), $$968(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1755] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1755] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$970] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$53][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -504,1860 +64,19 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1096, $$1098, $$1101, $$1078] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1096, $$1098, $$1101, $$1078] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$766] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$759] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$759(ASC), $$774(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$775][$$778] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1233(ASC), $$981(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1233(ASC), $$981(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1757] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1757] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$983] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$304, $$293, $$294, $$295, $$296, $$299, $$364, $$365] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$304(ASC), $$293(ASC), $$294(ASC), $$295(ASC), $$296(ASC), $$299(ASC), $$364(ASC), $$365(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$293, $$295][$$294, $$296] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$756][$$797] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$797] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$757][$$802] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$802] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1125, $$1123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1125, $$1123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$816][$$815] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$816] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$809] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$809(ASC), $$824(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$825][$$828] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$815] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$808] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$808(ASC), $$847(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$848][$$851] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$294] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$364][$$365] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$365] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1090, $$1092, $$1084] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1090, $$1092, $$1084] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$378][$$377] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$875] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$868] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$868(ASC), $$881(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$882][$$885] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1232(ASC), $$968(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1232(ASC), $$968(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1755] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1755] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$970] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$377] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$369, $$401, $$370, $$407] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$369(ASC), $$401(ASC), $$370(ASC), $$407(ASC), $$467(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$468][$$471] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$866][$$898] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$797] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$757][$$802] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$802] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1125, $$1123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1125, $$1123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$816][$$815] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$816] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$809] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$809(ASC), $$824(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$825][$$828] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$815] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$808] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$808(ASC), $$847(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$848][$$851] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1232(ASC), $$968(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1232(ASC), $$968(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1755] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1755] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$970] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1233(ASC), $$981(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1233(ASC), $$981(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1757] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1757] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$983] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$54][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1148, $$1151, $$1153, $$1104] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1148, $$1151, $$1153, $$1104] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$995] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$995(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1234(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1234(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1759] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1759] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$749, $$558, $$750, $$559, $$560, $$561, $$562, $$563, $$566, $$567, $$569, $$634, $$574] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$749(ASC), $$558(ASC), $$750(ASC), $$559(ASC), $$560(ASC), $$561(ASC), $$562(ASC), $$563(ASC), $$566(ASC), $$567(ASC), $$569(ASC), $$634(ASC), $$574(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$558, $$560, $$562][$$559, $$561, $$563] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$558, $$560][$$566, $$567] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$558][$$569] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$797] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$757][$$802] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$802] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1125, $$1123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1125, $$1123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$816][$$815] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$816] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$809] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$809(ASC), $$824(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$825][$$828] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$815] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$808] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$808(ASC), $$847(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$848][$$851] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$566] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$562][$$634] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$634] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1117, $$1119, $$1110] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1117, $$1119, $$1110] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$647][$$646] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$875] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$868] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$868(ASC), $$881(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$882][$$885] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1232(ASC), $$968(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1232(ASC), $$968(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1755] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1755] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$970] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$646] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$676, $$638, $$670, $$639] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$676(ASC), $$638(ASC), $$670(ASC), $$639(ASC), $$736(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$737][$$740] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$866][$$898] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$797] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$757][$$802] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$802] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1125, $$1123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1125, $$1123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$816][$$815] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$816] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$809] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$809(ASC), $$824(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$825][$$828] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$815] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$808] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$808(ASC), $$847(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$848][$$851] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1232(ASC), $$968(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1232(ASC), $$968(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1755] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1755] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$970] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$559] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$749][$$750] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$750] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1139, $$1140, $$1141, $$1121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1139, $$1140, $$1141, $$1121] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$766][$$765] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$766] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$759] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$759(ASC), $$774(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$775][$$778] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1233(ASC), $$981(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1233(ASC), $$981(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1757] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1757] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$983] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$765] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$802, $$756, $$757, $$758, $$793, $$794, $$797, $$862] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$802(ASC), $$756(ASC), $$757(ASC), $$758(ASC), $$793(ASC), $$794(ASC), $$797(ASC), $$862(ASC), $$977(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$978][$$981] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$756, $$757][$$793, $$794] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$756][$$797] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$797] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$757][$$802] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$802] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1125, $$1123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1125, $$1123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$816][$$815] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$816] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$809] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$809(ASC), $$824(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$825][$$828] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$815] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$808] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$808(ASC), $$847(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$848][$$851] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$793] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$758][$$862] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$862] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1133, $$1135, $$1127] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1133, $$1135, $$1127] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$875][$$874] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$875] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$868] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$868(ASC), $$881(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$882][$$885] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1232(ASC), $$968(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1232(ASC), $$968(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1755] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1755] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$970] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$874] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$866, $$898, $$867, $$904] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$866(ASC), $$898(ASC), $$867(ASC), $$904(ASC), $$964(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$965][$$968] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$866][$$898] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$797] |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$757][$$802] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$802] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1125, $$1123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1125, $$1123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$816][$$815] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$816] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$809] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$809(ASC), $$824(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$825][$$828] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$815] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$808] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$808(ASC), $$847(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$848][$$851] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1228(ASC), $$851(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1228(ASC), $$851(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1747] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1747] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$853] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1232(ASC), $$968(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1232(ASC), $$968(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1755] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1755] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$970] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1233(ASC), $$981(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1233(ASC), $$981(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1757] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1757] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$983] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1234(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1234(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$1759] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$1759] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/group-by/grouping-sets-1.1.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/group-by/grouping-sets-1.1.plan
index 72d2bb1..aec6087 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/group-by/grouping-sets-1.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/group-by/grouping-sets-1.1.plan
@@ -1,8 +1,8 @@
-- DISTRIBUTE_RESULT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$245(ASC), $$246(ASC), $$247(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$245(ASC), $$246(ASC), $$247(ASC)] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$385(ASC), $$386(ASC), $$387(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$385(ASC), $$386(ASC), $$387(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- UNION_ALL |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -14,74 +14,14 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$253] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$253] |PARTITIONED|
- -- SORT_GROUP_BY[$$232] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$255] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$255] |PARTITIONED|
- -- SORT_GROUP_BY[$$233] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$257, $$258] |PARTITIONED|
+ -- SORT_GROUP_BY[$$1077] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
}
- -- HASH_PARTITION_EXCHANGE [$$257, $$258] |PARTITIONED|
- -- SORT_GROUP_BY[$$234, $$235] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$1077] |PARTITIONED|
+ -- SORT_GROUP_BY[$$238] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
@@ -99,33 +39,85 @@
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$260] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$260] |PARTITIONED|
- -- SORT_GROUP_BY[$$236] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$1079] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$1079] |PARTITIONED|
+ -- SORT_GROUP_BY[$$239] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$1081, $$1082] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
}
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$1081, $$1082] |PARTITIONED|
+ -- SORT_GROUP_BY[$$240, $$241] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$1084] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$1084] |PARTITIONED|
+ -- SORT_GROUP_BY[$$242] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/group-by/grouping-sets-1.2.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/group-by/grouping-sets-1.2.plan
index bea5ef6..ed348a1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/group-by/grouping-sets-1.2.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/group-by/grouping-sets-1.2.plan
@@ -1,8 +1,8 @@
-- DISTRIBUTE_RESULT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$759(ASC), $$760(ASC), $$761(ASC), $$762(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$759(ASC), $$760(ASC), $$761(ASC), $$762(ASC)] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$1224(ASC), $$1225(ASC), $$1226(ASC), $$1227(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$1224(ASC), $$1225(ASC), $$1226(ASC), $$1227(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- UNION_ALL |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -12,7 +12,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- UNION_ALL |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNION_ALL |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- UNION_ALL |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -26,350 +26,339 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- UNION_ALL |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$776, $$777, $$778, $$779] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$776, $$777, $$778, $$779] |PARTITIONED|
- -- SORT_GROUP_BY[$$710, $$711, $$712, $$713] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- UNION_ALL |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$10189, $$10190, $$10191, $$10192] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$10189, $$10190, $$10191, $$10192] |PARTITIONED|
+ -- SORT_GROUP_BY[$$717, $$718, $$719, $$720] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$10194, $$10195, $$10196] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$10194, $$10195, $$10196] |PARTITIONED|
+ -- SORT_GROUP_BY[$$721, $$722, $$723] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$10198, $$10199, $$10200] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$10198, $$10199, $$10200] |PARTITIONED|
+ -- SORT_GROUP_BY[$$724, $$725, $$726] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$10202, $$10203] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$10202, $$10203] |PARTITIONED|
+ -- SORT_GROUP_BY[$$727, $$728] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$10205, $$10206, $$10207] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$10205, $$10206, $$10207] |PARTITIONED|
+ -- SORT_GROUP_BY[$$729, $$730, $$731] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$10209, $$10210] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$10209, $$10210] |PARTITIONED|
+ -- SORT_GROUP_BY[$$732, $$733] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$10212, $$10213] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$10212, $$10213] |PARTITIONED|
+ -- SORT_GROUP_BY[$$734, $$735] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$781, $$782, $$783] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$781, $$782, $$783] |PARTITIONED|
- -- SORT_GROUP_BY[$$714, $$715, $$716] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$10215] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$10215] |PARTITIONED|
+ -- SORT_GROUP_BY[$$736] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$785, $$786, $$787] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$785, $$786, $$787] |PARTITIONED|
- -- SORT_GROUP_BY[$$717, $$718, $$719] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$789, $$790] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$789, $$790] |PARTITIONED|
- -- SORT_GROUP_BY[$$720, $$721] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$10217, $$10218] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$10217, $$10218] |PARTITIONED|
+ -- SORT_GROUP_BY[$$737, $$738] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$792, $$793, $$794] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$792, $$793, $$794] |PARTITIONED|
- -- SORT_GROUP_BY[$$722, $$723, $$724] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$10220] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$10220] |PARTITIONED|
+ -- SORT_GROUP_BY[$$739] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$796, $$797] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$796, $$797] |PARTITIONED|
- -- SORT_GROUP_BY[$$725, $$726] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$10222] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$10222] |PARTITIONED|
+ -- SORT_GROUP_BY[$$740] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$799, $$800] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$799, $$800] |PARTITIONED|
- -- SORT_GROUP_BY[$$727, $$728] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$802] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$802] |PARTITIONED|
- -- SORT_GROUP_BY[$$729] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$804, $$805] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$804, $$805] |PARTITIONED|
- -- SORT_GROUP_BY[$$730, $$731] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$807] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$807] |PARTITIONED|
- -- SORT_GROUP_BY[$$732] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$809] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$809] |PARTITIONED|
- -- SORT_GROUP_BY[$$733] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- SORT_GROUP_BY[$$811] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- SORT_GROUP_BY[$$10224] |PARTITIONED|
+ {
+ -- AGGREGATE |LOCAL|
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- HASH_PARTITION_EXCHANGE [$$10224] |PARTITIONED|
+ -- SORT_GROUP_BY[$$741] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
}
- -- HASH_PARTITION_EXCHANGE [$$811] |PARTITIONED|
- -- SORT_GROUP_BY[$$734] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join-noeqjoin/ngram-jaccard-inline.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join-noeqjoin/ngram-jaccard-inline.plan
index 1a36d3c..f9372b2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join-noeqjoin/ngram-jaccard-inline.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join-noeqjoin/ngram-jaccard-inline.plan
@@ -3,154 +3,32 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$55][$$46] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$46][$$idLeft_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$46] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$47][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$58(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125, $$123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125, $$123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$56(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$130(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$130(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$137] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$137] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$56(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$130(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$130(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$137] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$137] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join-noeqjoin/word-jaccard-inline.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join-noeqjoin/word-jaccard-inline.plan
index 1a36d3c..f9372b2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join-noeqjoin/word-jaccard-inline.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join-noeqjoin/word-jaccard-inline.plan
@@ -3,154 +3,32 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$55][$$46] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$46][$$idLeft_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$46] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$47][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$58(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125, $$123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125, $$123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$56(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$130(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$130(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$137] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$137] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$56(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$130(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$130(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$137] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$137] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/issue741.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/issue741.plan
index 619b74e..4580d06 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/issue741.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/issue741.plan
@@ -14,7 +14,7 @@
-- HASH_PARTITION_EXCHANGE [$$54] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$65][$$54] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
@@ -24,143 +24,22 @@
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$54] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$55][$$idRight_0] |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$135, $$133] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$135, $$133] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$70] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$70(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$140(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$140(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$147] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$147] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$68(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$66] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$66(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$140(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$140(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$147] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$147] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.plan
index 774794e..67b7088 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.plan
@@ -14,159 +14,35 @@
-- HASH_PARTITION_EXCHANGE [$$56] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$72][$$56] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$57][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$56] |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$76(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$138, $$136] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$138, $$136] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$73] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$73(ASC), $$i(ASC)] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$143(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$143(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$150] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$150] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$67] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$67(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$143(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$143(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$150] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$150] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01_ps.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01_ps.plan
index 336a4d4..3a5824d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01_ps.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01_ps.plan
@@ -20,162 +20,38 @@
-- HASH_PARTITION_EXCHANGE [$$56] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$72][$$56] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$57][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$56] |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$76(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$138, $$136] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$138, $$136] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$73] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$73(ASC), $$i(ASC)] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$143(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$143(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$150] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$150] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$67] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$67(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$143(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$143(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$150] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$150] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- BROADCAST_EXCHANGE |PARTITIONED|
-- AGGREGATE |UNPARTITIONED|
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
@@ -195,159 +71,35 @@
-- HASH_PARTITION_EXCHANGE [$$56] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$72][$$56] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$57][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$56] |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$76(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$138, $$136] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$138, $$136] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$73] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$73(ASC), $$i(ASC)] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$143(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$143(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$150] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$150] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$67] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$67(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$143(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$143(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$150] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$150] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan
index df6eef4..38b5343 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$24][$$14] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$14][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$14] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$27(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$94, $$92] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$94, $$92] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$29] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$25] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$25(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-fuzzyeq-jaccard_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-fuzzyeq-jaccard_02.plan
index cbbce46..53559f6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-fuzzyeq-jaccard_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-fuzzyeq-jaccard_02.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$42][$$32] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$32][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$32] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$45(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$112, $$110] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$112, $$110] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$47] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$47(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$117(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$117(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$124] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$124] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$43] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$43(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$117(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$117(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$124] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$124] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-fuzzyeq-jaccard_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-fuzzyeq-jaccard_03.plan
index 79e824e..53559f6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-fuzzyeq-jaccard_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-fuzzyeq-jaccard_03.plan
@@ -3,141 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$42][$$32] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$32][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$32] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$45(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$112, $$110] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$112, $$110] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$43] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$43(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$117(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$117(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$124] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$124] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$43] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$43(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$117(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$117(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$124] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$124] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_01.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_01.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_02.plan
index 1daa1cf..956cdc5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_02.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$43][$$33] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$33] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$34][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$46(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$113, $$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$113, $$111] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$48] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$48(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_03.plan
index 01e070e..956cdc5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_03.plan
@@ -3,141 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$43][$$33] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$33] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$34][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$46(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$113, $$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$113, $$111] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_04.plan
index 22ad072..2a2ad4f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard-check_04.plan
@@ -3,143 +3,27 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$55][$$43] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$43][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$44][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125, $$123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125, $$123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$56(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$130(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$130(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$137] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$137] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$56(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$130(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$130(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$137] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$137] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$43] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$58(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_01.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_01.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_02.plan
index 1daa1cf..956cdc5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_02.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$43][$$33] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$33] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$34][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$46(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$113, $$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$113, $$111] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$48] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$48(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_03.plan
index 01e070e..956cdc5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_03.plan
@@ -3,141 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$43][$$33] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$33] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$34][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$46(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$113, $$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$113, $$111] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_04.plan
index d3acd29..10f2ce8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/ngram-jaccard_04.plan
@@ -3,143 +3,27 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$55][$$42] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$42][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$43][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125, $$123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125, $$123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$56(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$130(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$130(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$137] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$137] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$56(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$130(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$130(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$137] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$137] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$42] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$58(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-fuzzyeq-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-fuzzyeq-jaccard_01.plan
index df6eef4..38b5343 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-fuzzyeq-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-fuzzyeq-jaccard_01.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$24][$$14] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$14][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$14] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$27(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$94, $$92] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$94, $$92] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$29] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$25] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$25(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-fuzzyeq-jaccard_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-fuzzyeq-jaccard_02.plan
index cbbce46..53559f6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-fuzzyeq-jaccard_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-fuzzyeq-jaccard_02.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$42][$$32] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$32][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$32] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$45(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$112, $$110] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$112, $$110] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$47] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$47(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$117(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$117(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$124] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$124] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$43] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$43(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$117(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$117(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$124] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$124] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-fuzzyeq-jaccard_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-fuzzyeq-jaccard_03.plan
index 79e824e..53559f6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-fuzzyeq-jaccard_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-fuzzyeq-jaccard_03.plan
@@ -3,141 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$42][$$32] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$32][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$32] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$45(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$112, $$110] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$112, $$110] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$43] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$43(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$117(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$117(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$124] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$124] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$43] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$43(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$117(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$117(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$124] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$124] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check-after-btree-access.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check-after-btree-access.plan
index 80d465e..3fdbcd1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check-after-btree-access.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check-after-btree-access.plan
@@ -2,156 +2,40 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$50][$$idLeft_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$51][$$idRight_0] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$63][$$50] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$130, $$128] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$130, $$128] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$50] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$68(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$65] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$65(ASC), $$i(ASC)] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$135(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$135(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$142] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$142] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$60] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$60(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$135(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$135(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$142] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$142] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_01.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_01.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_02.plan
index 1daa1cf..956cdc5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_02.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$43][$$33] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$33] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$34][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$46(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$113, $$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$113, $$111] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$48] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$48(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_03.plan
index 01e070e..956cdc5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_03.plan
@@ -3,141 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$43][$$33] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$33] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$34][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$46(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$113, $$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$113, $$111] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_04.plan
index 22ad072..2a2ad4f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard-check_04.plan
@@ -3,143 +3,27 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$55][$$43] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$43][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$44][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125, $$123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125, $$123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$56(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$130(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$130(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$137] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$137] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$56(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$130(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$130(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$137] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$137] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$43] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$58(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_01.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_01.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_02.plan
index 1daa1cf..956cdc5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_02.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$43][$$33] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$33] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$34][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$46(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$113, $$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$113, $$111] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$48] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$48(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_03.plan
index 01e070e..956cdc5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_03.plan
@@ -3,141 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$43][$$33] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$33] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$34][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$46(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$113, $$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$113, $$111] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$118(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$118(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_04.plan
index d3acd29..10f2ce8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inverted-index-join/word-jaccard_04.plan
@@ -3,143 +3,27 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$55][$$42] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$42][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$43][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$125, $$123] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$125, $$123] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$56(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$130(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$130(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$137] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$137] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$56(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$130(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$130(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$137] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$137] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$42] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$58(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.plan
index 874503d..4a3ac9a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.plan
@@ -15,161 +15,42 @@
-- HASH_PARTITION_EXCHANGE [$$39] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$60][$$39] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$39] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$40][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$136, $$134] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$136, $$134] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$67] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$67(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- STABLE_SORT [$$66(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$141(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$141(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$148] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$148] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$61] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$61(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$141(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$141(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$148] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$148] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01_ps.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01_ps.plan
index dc19740..93d1ef5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01_ps.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01_ps.plan
@@ -21,164 +21,45 @@
-- HASH_PARTITION_EXCHANGE [$$68] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$89][$$68] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$68] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$69][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$165, $$163] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$165, $$163] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$96] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$96(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- STABLE_SORT [$$95(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$170(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$170(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$177] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$177] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$90] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$90(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$170(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$170(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$177] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$177] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- BROADCAST_EXCHANGE |PARTITIONED|
-- AGGREGATE |UNPARTITIONED|
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
@@ -198,161 +79,42 @@
-- HASH_PARTITION_EXCHANGE [$$68] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$89][$$68] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$68] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$69][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$165, $$163] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$165, $$163] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$96] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$96(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- STABLE_SORT [$$95(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$170(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$170(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$177] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$177] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$90] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$90(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$170(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$170(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$177] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$177] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan
index 44471c4..826f335 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$30][$$20] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$20][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$20] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$108, $$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$108, $$106] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$35(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$39] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$39(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$33(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-jaccard-check_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-jaccard-check_01.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-jaccard-check_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-jaccard-check_01.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-jaccard-inline.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-jaccard-inline.plan
index 3ece49c..9dd364e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-jaccard-inline.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-jaccard-inline.plan
@@ -3,158 +3,35 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$41][$$26] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$26][$$idLeft_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$27][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$26] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$119, $$117] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$119, $$117] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$46(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$124(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$124(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$131] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$131] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$124(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$124(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$131] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$131] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-jaccard_01.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/ngram-jaccard_01.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-fuzzyeq-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-fuzzyeq-jaccard_01.plan
index 44471c4..826f335 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-fuzzyeq-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-fuzzyeq-jaccard_01.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$30][$$20] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$20][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$20] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$108, $$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$108, $$106] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$35(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$39] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$39(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$33(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard-check-after-btree-access.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard-check-after-btree-access.plan
index cfd8f3f..cb9ca09 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard-check-after-btree-access.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard-check-after-btree-access.plan
@@ -2,160 +2,48 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$31][$$idLeft_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$49][$$31] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$32][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$31] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$56(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$124, $$122] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$124, $$122] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$55] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$55(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$129(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$129(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$136] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$136] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$49] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$49(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$129(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$129(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$136] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$136] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard-check_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard-check_01.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard-check_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard-check_01.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard-inline.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard-inline.plan
index 3ece49c..9dd364e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard-inline.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard-inline.plan
@@ -3,158 +3,35 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$41][$$26] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$26][$$idLeft_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$27][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$26] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$119, $$117] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$119, $$117] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$46(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$124(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$124(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$131] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$131] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$124(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$124(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$131] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$131] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard_01.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/inverted-index-join/word-jaccard_01.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan
index 44471c4..826f335 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$30][$$20] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$20][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$20] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$108, $$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$108, $$106] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$35(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$39] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$39(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$33(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_02.plan
index 44471c4..826f335 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_02.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$30][$$20] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$20][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$20] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$108, $$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$108, $$106] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$35(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$39] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$39(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$33(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_03.plan
index ab750e8..826f335 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_03.plan
@@ -3,145 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$30][$$20] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$20][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$20] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$108, $$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$108, $$106] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$35(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$33(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$33(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_04.plan
index 44471c4..826f335 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_04.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$30][$$20] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$20][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$20] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$108, $$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$108, $$106] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$35(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$39] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$39(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$33(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_01.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_01.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_02.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_02.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_03.plan
index bbea9b2..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_03.plan
@@ -3,145 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_04.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-check_04.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-inline.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-inline.plan
index 3ece49c..9dd364e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-inline.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard-inline.plan
@@ -3,158 +3,35 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$41][$$26] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$26][$$idLeft_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$27][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$26] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$119, $$117] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$119, $$117] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$46(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$124(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$124(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$131] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$131] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$124(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$124(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$131] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$131] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_01.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_01.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_02.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_02.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_03.plan
index bbea9b2..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_03.plan
@@ -3,145 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_04.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/ngram-jaccard_04.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_01.plan
index 44471c4..826f335 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_01.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$30][$$20] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$20][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$20] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$108, $$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$108, $$106] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$35(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$39] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$39(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$33(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_02.plan
index 44471c4..826f335 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_02.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$30][$$20] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$20][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$20] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$108, $$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$108, $$106] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$35(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$39] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$39(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$33(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_03.plan
index ab750e8..826f335 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_03.plan
@@ -3,145 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$30][$$20] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$20][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$20] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$108, $$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$108, $$106] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$35(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$33(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$33(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_04.plan
index 44471c4..826f335 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_04.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$30][$$20] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$20][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$20] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$108, $$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$108, $$106] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$35(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$39] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$39(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$33(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$113(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$113(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$120] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check-after-btree-access.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check-after-btree-access.plan
index cfd8f3f..cb9ca09 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check-after-btree-access.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check-after-btree-access.plan
@@ -2,160 +2,48 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$31][$$idLeft_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$49][$$31] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$32][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$31] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$56(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$124, $$122] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$124, $$122] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$55] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$55(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$129(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$129(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$136] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$136] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$49] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$49(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$129(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$129(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$136] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$136] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_01.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_01.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_02.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_02.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_03.plan
index bbea9b2..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_03.plan
@@ -3,145 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_04.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-check_04.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-inline.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-inline.plan
index 3ece49c..9dd364e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-inline.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard-inline.plan
@@ -3,158 +3,35 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$41][$$26] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$26][$$idLeft_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$27][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$26] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$119, $$117] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$119, $$117] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$46(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$124(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$124(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$131] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$131] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$44] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$44(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$124(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$124(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$131] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$131] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_01.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_01.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_02.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_02.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_03.plan
index bbea9b2..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_03.plan
@@ -3,145 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_04.plan
index 3790694..e91e17c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/inverted-index-join/word-jaccard_04.plan
@@ -3,146 +3,29 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$31][$$21] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$21][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$22][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$109, $$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$109, $$107] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$40(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$114(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$114(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$121] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan
index df6eef4..38b5343 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_01.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$24][$$14] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$14][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$14] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$27(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$94, $$92] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$94, $$92] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$29] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$25] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$25(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_02.plan
index df6eef4..38b5343 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_02.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$24][$$14] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$14][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$14] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$27(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$94, $$92] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$94, $$92] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$29] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$25] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$25(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_03.plan
index 7bcd281..38b5343 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_03.plan
@@ -3,141 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$24][$$14] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$14][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$14] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$27(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$94, $$92] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$94, $$92] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$25] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$25(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$25] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$25(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_04.plan
index df6eef4..38b5343 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_04.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$24][$$14] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$14][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$14] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$27(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$94, $$92] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$94, $$92] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$29] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$25] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$25(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_01.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_01.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_02.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_02.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_03.plan
index 40b2f5b..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_03.plan
@@ -3,141 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_04.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_04.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_inline_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_inline_03.plan
index c07cb22..3b0a3c9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_inline_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard-check_inline_03.plan
@@ -3,143 +3,27 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$29][$$17] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$17][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$18][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$99, $$97] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$99, $$97] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$104(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$104(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$111] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$104(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$104(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$111] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$17] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$32(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_01.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_01.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_02.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_02.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_03.plan
index 40b2f5b..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_03.plan
@@ -3,141 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_04.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_04.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_inline_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_inline_03.plan
index 79e7525..443e560 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_inline_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/ngram-jaccard_inline_03.plan
@@ -3,143 +3,27 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$29][$$16] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$17][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$99, $$97] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$99, $$97] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$104(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$104(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$111] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$104(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$104(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$111] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$16] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$32(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_01.plan
index df6eef4..38b5343 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_01.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$24][$$14] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$14][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$14] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$27(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$94, $$92] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$94, $$92] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$29] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$25] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$25(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_02.plan
index df6eef4..38b5343 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_02.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$24][$$14] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$14][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$14] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$27(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$94, $$92] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$94, $$92] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$29] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$25] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$25(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_03.plan
index 7bcd281..38b5343 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_03.plan
@@ -3,141 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$24][$$14] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$14][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$14] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$27(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$94, $$92] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$94, $$92] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$25] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$25(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$25] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$25(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_04.plan
index df6eef4..38b5343 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_04.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$24][$$14] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$14][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$14] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$27(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$94, $$92] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$94, $$92] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$29] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$25] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$25(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$99(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$99(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$106] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check-after-btree-access.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check-after-btree-access.plan
index 0cf00f2..0cd8363 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check-after-btree-access.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check-after-btree-access.plan
@@ -2,156 +2,40 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$24][$$idLeft_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$25][$$idRight_0] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$37][$$24] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$104, $$102] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$104, $$102] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$24] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$42(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$39] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
+ -- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$39(ASC), $$i(ASC)] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$109(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$109(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$116] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$116] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$34(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- BTREE_SEARCH |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$109(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$109(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$116] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$116] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_01.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_01.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_02.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_02.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_03.plan
index 40b2f5b..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_03.plan
@@ -3,141 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_04.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_04.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_inline_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_inline_03.plan
index c07cb22..3b0a3c9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_inline_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard-check_inline_03.plan
@@ -3,143 +3,27 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$29][$$17] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$17][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$18][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$99, $$97] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$99, $$97] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$104(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$104(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$111] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$104(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$104(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$111] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$17] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$32(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_01.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_01.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_02.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_02.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_03.plan
index 40b2f5b..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_03.plan
@@ -3,141 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_04.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_04.plan
index a871960..4ae3e53 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_04.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_04.plan
@@ -3,142 +3,26 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$25][$$15] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idRight_0] |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
+ -- STABLE_SORT [$$28(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$95, $$93] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$95, $$93] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$26] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$26(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$100(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$100(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$107] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$107] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_inline_03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_inline_03.plan
index 79e7525..443e560 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_inline_03.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-enforced/inverted-index-join/word-jaccard_inline_03.plan
@@ -3,143 +3,27 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$29][$$16] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$16][$$idLeft_0] |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idLeft_0] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$17][$$idRight_0] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$idRight_0] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$99, $$97] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$99, $$97] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$prefixTokenRight][$$prefixTokenLeft] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$104(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$104(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$111] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$prefixTokenLeft] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$30] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- STREAM_SELECT |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC), $$i(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$token][$$tokenGroupped] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- RUNNING_AGGREGATE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$104(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$104(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$111] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- HASH_PARTITION_EXCHANGE [$$111] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$token] |PARTITIONED|
- {
- -- AGGREGATE |LOCAL|
- -- NESTED_TUPLE_SOURCE |LOCAL|
- }
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$16] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$32(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_01.plan
index 2348735..3584dca 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_01.plan
@@ -15,14 +15,14 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$22(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$23(ASC) ] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_01_ps.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_01_ps.plan
index 1b855f5..473c2d8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_01_ps.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_01_ps.plan
@@ -16,8 +16,8 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$22(ASC)] |PARTITIONED|
- -- RANGE_PARTITION_EXCHANGE [$$22(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$23(ASC)] |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$23(ASC)] |PARTITIONED|
-- FORWARD |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
@@ -28,7 +28,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -50,7 +50,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_02.plan
index 6bb0d82..fa82276 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_02.plan
@@ -15,14 +15,14 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$24(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$25(ASC) ] |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_02_ps.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_02_ps.plan
index 179b91c..26faa03 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_02_ps.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive-open_02_ps.plan
@@ -16,8 +16,8 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$24(ASC)] |PARTITIONED|
- -- RANGE_PARTITION_EXCHANGE [$$24(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$25(ASC)] |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$25(ASC)] |PARTITIONED|
-- FORWARD |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
@@ -28,7 +28,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -50,7 +50,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_01.plan
index 2348735..3584dca 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_01.plan
@@ -15,14 +15,14 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$22(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$23(ASC) ] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_01_ps.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_01_ps.plan
index 1b855f5..473c2d8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_01_ps.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_01_ps.plan
@@ -16,8 +16,8 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$22(ASC)] |PARTITIONED|
- -- RANGE_PARTITION_EXCHANGE [$$22(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$23(ASC)] |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$23(ASC)] |PARTITIONED|
-- FORWARD |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
@@ -28,7 +28,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -50,7 +50,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$29(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_02.plan
index 6bb0d82..fa82276 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_02.plan
@@ -15,14 +15,14 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$24(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$25(ASC) ] |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_02_ps.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_02_ps.plan
index 179b91c..26faa03 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_02_ps.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orders-index-search-conjunctive_02_ps.plan
@@ -16,8 +16,8 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$24(ASC)] |PARTITIONED|
- -- RANGE_PARTITION_EXCHANGE [$$24(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$25(ASC)] |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$25(ASC)] |PARTITIONED|
-- FORWARD |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
@@ -28,7 +28,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -50,7 +50,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/q01_pricing_summary_report_nt_ps.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/q01_pricing_summary_report_nt_ps.plan
index f774187..b99c3c6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/q01_pricing_summary_report_nt_ps.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/q01_pricing_summary_report_nt_ps.plan
@@ -22,13 +22,13 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$201, $$202] |PARTITIONED|
+ -- EXTERNAL_GROUP_BY[$$212, $$213] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
}
- -- HASH_PARTITION_EXCHANGE [$$201, $$202] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$170, $$171] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$212, $$213] |PARTITIONED|
+ -- EXTERNAL_GROUP_BY[$$181, $$182] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
@@ -51,13 +51,13 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$201, $$202] |PARTITIONED|
+ -- EXTERNAL_GROUP_BY[$$212, $$213] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
}
- -- HASH_PARTITION_EXCHANGE [$$201, $$202] |PARTITIONED|
- -- EXTERNAL_GROUP_BY[$$170, $$171] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$212, $$213] |PARTITIONED|
+ -- EXTERNAL_GROUP_BY[$$181, $$182] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-2354.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-2354.plan
index 0181a84..dbcdb5b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-2354.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-2354.plan
@@ -1,46 +1,45 @@
-- DISTRIBUTE_RESULT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$74(ASC), $$75(ASC), $$76(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$74(ASC), $$75(ASC), $$76(ASC)] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$114(ASC), $$115(ASC), $$116(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$114(ASC), $$115(ASC), $$116(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- UNION_ALL |PARTITIONED|
- -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
- -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-2354_ps.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-2354_ps.plan
index a17555e..6e96ce5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-2354_ps.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-2354_ps.plan
@@ -2,52 +2,51 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$74(ASC), $$75(ASC), $$76(ASC)] |PARTITIONED|
- -- RANGE_PARTITION_EXCHANGE [$$74(ASC), $$75(ASC), $$76(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$114(ASC), $$115(ASC), $$116(ASC)] |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$114(ASC), $$115(ASC), $$116(ASC)] |PARTITIONED|
-- FORWARD |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- UNION_ALL |PARTITIONED|
- -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
- -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- BROADCAST_EXCHANGE |PARTITIONED|
-- AGGREGATE |UNPARTITIONED|
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
@@ -57,42 +56,41 @@
-- REPLICATE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- UNION_ALL |PARTITIONED|
- -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
- -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849-2.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849-2.plan
index 496ae5a..05a9e35 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849-2.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849-2.plan
@@ -20,12 +20,12 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$41][$$43] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$44][$$46] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$43] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$46] |PARTITIONED|
-- STREAM_PROJECT |UNPARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849.plan
index 08fa6a0..2638f71 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849.plan
@@ -20,8 +20,8 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$42][$$41] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$42] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$45][$$44] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$45] |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/skip-index/skip-secondary-btree-index-3.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/skip-index/skip-secondary-btree-index-3.plan
new file mode 100644
index 0000000..87bb65f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/skip-index/skip-secondary-btree-index-3.plan
@@ -0,0 +1,15 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$14][$$17] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- UNNEST |UNPARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/statement-params/statement-params-index-01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/statement-params/statement-params-index-01.plan
new file mode 100644
index 0000000..0f02160
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/statement-params/statement-params-index-01.plan
@@ -0,0 +1,19 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$28(ASC) ] |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/statement-params/statement-params-index-02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/statement-params/statement-params-index-02.plan
new file mode 100644
index 0000000..1a1db2c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/statement-params/statement-params-index-02.plan
@@ -0,0 +1,30 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$29(ASC) ] |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INTERSECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$36(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$40(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_after/interval_after.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_after/interval_after.3.query.plan
index 6ac3ccc..1aab448 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_after/interval_after.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_after/interval_after.3.query.plan
@@ -2,21 +2,30 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$34(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_FOLLOWING_EXCHANGE [$$36(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_before/interval_before.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_before/interval_before.3.query.plan
index 757511d..883bfed 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_before/interval_before.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_before/interval_before.3.query.plan
@@ -4,18 +4,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_FOLLOWING_EXCHANGE [$$34(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$36(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.plan
index 757511d..a9f6d74 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.plan
@@ -4,18 +4,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$34(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE [{$$36,$$37,ASC}] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covers/interval_covers.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covers/interval_covers.3.query.plan
index 757511d..d67dc29 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covers/interval_covers.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_covers/interval_covers.3.query.plan
@@ -4,18 +4,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE [{$$34,$$35,ASC}] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$36(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.plan
index 757511d..a9f6d74 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.plan
@@ -4,18 +4,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$34(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE [{$$36,$$37,ASC}] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.plan
index 757511d..9f4a00d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.plan
@@ -4,18 +4,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE [{$$34,$$35,ASC}] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE [{$$36,$$37,ASC}] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.plan
index 757511d..d67dc29 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.plan
@@ -4,18 +4,28 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- INTERVAL_MERGE_JOIN [$$30] [$$31] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STABLE_SORT [$$30(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE [{$$34,$$35,ASC}] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$31(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- RANGE_PARTITION_EXCHANGE [$$36(ASC)] RANGE_MAP:{SPLIT:3} |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.plan
index 80a0089..160ab94 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.plan
@@ -16,7 +16,7 @@
-- STREAM_PROJECT |LOCAL|
-- ASSIGN |LOCAL|
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- -- PRE_CLUSTERED_GROUP_BY[$$159] |LOCAL|
+ -- PRE_CLUSTERED_GROUP_BY[$$166] |LOCAL|
{
-- AGGREGATE |LOCAL|
-- AGGREGATE |LOCAL|
@@ -26,9 +26,9 @@
-- ONE_TO_ONE_EXCHANGE |LOCAL|
-- STREAM_PROJECT |LOCAL|
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- -- HYBRID_HASH_JOIN [$$159][$$160] |LOCAL|
+ -- HYBRID_HASH_JOIN [$$166][$$167] |LOCAL|
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- -- PRE_CLUSTERED_GROUP_BY[$$95] |LOCAL|
+ -- PRE_CLUSTERED_GROUP_BY[$$102] |LOCAL|
{
-- AGGREGATE |LOCAL|
-- AGGREGATE |LOCAL|
@@ -36,11 +36,11 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- -- STABLE_SORT [$$95(ASC)] |LOCAL|
+ -- STABLE_SORT [$$102(ASC)] |LOCAL|
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
-- STREAM_PROJECT |UNPARTITIONED|
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- -- HYBRID_HASH_JOIN [$$95][$$152] |UNPARTITIONED|
+ -- HYBRID_HASH_JOIN [$$102][$$159] |UNPARTITIONED|
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
-- STREAM_PROJECT |UNPARTITIONED|
-- ASSIGN |UNPARTITIONED|
@@ -123,7 +123,7 @@
-- STREAM_SELECT |LOCAL|
-- ASSIGN |LOCAL|
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- -- PRE_CLUSTERED_GROUP_BY[$$161] |LOCAL|
+ -- PRE_CLUSTERED_GROUP_BY[$$168] |LOCAL|
{
-- AGGREGATE |LOCAL|
-- AGGREGATE |LOCAL|
@@ -131,11 +131,11 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- -- STABLE_SORT [$$161(ASC)] |LOCAL|
+ -- STABLE_SORT [$$168(ASC)] |LOCAL|
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
-- STREAM_PROJECT |UNPARTITIONED|
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- -- HYBRID_HASH_JOIN [$$161][$$162] |UNPARTITIONED|
+ -- HYBRID_HASH_JOIN [$$168][$$169] |UNPARTITIONED|
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
-- REPLICATE |UNPARTITIONED|
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_dataset.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_dataset.plan
index fdc7d4c..5a955a0 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_dataset.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_dataset.plan
@@ -1,21 +1,19 @@
-- DISTRIBUTE_RESULT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$11(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$11(ASC)] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$21(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$21(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- UNION_ALL |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_dataset3.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_dataset3.plan
index 9d51d1c..0772bd8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_dataset3.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_dataset3.plan
@@ -1,21 +1,19 @@
-- DISTRIBUTE_RESULT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$10(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$10(ASC)] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$20(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$20(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- UNION_ALL |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_opt_1_1.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_opt_1_1.plan
new file mode 100644
index 0000000..7537523
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_opt_1_1.plan
@@ -0,0 +1,47 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$122(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$122(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- UNION_ALL |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$165(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$168(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_opt_1_2.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_opt_1_2.plan
new file mode 100644
index 0000000..08770db
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_opt_1_2.plan
@@ -0,0 +1,48 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$116(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$116(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- UNION_ALL |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$141(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$144(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_opt_1_3.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_opt_1_3.plan
new file mode 100644
index 0000000..6a422c4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_opt_1_3.plan
@@ -0,0 +1,49 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$60(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$60(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- UNION_ALL |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$163(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$166(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_opt_1_4.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_opt_1_4.plan
new file mode 100644
index 0000000..85a6667
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_opt_1_4.plan
@@ -0,0 +1,50 @@
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$112(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$112(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- UNION_ALL |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$137(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STABLE_SORT [$$140(ASC)] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_query.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_query.plan
index 67de4c9..fd103f8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_query.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/union/union_query.plan
@@ -1,9 +1,9 @@
-- DISTRIBUTE_RESULT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$16(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$res(ASC) ] |PARTITIONED|
-- PRE_SORTED_DISTINCT_BY |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$16(ASC)] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$16] |PARTITIONED|
+ -- STABLE_SORT [$$res(ASC)] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$res] |PARTITIONED|
-- UNION_ALL |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01.ast
index ea19f64..d3c5a2c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01.ast
@@ -107,7 +107,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02.ast
index 090b6f4..6a10149 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02.ast
@@ -121,7 +121,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-01.ast
index 9cfb593..bdaa1c3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-01.ast
@@ -29,10 +29,10 @@
]
>=
OperatorExpr [
- FunctionCall emergencyTest.current-datetime@0[
+ FunctionCall asterix.current-datetime@0[
]
-
- FunctionCall emergencyTest.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT10H]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-02.ast
index 9359bfa..c98fc93 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-02.ast
@@ -20,10 +20,10 @@
Let Variable [ Name=$time ]
:=
OperatorExpr [
- FunctionCall emergencyTest.current-datetime@0[
+ FunctionCall asterix.current-datetime@0[
]
-
- FunctionCall emergencyTest.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT10H]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-03.ast
index 95baeaa..6cd0030 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-03.ast
@@ -24,6 +24,6 @@
Field=timestamp
]
>=
- FunctionCall emergencyTest.current-datetime@0[
+ FunctionCall asterix.current-datetime@0[
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-04.ast
index 6c2d45c..19bafd3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/btree-index/btree-datetime-04.ast
@@ -24,6 +24,6 @@
Field=timestamp
]
>=
- FunctionCall emergencyTest.current-datetime@0[
+ FunctionCall asterix.current-datetime@0[
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/consolidate-selects-complex.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/consolidate-selects-complex.ast
index 165e2e3..ba2ff41 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/consolidate-selects-complex.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/consolidate-selects-complex.ast
@@ -32,7 +32,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -40,26 +40,26 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
Let Variable [ Name=$jacca ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.8]
]
Let Variable [ Name=$jaccb ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.5]
]
Let Variable [ Name=$jaccc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.3]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/count-tweets.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/count-tweets.ast
index ec7c370..f7ec498 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/count-tweets.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/count-tweets.ast
@@ -49,7 +49,7 @@
]
Let Variable [ Name=$tokens ]
:=
- FunctionCall twitter.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$t ]
Field=text
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/fj-dblp-csx.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/fj-dblp-csx.ast
index 7e68aa8..56c7eb1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/fj-dblp-csx.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/fj-dblp-csx.ast
@@ -1,4 +1,4 @@
-DataverseUse fj-dblp-csx
+DataverseUse `fj-dblp-csx`
TypeDecl DBLPType [
open RecordType {
id : integer,
@@ -63,7 +63,7 @@
]
Let Variable [ Name=$unrankedTokensDBLP ]
:=
- FunctionCall fj-dblp-csx.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -114,7 +114,7 @@
]
Let Variable [ Name=$unrankedTokensCSX ]
:=
- FunctionCall fj-dblp-csx.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/fj-phase2-with-hints.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/fj-phase2-with-hints.ast
index 760a65f..7175ec1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/fj-phase2-with-hints.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/fj-phase2-with-hints.ast
@@ -35,7 +35,7 @@
]
Let Variable [ Name=$unrankedTokensDBLP ]
:=
- FunctionCall fuzzyjoin_078.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -59,7 +59,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin_078.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-contains-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-contains-panic.ast
index f63ae69..75e47cc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-contains-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-contains-panic.ast
@@ -20,7 +20,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-contains.ast
index 4bfd511..ccd9f32 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-contains.ast
@@ -20,7 +20,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance-check-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance-check-panic.ast
index b91eee9..473028d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance-check-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance-check-panic.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance-check.ast
index f3ec986..6248728 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance-check.ast
@@ -21,7 +21,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance-panic.ast
index 96828e4..fdf46f9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance-panic.ast
@@ -21,7 +21,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance.ast
index adf6402..d8917a4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-edit-distance.ast
@@ -21,7 +21,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-fuzzyeq-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-fuzzyeq-jaccard.ast
index be82f72..6c7dd82 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-fuzzyeq-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-fuzzyeq-jaccard.ast
@@ -24,7 +24,7 @@
]
Where
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$o ]
Field=title
@@ -33,7 +33,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-jaccard-check.ast
index 65dfc45..d4eabb8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-jaccard-check.ast
@@ -22,8 +22,8 @@
]
Where
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$o ]
Field=title
@@ -31,7 +31,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-jaccard.ast
index 9919418..fc39ba9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ngram-jaccard.ast
@@ -22,8 +22,8 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$o ]
Field=title
@@ -31,7 +31,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance-check-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance-check-panic.ast
index 81e0f92..1626785 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance-check-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance-check-panic.ast
@@ -35,7 +35,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance-check.ast
index 6125ef7..b3de7ad 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance-check.ast
@@ -35,7 +35,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance-panic.ast
index 84b062d..b9e055b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance-panic.ast
@@ -35,7 +35,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance.ast
index a452237..fb69611 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-edit-distance.ast
@@ -35,7 +35,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-jaccard-check.ast
index 95538bb..6906987 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-jaccard-check.ast
@@ -35,7 +35,7 @@
]
Where
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-jaccard.ast
index edd77ff..61f30e3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/olist-jaccard.ast
@@ -35,7 +35,7 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ulist-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ulist-jaccard-check.ast
index cfdd948..192b9a9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ulist-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ulist-jaccard-check.ast
@@ -35,7 +35,7 @@
]
Where
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ulist-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ulist-jaccard.ast
index 239a83fbb..3b734f9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ulist-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/ulist-jaccard.ast
@@ -35,7 +35,7 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-contains.ast
index 6ba9e63..964c8ef 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-contains.ast
@@ -20,7 +20,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-fuzzyeq-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-fuzzyeq-jaccard.ast
index 31c6b58..88f2e79 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-fuzzyeq-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-fuzzyeq-jaccard.ast
@@ -23,14 +23,14 @@
]
Where
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-jaccard-check.ast
index d0f765c..6b2ef84 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-jaccard-check.ast
@@ -21,14 +21,14 @@
]
Where
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-jaccard.ast
index 93cc528..13a5f3b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-basic/word-jaccard.ast
@@ -21,14 +21,14 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast
index 4573700..50562cc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$eda ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
@@ -31,7 +31,7 @@
]
Let Variable [ Name=$edb ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast
index 80a0c1e..295bc07 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$edb ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
@@ -31,7 +31,7 @@
]
Let Variable [ Name=$eda ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let-panic.ast
index 1426c21..9908ea7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let-panic.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let.ast
index 6be8d11..360b8fe 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-let.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-substring.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-substring.ast
index 23b6ef3..4bd24fe 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-substring.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-substring.ast
@@ -38,8 +38,8 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
- FunctionCall test.substring@3[
+ FunctionCall asterix.edit-distance-check@3[
+ FunctionCall asterix.substring@3[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast
index 4e740dd..3cc550e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast
@@ -36,7 +36,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -46,7 +46,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$word ]
LiteralExpr [STRING] [Multmedia]
LiteralExpr [LONG] [1]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-jaccard-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-jaccard-check-let.ast
index bc735ac..10cc2e1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-jaccard-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-jaccard-check-let.ast
@@ -22,8 +22,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$o ]
Field=title
@@ -31,7 +31,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-jaccard-check-multi-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-jaccard-check-multi-let.ast
index c56b4cc..2b7df8c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-jaccard-check-multi-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ngram-jaccard-check-multi-let.ast
@@ -33,7 +33,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -43,14 +43,14 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/olist-edit-distance-check-let-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/olist-edit-distance-check-let-panic.ast
index 73eea6c..1a98c4c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/olist-edit-distance-check-let-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/olist-edit-distance-check-let-panic.ast
@@ -35,7 +35,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/olist-edit-distance-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/olist-edit-distance-check-let.ast
index 8519356..1125acc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/olist-edit-distance-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/olist-edit-distance-check-let.ast
@@ -35,7 +35,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/olist-jaccard-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/olist-jaccard-check-let.ast
index 2069fba..f4a90e6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/olist-jaccard-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/olist-jaccard-check-let.ast
@@ -35,7 +35,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ulist-jaccard-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ulist-jaccard-check-let.ast
index ddda42c..b9cc80e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ulist-jaccard-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/ulist-jaccard-check-let.ast
@@ -35,7 +35,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/word-jaccard-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/word-jaccard-check-let.ast
index 53299c1..9343f70 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/word-jaccard-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/word-jaccard-check-let.ast
@@ -21,14 +21,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/word-jaccard-check-multi-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/word-jaccard-check-multi-let.ast
index 36c3ad3..6a2c11a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/word-jaccard-check-multi-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-complex/word-jaccard-check-multi-let.ast
@@ -32,7 +32,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -40,12 +40,12 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.8]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance-inline.ast
index 149dadd..884b632 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance-inline.ast
@@ -48,7 +48,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance.ast
index 6e07481..659a3c6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance.ast
@@ -54,7 +54,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-fuzzyeq-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-fuzzyeq-jaccard.ast
index ed58c20..880cf73 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-fuzzyeq-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-fuzzyeq-jaccard.ast
@@ -57,7 +57,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -66,7 +66,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard-inline.ast
index 9ba0a6c..21e6d40 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard-inline.ast
@@ -49,8 +49,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -58,7 +58,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard.ast
index c14577e..a8a3b7c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard.ast
@@ -55,8 +55,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -64,7 +64,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance-inline.ast
index 48c7269..1a68dec 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance-inline.ast
@@ -62,7 +62,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance.ast
index 309af23..fc91fc2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance.ast
@@ -59,7 +59,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard-inline.ast
index 177a4ab..13d4c9c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard-inline.ast
@@ -62,7 +62,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard.ast
index 174ce27..acabdb3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard.ast
@@ -59,7 +59,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard-inline.ast
index fc3c6da..6c78a5a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard-inline.ast
@@ -62,7 +62,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard.ast
index a217c50..63fcf0a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard.ast
@@ -59,7 +59,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/word-fuzzyeq-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/word-fuzzyeq-jaccard.ast
index 64fb45b..58e5337 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/word-fuzzyeq-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/word-fuzzyeq-jaccard.ast
@@ -56,14 +56,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard-inline.ast
index dd4d340..db614be 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard-inline.ast
@@ -48,14 +48,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard.ast
index b05b6c4..bd8e3aa 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard.ast
@@ -54,14 +54,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/issue741.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/issue741.ast
index feab647..e06271a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/issue741.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/issue741.ast
@@ -50,7 +50,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$t ]
Field=referred_topics
@@ -97,7 +97,7 @@
Field=send_time
]
>=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2011-06-18T14:10:17]
]
]
@@ -108,7 +108,7 @@
Field=send_time
]
<
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2011-06-18T15:10:17]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast
index e0091da..2404dd0 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast
@@ -80,7 +80,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$t1 ]
Field=message-text
@@ -133,7 +133,7 @@
Field=tweetid
]
>
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [240]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.ast
index 7953333..496e162 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.ast
@@ -80,7 +80,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$t1 ]
Field=referred-topics
@@ -133,7 +133,7 @@
Field=tweetid
]
>
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [240]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-contains.ast
index ec9d99f..2f0b5fc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-contains.ast
@@ -43,7 +43,7 @@
]
Where
OperatorExpr [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o1 ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_01.ast
index fb901be..5e342d7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_01.ast
@@ -48,7 +48,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_02.ast
index 0ca48a7..5a3ee14 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_02.ast
@@ -48,7 +48,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_03.ast
index ba2ec52..9567f1b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_03.ast
@@ -38,7 +38,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_04.ast
index b7b4232..391303a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-check_04.ast
@@ -45,7 +45,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-contains.ast
index 379fb25..b9277ef 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-contains.ast
@@ -48,7 +48,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-contains@3[
+ FunctionCall asterix.edit-distance-contains@3[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_01.ast
index 31ae3d4..e9d5fe7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_01.ast
@@ -48,7 +48,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_02.ast
index a81df4e..690329c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_02.ast
@@ -48,7 +48,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_03.ast
index 331c38e..6d8ce54 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_03.ast
@@ -38,7 +38,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_04.ast
index 21aad57..f34e41f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-edit-distance_04.ast
@@ -42,7 +42,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast
index e9579c5..a784bd9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast
@@ -51,7 +51,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -60,7 +60,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-fuzzyeq-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-fuzzyeq-jaccard_02.ast
index edbe33a..fa42c63 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-fuzzyeq-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-fuzzyeq-jaccard_02.ast
@@ -51,7 +51,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -60,7 +60,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-fuzzyeq-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-fuzzyeq-jaccard_03.ast
index 4b0b23e..0e9708d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-fuzzyeq-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-fuzzyeq-jaccard_03.ast
@@ -41,7 +41,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -50,7 +50,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_01.ast
index 6335c6e..620a4ce 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_01.ast
@@ -49,8 +49,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -58,7 +58,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_02.ast
index 2b6296d..8e4844a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_02.ast
@@ -49,8 +49,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -58,7 +58,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_03.ast
index a217b81..41ca5dd 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_03.ast
@@ -39,8 +39,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -48,7 +48,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_04.ast
index 14ce520..d201069 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard-check_04.ast
@@ -46,8 +46,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -55,7 +55,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_01.ast
index 99dc8bd..363ed04 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_01.ast
@@ -49,8 +49,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -58,7 +58,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_02.ast
index ab4f3a7..038e003 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_02.ast
@@ -49,8 +49,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -58,7 +58,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_03.ast
index 21f2967..fe3316e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_03.ast
@@ -39,8 +39,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -48,7 +48,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_04.ast
index f72bb82..e70b58a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ngram-jaccard_04.ast
@@ -43,8 +43,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -52,7 +52,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_01.ast
index 51f5dbb..036b09f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_01.ast
@@ -53,7 +53,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_02.ast
index 6cd3181..483fdde 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_02.ast
@@ -53,7 +53,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_03.ast
index d4b9f2b..a3caf5d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_03.ast
@@ -52,7 +52,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_04.ast
index 956b14b..4ce8f78 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance-check_04.ast
@@ -59,7 +59,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_01.ast
index 43f7ed9..5dfbcc8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_01.ast
@@ -53,7 +53,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_02.ast
index 0d3ceda..828fdf0 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_02.ast
@@ -53,7 +53,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_03.ast
index bc94b88..757d663 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_03.ast
@@ -52,7 +52,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_04.ast
index f1a1d3f..cb4f2ac 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-edit-distance_04.ast
@@ -56,7 +56,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_01.ast
index ce38b34..0eeff59 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_01.ast
@@ -53,7 +53,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_02.ast
index 9b508c7..f968782 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_02.ast
@@ -53,7 +53,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_03.ast
index 16beb06..39927e1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_03.ast
@@ -52,7 +52,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_04.ast
index cbf5765..21f585b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard-check_04.ast
@@ -59,7 +59,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_01.ast
index 8822738..d03aaba 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_01.ast
@@ -53,7 +53,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_02.ast
index 49bd093..eb3b7e8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_02.ast
@@ -53,7 +53,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_03.ast
index ecfac07..0b8979a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_03.ast
@@ -52,7 +52,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_04.ast
index ca1098d..3b84c14 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/olist-jaccard_04.ast
@@ -56,7 +56,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_01.ast
index d63e18c..89a6e1c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_01.ast
@@ -53,7 +53,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_02.ast
index 4fb802a..5273305 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_02.ast
@@ -53,7 +53,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_03.ast
index 4d00756..f99a6c2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_03.ast
@@ -52,7 +52,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_04.ast
index edc49c9..e1d293d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard-check_04.ast
@@ -59,7 +59,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_01.ast
index b72a4ef..726f1ce 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_01.ast
@@ -53,7 +53,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_02.ast
index dcf7ba3..77e63a2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_02.ast
@@ -53,7 +53,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_03.ast
index 0e76c21..d64050c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_03.ast
@@ -52,7 +52,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_04.ast
index fb53866..b7158b5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/ulist-jaccard_04.ast
@@ -56,7 +56,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-fuzzyeq-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-fuzzyeq-jaccard_01.ast
index e7ce5f7..aeb5c2d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-fuzzyeq-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-fuzzyeq-jaccard_01.ast
@@ -50,14 +50,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-fuzzyeq-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-fuzzyeq-jaccard_02.ast
index c37b4e6..51c8a69 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-fuzzyeq-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-fuzzyeq-jaccard_02.ast
@@ -50,14 +50,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-fuzzyeq-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-fuzzyeq-jaccard_03.ast
index aed4e5c..413fcf7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-fuzzyeq-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-fuzzyeq-jaccard_03.ast
@@ -40,14 +40,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check-after-btree-access.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check-after-btree-access.ast
index 977fd78..0f36b7e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check-after-btree-access.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check-after-btree-access.ast
@@ -65,14 +65,14 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$t1 ]
Field=message-text
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$t2 ]
Field=message-text
@@ -93,7 +93,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [20]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_01.ast
index 8137523..3a30e84 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_01.ast
@@ -48,14 +48,14 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_02.ast
index 02f1194..d728851 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_02.ast
@@ -48,14 +48,14 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_03.ast
index 61f0161..fc7198f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_03.ast
@@ -38,14 +38,14 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_04.ast
index 425e82ce..49d2acb 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard-check_04.ast
@@ -45,14 +45,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_01.ast
index 3a12ec0..0252523 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_01.ast
@@ -48,14 +48,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_02.ast
index 090bf16..e67df1e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_02.ast
@@ -48,14 +48,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_03.ast
index ec3cea1..58000c8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_03.ast
@@ -38,14 +38,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_04.ast
index 5f0e53a..ef04a85 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/inverted-index-join/word-jaccard_04.ast
@@ -42,14 +42,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/join-super-key_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/join-super-key_01.ast
index 50b2a5a..b0813fd 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/join-super-key_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/join-super-key_01.ast
@@ -1,4 +1,4 @@
-DataverseUse join-super-key_1
+DataverseUse `join-super-key_1`
TypeDecl SupplierType [
closed RecordType {
s_suppkey : integer,
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/join-super-key_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/join-super-key_02.ast
index 8e8cfe6..0b6b9b4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/join-super-key_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/join-super-key_02.ast
@@ -1,4 +1,4 @@
-DataverseUse join-super-key_01
+DataverseUse `join-super-key_01`
TypeDecl SupplierType [
closed RecordType {
s_suppkey : integer,
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/loj-super-key_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/loj-super-key_01.ast
index 46c09a9..b012a70 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/loj-super-key_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/loj-super-key_01.ast
@@ -1,4 +1,4 @@
-DataverseUse loj-super-key_01
+DataverseUse `loj-super-key_01`
TypeDecl SupplierType [
closed RecordType {
s_suppkey : integer,
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/loj-super-key_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/loj-super-key_02.ast
index c0390e9..deee859 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/loj-super-key_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/loj-super-key_02.ast
@@ -1,4 +1,4 @@
-DataverseUse loj-super-key_02
+DataverseUse `loj-super-key_02`
TypeDecl SupplierType [
closed RecordType {
s_suppkey : integer,
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01.ast
index 6687d69..7db8a94 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01.ast
@@ -136,7 +136,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02.ast
index 1fd15fa..fb366dc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02.ast
@@ -156,7 +156,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-contains-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-contains-panic.ast
index 67a69d7..39e743a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-contains-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-contains-panic.ast
@@ -25,7 +25,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-contains.ast
index 239b045..8d823c8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-contains.ast
@@ -25,7 +25,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance-check-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance-check-panic.ast
index fc47597..b31bc52 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance-check-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance-check-panic.ast
@@ -26,7 +26,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance-check.ast
index 05d2532..0727633 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance-check.ast
@@ -26,7 +26,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance-panic.ast
index f00873b..c711fee13 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance-panic.ast
@@ -26,7 +26,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance.ast
index fa976ab..f4fe1b3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-edit-distance.ast
@@ -26,7 +26,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-fuzzyeq-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-fuzzyeq-jaccard.ast
index 99df8bb..3373f5a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-fuzzyeq-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-fuzzyeq-jaccard.ast
@@ -29,7 +29,7 @@
]
Where
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -41,7 +41,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-jaccard-check.ast
index d4764a4..13f6890 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-jaccard-check.ast
@@ -27,8 +27,8 @@
]
Where
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -39,7 +39,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-jaccard.ast
index 993fc7c..c581611 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ngram-jaccard.ast
@@ -27,8 +27,8 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -39,7 +39,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance-check-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance-check-panic.ast
index b60a90f..e7b386f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance-check-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance-check-panic.ast
@@ -41,7 +41,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance-check.ast
index a57d7bf..77a1e63 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance-check.ast
@@ -41,7 +41,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance-panic.ast
index 73895ec..ec18fdf 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance-panic.ast
@@ -41,7 +41,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance.ast
index 14402a0..5672136 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-edit-distance.ast
@@ -41,7 +41,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-jaccard-check.ast
index 36a3968..8944f56 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-jaccard-check.ast
@@ -40,7 +40,7 @@
]
Where
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-jaccard.ast
index 7662170..2b3fd59 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/olist-jaccard.ast
@@ -41,7 +41,7 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ulist-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ulist-jaccard-check.ast
index c7de02f..951cc2c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ulist-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ulist-jaccard-check.ast
@@ -41,7 +41,7 @@
]
Where
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ulist-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ulist-jaccard.ast
index a1920b0..33be47b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ulist-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/ulist-jaccard.ast
@@ -41,7 +41,7 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-contains.ast
index 07c2257..c319895 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-contains.ast
@@ -25,7 +25,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-fuzzyeq-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-fuzzyeq-jaccard.ast
index 115cffd..b03e6c7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-fuzzyeq-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-fuzzyeq-jaccard.ast
@@ -28,7 +28,7 @@
]
Where
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -38,7 +38,7 @@
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-jaccard-check.ast
index cd2f808..e8bf4a2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-jaccard-check.ast
@@ -26,8 +26,8 @@
]
Where
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -36,7 +36,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-jaccard.ast
index 8d6ebff..40574f5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-basic/word-jaccard.ast
@@ -26,8 +26,8 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -36,7 +36,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast
index cd87e3d..0818407 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast
@@ -26,7 +26,7 @@
]
Let Variable [ Name=$eda ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -39,7 +39,7 @@
]
Let Variable [ Name=$edb ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast
index e83f266..fffd48a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast
@@ -26,7 +26,7 @@
]
Let Variable [ Name=$edb ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -39,7 +39,7 @@
]
Let Variable [ Name=$eda ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let-panic.ast
index 3182178..abd2b19 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let-panic.ast
@@ -26,7 +26,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let.ast
index 4d74189..9b45cff 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-let.ast
@@ -26,7 +26,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-substring.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-substring.ast
index 12e5004..5fa1ef2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-substring.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-substring.ast
@@ -49,8 +49,8 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
- FunctionCall test.substring@3[
+ FunctionCall asterix.edit-distance-check@3[
+ FunctionCall asterix.substring@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$paper ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast
index 83e7c39..2067c42 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast
@@ -47,7 +47,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$paper ]
@@ -60,7 +60,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$word ]
LiteralExpr [STRING] [Multmedia]
LiteralExpr [LONG] [1]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-jaccard-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-jaccard-check-let.ast
index da3e28d..36cd36e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-jaccard-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-jaccard-check-let.ast
@@ -27,8 +27,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -39,7 +39,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-jaccard-check-multi-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-jaccard-check-multi-let.ast
index c313df1..88c222c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-jaccard-check-multi-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ngram-jaccard-check-multi-let.ast
@@ -38,7 +38,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$paper ]
@@ -51,14 +51,14 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/olist-edit-distance-check-let-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/olist-edit-distance-check-let-panic.ast
index 7926519..f1740e6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/olist-edit-distance-check-let-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/olist-edit-distance-check-let-panic.ast
@@ -41,7 +41,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/olist-edit-distance-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/olist-edit-distance-check-let.ast
index f811f6f..dfa394c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/olist-edit-distance-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/olist-edit-distance-check-let.ast
@@ -41,7 +41,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/olist-jaccard-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/olist-jaccard-check-let.ast
index d4fb901..02ad60e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/olist-jaccard-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/olist-jaccard-check-let.ast
@@ -40,7 +40,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ulist-jaccard-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ulist-jaccard-check-let.ast
index 7fbf43b..794d5cb 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ulist-jaccard-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/ulist-jaccard-check-let.ast
@@ -41,7 +41,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/word-jaccard-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/word-jaccard-check-let.ast
index 0e81882..f66ecd2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/word-jaccard-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/word-jaccard-check-let.ast
@@ -26,8 +26,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -36,7 +36,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/word-jaccard-check-multi-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/word-jaccard-check-multi-let.ast
index 09c2663..2881a88 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/word-jaccard-check-multi-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-complex/word-jaccard-check-multi-let.ast
@@ -37,7 +37,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$paper ]
@@ -48,12 +48,12 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.8]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast
index 21fc269..b502870 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast
@@ -97,7 +97,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -168,7 +168,7 @@
Field=tweetid
]
>
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [240]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.ast
index f27b10a..63c7261 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-jaccard-check-idx_01.ast
@@ -97,7 +97,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -168,7 +168,7 @@
Field=tweetid
]
>
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [240]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance-check_01.ast
index 2c56b6d..95723fc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance-check_01.ast
@@ -58,7 +58,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance-contains.ast
index be76ff4..fb8882c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance-contains.ast
@@ -58,7 +58,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-contains@3[
+ FunctionCall asterix.edit-distance-contains@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance-inline.ast
index 486ebf9..201b5ac 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance-inline.ast
@@ -59,7 +59,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance_01.ast
index 3cbdf20..59d970e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-edit-distance_01.ast
@@ -58,7 +58,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast
index 766812b..22333cf 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast
@@ -61,7 +61,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -73,7 +73,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-jaccard-check_01.ast
index 4bf1d3a..cfe0ee8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-jaccard-check_01.ast
@@ -59,8 +59,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -71,7 +71,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-jaccard-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-jaccard-inline.ast
index 9eac854..6230626 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-jaccard-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-jaccard-inline.ast
@@ -60,8 +60,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -72,7 +72,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-jaccard_01.ast
index 6c3a6c7..a168d88 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ngram-jaccard_01.ast
@@ -59,8 +59,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -71,7 +71,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-edit-distance-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-edit-distance-check_01.ast
index 12d27fa..371a58b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-edit-distance-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-edit-distance-check_01.ast
@@ -58,7 +58,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-edit-distance-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-edit-distance-inline.ast
index 84e2153..9bdd0e8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-edit-distance-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-edit-distance-inline.ast
@@ -74,7 +74,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-edit-distance_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-edit-distance_01.ast
index 79306cc..5b964fb 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-edit-distance_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-edit-distance_01.ast
@@ -58,7 +58,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-jaccard-check_01.ast
index 010d833..ab9edac 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-jaccard-check_01.ast
@@ -58,7 +58,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-jaccard-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-jaccard-inline.ast
index e4c4c65..e867a37 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-jaccard-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-jaccard-inline.ast
@@ -74,7 +74,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-jaccard_01.ast
index 4df3370..8fa6c8a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/olist-jaccard_01.ast
@@ -58,7 +58,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ulist-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ulist-jaccard-check_01.ast
index d1d960a..19e40f9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ulist-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ulist-jaccard-check_01.ast
@@ -58,7 +58,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ulist-jaccard-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ulist-jaccard-inline.ast
index b52756f..3f13c3a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ulist-jaccard-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ulist-jaccard-inline.ast
@@ -74,7 +74,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ulist-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ulist-jaccard_01.ast
index 541c5c8..d3c444d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ulist-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/ulist-jaccard_01.ast
@@ -58,7 +58,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-fuzzyeq-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-fuzzyeq-jaccard_01.ast
index a2df3ef..78d9cab 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-fuzzyeq-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-fuzzyeq-jaccard_01.ast
@@ -60,7 +60,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -70,7 +70,7 @@
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard-check-after-btree-access.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard-check-after-btree-access.ast
index 7371c6f..36d3927 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard-check-after-btree-access.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard-check-after-btree-access.ast
@@ -76,8 +76,8 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -86,7 +86,7 @@
Field=message-text
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t2 ]
@@ -113,7 +113,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [20]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard-check_01.ast
index ca36bc2..3a22300 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard-check_01.ast
@@ -58,8 +58,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -68,7 +68,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard-inline.ast
index c2d5bdf..7518da7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard-inline.ast
@@ -59,8 +59,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -69,7 +69,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard_01.ast
index d766ddf..8ab5b17 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/inverted-index-join/word-jaccard_01.ast
@@ -58,8 +58,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -68,7 +68,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast
index 5db718b..8bde23b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast
@@ -90,7 +90,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t2 ]
@@ -118,7 +118,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -138,7 +138,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast
index 004d42a..c486ca1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast
@@ -91,7 +91,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t2 ]
@@ -141,7 +141,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -161,7 +161,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/spatial-intersect-point_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/spatial-intersect-point_01.ast
index af4b22c..6e2f4e3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/spatial-intersect-point_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/spatial-intersect-point_01.ast
@@ -45,7 +45,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/spatial-intersect-point_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/spatial-intersect-point_02.ast
index f0b71f8..88ede17 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/spatial-intersect-point_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/spatial-intersect-point_02.ast
@@ -45,7 +45,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/spatial-intersect-point_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/spatial-intersect-point_03.ast
index 4d62044..911ded3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/spatial-intersect-point_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-index/rtree-index-join/spatial-intersect-point_03.ast
@@ -44,7 +44,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_1.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_1.ast
index 42e98bd..35c6c68 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_1.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_1.ast
@@ -135,7 +135,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_2.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_2.ast
index eafaa62..ee998a5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_2.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_2.ast
@@ -134,7 +134,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_1.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_1.ast
index 3830ce2..5002b83 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_1.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_1.ast
@@ -155,7 +155,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_2.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_2.ast
index 763759e..e6a964f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_2.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_2.ast
@@ -154,7 +154,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-contains-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-contains-panic.ast
index f6e781a..cab3477 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-contains-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-contains-panic.ast
@@ -24,7 +24,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-contains.ast
index 283e91c..dc27e08 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-contains.ast
@@ -24,7 +24,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance-check-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance-check-panic.ast
index e9a2f0a..95b82a5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance-check-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance-check-panic.ast
@@ -25,7 +25,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance-check.ast
index 8bc458d..6f79953 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance-check.ast
@@ -25,7 +25,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance-panic.ast
index cea6433..1d0e98c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance-panic.ast
@@ -25,7 +25,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance.ast
index 026476c..622bc67 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-edit-distance.ast
@@ -25,7 +25,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-fuzzyeq-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-fuzzyeq-jaccard.ast
index 31ccaf8..4eac1f3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-fuzzyeq-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-fuzzyeq-jaccard.ast
@@ -28,7 +28,7 @@
]
Where
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -40,7 +40,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-jaccard-check.ast
index 3ff23f9..4d23eee 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-jaccard-check.ast
@@ -26,8 +26,8 @@
]
Where
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -38,7 +38,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-jaccard.ast
index f57427b..6e8bcec 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/ngram-jaccard.ast
@@ -26,8 +26,8 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -38,7 +38,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-contains.ast
index 2088a9e..a05ab69 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-contains.ast
@@ -24,7 +24,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-fuzzyeq-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-fuzzyeq-jaccard.ast
index 7efb273..b508d79 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-fuzzyeq-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-fuzzyeq-jaccard.ast
@@ -27,7 +27,7 @@
]
Where
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -37,7 +37,7 @@
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-jaccard-check.ast
index 4ee76d2..2cdb0a8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-jaccard-check.ast
@@ -25,8 +25,8 @@
]
Where
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -35,7 +35,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-jaccard.ast
index fe1460f..b4790d5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-basic/word-jaccard.ast
@@ -25,8 +25,8 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -35,7 +35,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast
index a47c5d7..53aabf3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast
@@ -25,7 +25,7 @@
]
Let Variable [ Name=$eda ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -38,7 +38,7 @@
]
Let Variable [ Name=$edb ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast
index b666419..963578c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast
@@ -25,7 +25,7 @@
]
Let Variable [ Name=$edb ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -38,7 +38,7 @@
]
Let Variable [ Name=$eda ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let-panic.ast
index 2f08590..6c21d1d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let-panic.ast
@@ -25,7 +25,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let.ast
index b2a5d79..e7c5cdc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-let.ast
@@ -25,7 +25,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-substring.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-substring.ast
index 78aac04..49970e7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-substring.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-substring.ast
@@ -48,8 +48,8 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
- FunctionCall test.substring@3[
+ FunctionCall asterix.edit-distance-check@3[
+ FunctionCall asterix.substring@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$paper ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast
index 0559bbc..f58dc37 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast
@@ -46,7 +46,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$paper ]
@@ -59,7 +59,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$word ]
LiteralExpr [STRING] [Multmedia]
LiteralExpr [LONG] [1]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-jaccard-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-jaccard-check-let.ast
index 336b9d6..5ff1c93 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-jaccard-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-jaccard-check-let.ast
@@ -26,8 +26,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -38,7 +38,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-jaccard-check-multi-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-jaccard-check-multi-let.ast
index e246355..e09c194 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-jaccard-check-multi-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/ngram-jaccard-check-multi-let.ast
@@ -37,7 +37,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$paper ]
@@ -50,14 +50,14 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/word-jaccard-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/word-jaccard-check-let.ast
index f710009..518ccad 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/word-jaccard-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/word-jaccard-check-let.ast
@@ -25,8 +25,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -35,7 +35,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/word-jaccard-check-multi-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/word-jaccard-check-multi-let.ast
index fe3fb7c..0dddc3b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/word-jaccard-check-multi-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-complex/word-jaccard-check-multi-let.ast
@@ -36,7 +36,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$paper ]
@@ -47,12 +47,12 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.8]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast
index ab37e11..ad10e1a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast
@@ -96,7 +96,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -167,7 +167,7 @@
Field=tweetid
]
>
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [240]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_01.ast
index b80cae4..a91d675 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_01.ast
@@ -51,7 +51,7 @@
]
Where
OperatorExpr [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o1 ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_02.ast
index 8b5571d..99f37fe 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_02.ast
@@ -51,7 +51,7 @@
]
Where
OperatorExpr [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o1 ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_03.ast
index f8085ca..96cf45d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_03.ast
@@ -42,7 +42,7 @@
]
Where
OperatorExpr [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o1 ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_04.ast
index 84389f3..19e5761 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-contains_04.ast
@@ -50,7 +50,7 @@
]
Where
OperatorExpr [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o1 ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_01.ast
index d2c4499..bf45f51 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_01.ast
@@ -57,7 +57,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_02.ast
index 2d74c5f..f8d095b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_02.ast
@@ -57,7 +57,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_03.ast
index 17bdeca..4e035d3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_03.ast
@@ -42,7 +42,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_04.ast
index 9fcd085..aa2b585 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_04.ast
@@ -56,7 +56,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_05.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_05.ast
index 9fcd085..aa2b585 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_05.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-check_05.ast
@@ -56,7 +56,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-contains.ast
index 399c1e7..481d88b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-contains.ast
@@ -57,7 +57,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-contains@3[
+ FunctionCall asterix.edit-distance-contains@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-inline.ast
index b1ed987..b593eb1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance-inline.ast
@@ -58,7 +58,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_01.ast
index 402625f..658f36d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_01.ast
@@ -57,7 +57,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_02.ast
index 4eed056..bad80a0 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_02.ast
@@ -57,7 +57,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_03.ast
index 6f51552..8d5c48f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_03.ast
@@ -42,7 +42,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_04.ast
index dc5e707..63a7e24 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_04.ast
@@ -56,7 +56,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_05.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_05.ast
index dc5e707..63a7e24 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_05.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-edit-distance_05.ast
@@ -56,7 +56,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast
index 2705525..e78296e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast
@@ -60,7 +60,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -72,7 +72,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_02.ast
index 1bba5a8..2c72b66 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_02.ast
@@ -60,7 +60,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -72,7 +72,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_03.ast
index 658259b..28f0316 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_03.ast
@@ -45,7 +45,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -57,7 +57,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_04.ast
index 274474e..7fa83e4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-fuzzyeq-jaccard_04.ast
@@ -59,7 +59,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -71,7 +71,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_01.ast
index 1a7702e..9c108d3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_01.ast
@@ -58,8 +58,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -70,7 +70,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_02.ast
index 27ac86c..bd600b8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_02.ast
@@ -58,8 +58,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -70,7 +70,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_03.ast
index 8cd5e54..f3e0583 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_03.ast
@@ -43,8 +43,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -55,7 +55,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_04.ast
index c5154c0..beb9f7f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-check_04.ast
@@ -57,8 +57,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -69,7 +69,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-inline.ast
index e2a7a9f..b685fd2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard-inline.ast
@@ -59,8 +59,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -71,7 +71,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_01.ast
index fe046f5..6ea9758 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_01.ast
@@ -58,8 +58,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -70,7 +70,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_02.ast
index 066f5ca..607ea6e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_02.ast
@@ -58,8 +58,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -70,7 +70,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_03.ast
index 4bbc6ca..da33640 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_03.ast
@@ -43,8 +43,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -55,7 +55,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_04.ast
index b8a8e6b..d8fb211 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/ngram-jaccard_04.ast
@@ -57,8 +57,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -69,7 +69,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_01.ast
index f2872bb..957db1c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_01.ast
@@ -59,7 +59,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -69,7 +69,7 @@
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_02.ast
index 9e3ccd0..7325128 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_02.ast
@@ -59,7 +59,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -69,7 +69,7 @@
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_03.ast
index d8d300d..8ae897f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_03.ast
@@ -44,7 +44,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -54,7 +54,7 @@
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_04.ast
index 32449a8..fb2de63 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-fuzzyeq-jaccard_04.ast
@@ -58,7 +58,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -68,7 +68,7 @@
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check-after-btree-access.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check-after-btree-access.ast
index bbd9e0b..9240411 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check-after-btree-access.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check-after-btree-access.ast
@@ -75,8 +75,8 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -85,7 +85,7 @@
Field=message-text
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t2 ]
@@ -112,7 +112,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [20]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_01.ast
index 6ed0796..81152b2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_01.ast
@@ -57,8 +57,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -67,7 +67,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_02.ast
index 6666280..ab13a8d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_02.ast
@@ -57,8 +57,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -67,7 +67,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_03.ast
index 84ddb2c..a11fccb 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_03.ast
@@ -42,8 +42,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -52,7 +52,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_04.ast
index fe15603..6b51ee3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-check_04.ast
@@ -56,8 +56,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -66,7 +66,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-inline.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-inline.ast
index 55e4dff..31e1ed3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-inline.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard-inline.ast
@@ -58,8 +58,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -68,7 +68,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_01.ast
index d94b65b..5f693a1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_01.ast
@@ -57,8 +57,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -67,7 +67,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_02.ast
index e30d595..dce9644 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_02.ast
@@ -57,8 +57,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -67,7 +67,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_03.ast
index b313d66..9b2b54a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_03.ast
@@ -42,8 +42,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -52,7 +52,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_04.ast
index 544fcc6..5b113fa 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/inverted-index-join/word-jaccard_04.ast
@@ -56,8 +56,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -66,7 +66,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast
index 9277b59..0b31824 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast
@@ -89,7 +89,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t2 ]
@@ -117,7 +117,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -137,7 +137,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast
index 7da0f59..76669c4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast
@@ -90,7 +90,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t2 ]
@@ -140,7 +140,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -160,7 +160,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_01.ast
index af4b22c..6e2f4e3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_01.ast
@@ -45,7 +45,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_02.ast
index f0b71f8..88ede17 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_02.ast
@@ -45,7 +45,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_03.ast
index 4d62044..911ded3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_03.ast
@@ -44,7 +44,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_04.ast
index bfe83a2..023d81c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_04.ast
@@ -44,7 +44,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_05.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_05.ast
index bfe83a2..023d81c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_05.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/nested-open-index/rtree-index-join/spatial-intersect-point_05.ast
@@ -44,7 +44,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_1.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_1.ast
index b48f1e5..57290ac 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_1.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_1.ast
@@ -106,7 +106,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_2.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_2.ast
index 9e6d696..353e552 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_2.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_01_2.ast
@@ -105,7 +105,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_1.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_1.ast
index a08f422..9de1874 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_1.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_1.ast
@@ -120,7 +120,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_2.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_2.ast
index 8b54d5d..77e3668 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_2.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/btree-index-join/leftouterjoin-probe-pidx-with-join-btree-sidx_02_2.ast
@@ -119,7 +119,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-contains-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-contains-panic.ast
index d0331ae..bd5a2e7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-contains-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-contains-panic.ast
@@ -19,7 +19,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-contains.ast
index ec5826f..1d589dc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-contains.ast
@@ -19,7 +19,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance-check-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance-check-panic.ast
index 82ea6c3..e480eab 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance-check-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance-check-panic.ast
@@ -20,7 +20,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance-check.ast
index 99dd1cc..bd20143 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance-check.ast
@@ -20,7 +20,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance-panic.ast
index 08b1cba..b7f394f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance-panic.ast
@@ -20,7 +20,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance.ast
index bc0f6c3..eb7b1ab 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-edit-distance.ast
@@ -20,7 +20,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-fuzzyeq-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-fuzzyeq-jaccard.ast
index 12dcd8d..89001af 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-fuzzyeq-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-fuzzyeq-jaccard.ast
@@ -23,7 +23,7 @@
]
Where
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$o ]
Field=title
@@ -32,7 +32,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-jaccard-check.ast
index 3495dbd..4211435 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-jaccard-check.ast
@@ -21,8 +21,8 @@
]
Where
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$o ]
Field=title
@@ -30,7 +30,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-jaccard.ast
index d8f71d0..9526803 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/ngram-jaccard.ast
@@ -21,8 +21,8 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$o ]
Field=title
@@ -30,7 +30,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-contains.ast
index 6480fe5..fe7b0e2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-contains.ast
@@ -19,7 +19,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-fuzzyeq-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-fuzzyeq-jaccard.ast
index e175bee..78a31e2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-fuzzyeq-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-fuzzyeq-jaccard.ast
@@ -22,14 +22,14 @@
]
Where
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-jaccard-check.ast
index 87d5779..31c0415 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-jaccard-check.ast
@@ -20,14 +20,14 @@
]
Where
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-jaccard.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-jaccard.ast
index 74d7bd4..7985db6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-jaccard.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-basic/word-jaccard.ast
@@ -20,14 +20,14 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast
index bfeb54e..51054c1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_01.ast
@@ -20,7 +20,7 @@
]
Let Variable [ Name=$eda ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
@@ -30,7 +30,7 @@
]
Let Variable [ Name=$edb ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast
index 917fdb0..d063d5f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let-panic-nopanic_02.ast
@@ -20,7 +20,7 @@
]
Let Variable [ Name=$edb ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
@@ -30,7 +30,7 @@
]
Let Variable [ Name=$eda ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let-panic.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let-panic.ast
index b5e2691..69f204a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let-panic.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let-panic.ast
@@ -20,7 +20,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let.ast
index 111bb1c..77f53c8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-let.ast
@@ -20,7 +20,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-substring.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-substring.ast
index 10f09c4..77154d5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-substring.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-substring.ast
@@ -37,8 +37,8 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
- FunctionCall test.substring@3[
+ FunctionCall asterix.edit-distance-check@3[
+ FunctionCall asterix.substring@3[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast
index f3f3545..2275853 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-edit-distance-check-word-tokens.ast
@@ -35,7 +35,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -45,7 +45,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$word ]
LiteralExpr [STRING] [Multmedia]
LiteralExpr [LONG] [1]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-jaccard-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-jaccard-check-let.ast
index 9e5c32e..bc4fb5f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-jaccard-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-jaccard-check-let.ast
@@ -21,8 +21,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$o ]
Field=title
@@ -30,7 +30,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-jaccard-check-multi-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-jaccard-check-multi-let.ast
index 8bae958..aa93ac3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-jaccard-check-multi-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/ngram-jaccard-check-multi-let.ast
@@ -32,7 +32,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -42,14 +42,14 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/word-jaccard-check-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/word-jaccard-check-let.ast
index 586ae2a..49d9157 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/word-jaccard-check-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/word-jaccard-check-let.ast
@@ -20,14 +20,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/word-jaccard-check-multi-let.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/word-jaccard-check-multi-let.ast
index 7bc1846..6f506bb 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/word-jaccard-check-multi-let.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-complex/word-jaccard-check-multi-let.ast
@@ -31,7 +31,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -39,12 +39,12 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.8]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast
index 331bdf1..446d219 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.ast
@@ -79,7 +79,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$t1 ]
Field=message-text
@@ -132,7 +132,7 @@
Field=tweetid
]
>
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [240]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_01.ast
index b80cae4..a91d675 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_01.ast
@@ -51,7 +51,7 @@
]
Where
OperatorExpr [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o1 ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_02.ast
index b9af450..4bb674f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_02.ast
@@ -51,7 +51,7 @@
]
Where
OperatorExpr [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o1 ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_03.ast
index f8085ca..96cf45d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_03.ast
@@ -42,7 +42,7 @@
]
Where
OperatorExpr [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o1 ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_04.ast
index 84389f3..19e5761 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-contains_04.ast
@@ -50,7 +50,7 @@
]
Where
OperatorExpr [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o1 ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_01.ast
index d579f69..052ccba 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_01.ast
@@ -47,7 +47,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_02.ast
index b612948..b16b062 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_02.ast
@@ -47,7 +47,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_03.ast
index b2ed201..64c187e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_03.ast
@@ -37,7 +37,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_04.ast
index 32df103..a8b47c7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_04.ast
@@ -46,7 +46,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_05.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_05.ast
index 32df103..a8b47c7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_05.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_05.ast
@@ -46,7 +46,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_inline_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_inline_03.ast
index fbdd268..c76b1d4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_inline_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-check_inline_03.ast
@@ -44,7 +44,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-contains.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-contains.ast
index 7211a5c..e74dded 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-contains.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance-contains.ast
@@ -47,7 +47,7 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.edit-distance-contains@3[
+ FunctionCall asterix.edit-distance-contains@3[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_01.ast
index d686ced..7a73244 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_01.ast
@@ -47,7 +47,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_02.ast
index cc9c208..27a5d9d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_02.ast
@@ -47,7 +47,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_03.ast
index d619a95..a888ea2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_03.ast
@@ -37,7 +37,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_04.ast
index d9c54c1..25eb7e1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_04.ast
@@ -46,7 +46,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_05.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_05.ast
index d9c54c1..25eb7e1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_05.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_05.ast
@@ -46,7 +46,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_inline_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_inline_03.ast
index db0924d..43bf4ce 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_inline_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-edit-distance_inline_03.ast
@@ -41,7 +41,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast
index 97c1778..825df9a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_01.ast
@@ -50,7 +50,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -59,7 +59,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_02.ast
index 879eea4..161a7c9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_02.ast
@@ -50,7 +50,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -59,7 +59,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_03.ast
index 39138f4..dab9992 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_03.ast
@@ -40,7 +40,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -49,7 +49,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_04.ast
index 9b892c5..af199f5 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-fuzzyeq-jaccard_04.ast
@@ -49,7 +49,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -58,7 +58,7 @@
LiteralExpr [FALSE]
]
~=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_01.ast
index e38106b..f878e0d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_01.ast
@@ -48,8 +48,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -57,7 +57,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_02.ast
index c70c30f..0473451 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_02.ast
@@ -48,8 +48,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -57,7 +57,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_03.ast
index d15b32d..7749d91 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_03.ast
@@ -38,8 +38,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -47,7 +47,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_04.ast
index 7e45c77..16ebed1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_04.ast
@@ -47,8 +47,8 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -56,7 +56,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_inline_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_inline_03.ast
index 073e7f5..dfe5998 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_inline_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard-check_inline_03.ast
@@ -45,8 +45,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -54,7 +54,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_01.ast
index d661706..bc6f3e3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_01.ast
@@ -48,8 +48,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -57,7 +57,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_02.ast
index 16dcb06..87f9c21 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_02.ast
@@ -48,8 +48,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -57,7 +57,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_03.ast
index 37fd896..082647c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_03.ast
@@ -38,8 +38,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -47,7 +47,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_04.ast
index 511eb3e..1e56d15 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_04.ast
@@ -47,8 +47,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -56,7 +56,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_inline_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_inline_03.ast
index fe548d6..e07e7a7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_inline_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/ngram-jaccard_inline_03.ast
@@ -42,8 +42,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -51,7 +51,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_01.ast
index b30d7ee..c40a066 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_01.ast
@@ -49,14 +49,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_02.ast
index e1da73f..d15ca81 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_02.ast
@@ -49,14 +49,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_03.ast
index 807f5bf..ca7e2f6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_03.ast
@@ -39,14 +39,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_04.ast
index 0d41007..1ffc872 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-fuzzyeq-jaccard_04.ast
@@ -48,14 +48,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check-after-btree-access.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check-after-btree-access.ast
index def707e..d34a751 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check-after-btree-access.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check-after-btree-access.ast
@@ -64,14 +64,14 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$t1 ]
Field=message-text
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$t2 ]
Field=message-text
@@ -92,7 +92,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [20]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_01.ast
index 61f40dc..ed3a5a8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_01.ast
@@ -47,14 +47,14 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_02.ast
index bcc540a..9da89f0 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_02.ast
@@ -47,14 +47,14 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_03.ast
index 7883806..523861b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_03.ast
@@ -37,14 +37,14 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_04.ast
index c0d2879..df66e19 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_04.ast
@@ -46,14 +46,14 @@
Where
OperatorExpr [
IndexAccessor [
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_inline_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_inline_03.ast
index 3f14745..53707b4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_inline_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard-check_inline_03.ast
@@ -44,14 +44,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_01.ast
index fe9bcfe..065f46b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_01.ast
@@ -47,14 +47,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_02.ast
index e856da5..58a3af9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_02.ast
@@ -47,14 +47,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_03.ast
index 1c780a1..34684ca 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_03.ast
@@ -37,14 +37,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_04.ast
index e070d7a..6c56a32 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_04.ast
@@ -46,14 +46,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_inline_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_inline_03.ast
index a311ef2..d53274d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_inline_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/inverted-index-join/word-jaccard_inline_03.ast
@@ -41,14 +41,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast
index 8fe06f1..db36dd9 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast
@@ -72,7 +72,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$t2 ]
Field=sender-location
@@ -97,7 +97,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=sender-location
@@ -111,7 +111,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast
index 0a533b8..0443877 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast
@@ -73,7 +73,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$t2 ]
Field=sender-location
@@ -111,7 +111,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=sender-location
@@ -125,7 +125,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_01.ast
index 4605152..d6c6deb 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_01.ast
@@ -51,7 +51,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$a ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_02.ast
index dfd9368..1c6eb1b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_02.ast
@@ -51,7 +51,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$a ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_03.ast
index d2d61ef..e7ebb5a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_03.ast
@@ -38,7 +38,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$a ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_04.ast
index 2a53cb0..fdf1e55 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_04.ast
@@ -39,7 +39,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$a ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_05.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_05.ast
index 2a53cb0..fdf1e55 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_05.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/open-index-enforced/rtree-index-join/spatial-intersect-point_05.ast
@@ -39,7 +39,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$a ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orderby-desc-using-gby.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orderby-desc-using-gby.ast
index 675ca8d..ca16111 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orderby-desc-using-gby.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orderby-desc-using-gby.ast
@@ -1,4 +1,4 @@
-DataverseUse gby-using-orderby-desc
+DataverseUse `gby-using-orderby-desc`
TypeDecl AddressType [
closed RecordType {
number : integer,
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orders-aggreg.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orders-aggreg.ast
index cd4bca3..4d8ace4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orders-aggreg.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/orders-aggreg.ast
@@ -1,4 +1,4 @@
-DataverseUse orders-aggreg
+DataverseUse `orders-aggreg`
TypeDecl OrderType [
closed RecordType {
oid : integer,
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/pull_select_above_eq_join.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/pull_select_above_eq_join.ast
index ca6fe07..c723a60 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/pull_select_above_eq_join.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/pull_select_above_eq_join.ast
@@ -1,4 +1,4 @@
-DataverseUse pull-select-above-eq-join
+DataverseUse `pull-select-above-eq-join`
TypeDecl UserType [
open RecordType {
uid : integer,
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q09_group_by.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q09_group_by.ast
index 52b59f4..7f05cfe 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q09_group_by.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/q09_group_by.ast
@@ -382,7 +382,7 @@
]
Where
OperatorExpr [
- FunctionCall q09_group_by.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$p ]
Field=p_name
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue550.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue550.ast
index d1ebcac..7ff3b22 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue550.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue550.ast
@@ -16,7 +16,7 @@
(
LiteralExpr [STRING] [t]
:
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-01-01T01:00:00]
]
)
@@ -40,7 +40,7 @@
(
LiteralExpr [STRING] [t]
:
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-01-01T01:01:00]
]
)
@@ -64,7 +64,7 @@
(
LiteralExpr [STRING] [t]
:
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-01-01T01:02:00]
]
)
@@ -88,7 +88,7 @@
(
LiteralExpr [STRING] [t]
:
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-01-01T01:03:00]
]
)
@@ -112,7 +112,7 @@
(
LiteralExpr [STRING] [t]
:
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-01-01T01:04:00]
]
)
@@ -136,7 +136,7 @@
(
LiteralExpr [STRING] [t]
:
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-01-01T01:05:00]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue562.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue562.ast
index 62f92a7..3243269 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue562.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/query-issue562.ast
@@ -151,7 +151,7 @@
]
Let Variable [ Name=$phone_substr ]
:=
- FunctionCall tpch.substring@3[
+ FunctionCall asterix.substring@3[
FieldAccessor [
Variable [ Name=$c ]
Field=c_phone
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/issue730.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/issue730.ast
index 64b1b09..6f17b8f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/issue730.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/issue730.ast
@@ -49,7 +49,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$t2 ]
Field=sender_location
@@ -67,7 +67,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=sender_location
@@ -82,7 +82,7 @@
Field=send_time
]
>=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2011-06-18T14:10:17]
]
]
@@ -93,7 +93,7 @@
Field=send_time
]
<
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2011-06-18T15:10:17]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast
index ef9d197..0e3e5a6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_01.ast
@@ -73,7 +73,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$t2 ]
Field=sender-location
@@ -98,7 +98,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=sender-location
@@ -112,7 +112,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast
index d07da6c..c586622 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/leftouterjoin-probe-pidx-with-join-rtree-sidx_02.ast
@@ -74,7 +74,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$t2 ]
Field=sender-location
@@ -112,7 +112,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=sender-location
@@ -126,7 +126,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/query-issue838.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/query-issue838.ast
index 70939a9..dfd39ff 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/query-issue838.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/query-issue838.ast
@@ -34,7 +34,7 @@
(
LiteralExpr [STRING] [execution-time]
:
- FunctionCall twitter.current-datetime@0[
+ FunctionCall asterix.current-datetime@0[
]
)
(
@@ -60,7 +60,7 @@
]
Let Variable [ Name=$circle ]
:=
- FunctionCall twitter.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
Variable [ Name=$tweet ]
Field=location
@@ -68,7 +68,7 @@
LiteralExpr [DOUBLE] [30.0]
]
Where
- FunctionCall twitter.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$tweet ]
Field=sender-location
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/spatial-intersect-point_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/spatial-intersect-point_01.ast
index b1ef06d..2391565 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/spatial-intersect-point_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/spatial-intersect-point_01.ast
@@ -40,7 +40,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$a ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/spatial-intersect-point_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/spatial-intersect-point_02.ast
index 5b894a8..b29fe1f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/spatial-intersect-point_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/spatial-intersect-point_02.ast
@@ -40,7 +40,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$a ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/spatial-intersect-point_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/spatial-intersect-point_03.ast
index 88f292c..f04a100 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/spatial-intersect-point_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-index-join/spatial-intersect-point_03.ast
@@ -39,7 +39,7 @@
AS Variable [ Name=$b ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$a ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-secondary-index-open.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-secondary-index-open.ast
index 23f1b56..b5d3bf1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-secondary-index-open.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-secondary-index-open.ast
@@ -33,12 +33,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-secondary-index.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-secondary-index.ast
index 43691ee..4125b9a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-secondary-index.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/rtree-secondary-index.ast
@@ -33,12 +33,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_01.ast
index 471d006..fe90f5c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_01.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_02.ast
index c78b8cb..877bcbd 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_02.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_03.ast
index 9bb5957..2fe2205 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_03.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_04.ast
index 73fd3d8..4d81225 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_04.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_05.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_05.ast
index 693d2942..9524164 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_05.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_05.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_06.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_06.ast
index 1ce8ea8..65642c2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_06.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_06.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_07.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_07.ast
index efe51d3..ee2107d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_07.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_07.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_08.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_08.ast
index 6ad672e..38e22b1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_08.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-let-to-edit-distance-check_08.ast
@@ -21,7 +21,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_01.ast
index 97c36bd..1992919 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_01.ast
@@ -21,7 +21,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_02.ast
index 510fbfc..fe12d67 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_02.ast
@@ -23,7 +23,7 @@
OperatorExpr [
LiteralExpr [LONG] [2]
>=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_03.ast
index 861376f..58c443c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_03.ast
@@ -21,7 +21,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_04.ast
index 8b565e3..6edbf57 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_04.ast
@@ -23,7 +23,7 @@
OperatorExpr [
LiteralExpr [LONG] [3]
>
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_05.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_05.ast
index 993573d..68b6427 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_05.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_05.ast
@@ -21,7 +21,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_06.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_06.ast
index 79c3f78..42feccb 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_06.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_06.ast
@@ -23,7 +23,7 @@
OperatorExpr [
LiteralExpr [LONG] [2]
<=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_07.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_07.ast
index 4c25e1c..c864e3c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_07.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_07.ast
@@ -21,7 +21,7 @@
]
Where
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_08.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_08.ast
index e3da8fa..97ab3e7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_08.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/edit-distance-to-edit-distance-check_08.ast
@@ -23,7 +23,7 @@
OperatorExpr [
LiteralExpr [LONG] [2]
<
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/fuzzyeq-to-jaccard-check.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/fuzzyeq-to-jaccard-check.ast
index fe5b837..c000fe6 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/fuzzyeq-to-jaccard-check.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/fuzzyeq-to-jaccard-check.ast
@@ -23,14 +23,14 @@
]
Where
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_01.ast
index 4a60b67..73d96c8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_01.ast
@@ -21,14 +21,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_02.ast
index f7dc16c..e4e045b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_02.ast
@@ -21,14 +21,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_03.ast
index bb0b900..b2d48ce 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_03.ast
@@ -21,14 +21,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_04.ast
index c0f61b1..9be8f7e 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_04.ast
@@ -21,14 +21,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_05.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_05.ast
index 4beebd6..94af050 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_05.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_05.ast
@@ -21,14 +21,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_06.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_06.ast
index a34fd1e..f29c220 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_06.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_06.ast
@@ -21,14 +21,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_07.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_07.ast
index 0911e49..b221064 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_07.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_07.ast
@@ -21,14 +21,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_08.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_08.ast
index 31f5160..d877c2c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_08.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-let-to-jaccard-check_08.ast
@@ -21,14 +21,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_01.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_01.ast
index 0628802..edf7b0a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_01.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_01.ast
@@ -21,14 +21,14 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_02.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_02.ast
index a4d18f5..8b23c9b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_02.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_02.ast
@@ -23,14 +23,14 @@
OperatorExpr [
LiteralExpr [FLOAT] [0.8]
<=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_03.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_03.ast
index 38634ed..456ddc3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_03.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_03.ast
@@ -21,14 +21,14 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_04.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_04.ast
index 5f83e9b..e36a6e7 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_04.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_04.ast
@@ -23,14 +23,14 @@
OperatorExpr [
LiteralExpr [FLOAT] [0.8]
<
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_05.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_05.ast
index aba64ae..8dbd31c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_05.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_05.ast
@@ -21,14 +21,14 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_06.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_06.ast
index 3f6a9a3..a2f20e4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_06.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_06.ast
@@ -23,14 +23,14 @@
OperatorExpr [
LiteralExpr [FLOAT] [0.8]
>=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_07.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_07.ast
index 17815d3..3a17439 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_07.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_07.ast
@@ -21,14 +21,14 @@
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_08.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_08.ast
index fee5f3a..e19f053 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_08.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/similarity/jaccard-to-jaccard-check_08.ast
@@ -23,14 +23,14 @@
OperatorExpr [
LiteralExpr [FLOAT] [0.8]
>
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/skip-index/skip-ngram-index.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/skip-index/skip-ngram-index.ast
index 4bfd511..ccd9f32 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/skip-index/skip-ngram-index.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/skip-index/skip-ngram-index.ast
@@ -20,7 +20,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/skip-index/skip-rtree-secondary-index.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/skip-index/skip-rtree-secondary-index.ast
index 43691ee..4125b9a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/skip-index/skip-rtree-secondary-index.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/skip-index/skip-rtree-secondary-index.ast
@@ -33,12 +33,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/skip-index/skip-word-index.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/skip-index/skip-word-index.ast
index eaff5d1..6ae94e1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/skip-index/skip-word-index.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/skip-index/skip-word-index.ast
@@ -21,14 +21,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/split-materialization-above-join.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/split-materialization-above-join.ast
index a1c3dc4..19fa3e2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/split-materialization-above-join.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/split-materialization-above-join.ast
@@ -77,12 +77,12 @@
]
AS Variable [ Name=$paperLeft ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensLeft]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.lenLeft]
]
@@ -96,12 +96,12 @@
]
AS Variable [ Name=$paperRight ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensRight]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.lenRight]
]
@@ -112,8 +112,8 @@
]
Let Variable [ Name=$lenLeft ]
:=
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperLeft ]
Field=title
@@ -126,7 +126,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperLeft ]
Field=title
@@ -143,7 +143,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -181,7 +181,7 @@
)
AS Variable [ Name=$tokenRanked ]
- AT
+ AT
Variable [ Name=$i ]
]
Where
@@ -197,8 +197,8 @@
)
Let Variable [ Name=$lenRight ]
:=
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperRight ]
Field=title
@@ -211,7 +211,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperRight ]
Field=title
@@ -228,7 +228,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -266,7 +266,7 @@
)
AS Variable [ Name=$tokenRanked ]
- AT
+ AT
Variable [ Name=$i ]
]
Where
@@ -282,7 +282,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenLeft ]
Variable [ Name=$tokensLeft ]
Variable [ Name=$lenRight ]
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/unnest_list_in_subplan.ast b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/unnest_list_in_subplan.ast
index 20c07d1..b9fd2a2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/unnest_list_in_subplan.ast
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_parser_sqlpp/unnest_list_in_subplan.ast
@@ -45,7 +45,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/queries-sql-like/6.aql b/asterixdb/asterix-app/src/test/resources/parserts/queries-sql-like/6.aql
index 1dd358f..4562406 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/queries-sql-like/6.aql
+++ b/asterixdb/asterix-app/src/test/resources/parserts/queries-sql-like/6.aql
@@ -19,7 +19,7 @@
from $user in dataset('Users')
with $similar_users :=
from $similar_user in dataset('Users')
- with $similarity := jaccard_similarity($user.interests, $similar_user.interests)
+ with $similarity := similarity_jaccard($user.interests, $similar_user.interests)
where $user != $similar_user
and $similarity >= .75
order by $similarity desc
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/queries/6.aql b/asterixdb/asterix-app/src/test/resources/parserts/queries/6.aql
index f8b06df..62fe967 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/queries/6.aql
+++ b/asterixdb/asterix-app/src/test/resources/parserts/queries/6.aql
@@ -19,7 +19,7 @@
for $user in dataset('Users')
let $similar_users :=
for $similar_user in dataset('Users')
- let $similarity := jaccard_similarity($user.interests, $similar_user.interests)
+ let $similarity := similarity_jaccard($user.interests, $similar_user.interests)
where $user != $similar_user
and $similarity >= .75
order by $similarity desc
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/queries/del-dataset.aql b/asterixdb/asterix-app/src/test/resources/parserts/queries/del-dataset.aql
index b2d7d22..f7550db 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/queries/del-dataset.aql
+++ b/asterixdb/asterix-app/src/test/resources/parserts/queries/del-dataset.aql
@@ -42,6 +42,6 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
drop dataset Customers;
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/queries/load-del-dataset.aql b/asterixdb/asterix-app/src/test/resources/parserts/queries/load-del-dataset.aql
index 2b4a33c..5d6ca9b 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/queries/load-del-dataset.aql
+++ b/asterixdb/asterix-app/src/test/resources/parserts/queries/load-del-dataset.aql
@@ -42,7 +42,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset Customers(CustomerType)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
load dataset Customers
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/6.sqlpp b/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/6.sqlpp
index 5eae7fd..f02a231 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/6.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/6.sqlpp
@@ -22,7 +22,7 @@
with similar_users as (
select element {'user_name':similar_user.name,'similarity':similarity}
from Users as similar_user
- with similarity as jaccard_similarity(user.interests,similar_user.interests)
+ with similarity as similarity_jaccard(user.interests,similar_user.interests)
where ((user != similar_user) and (similarity >= 0.75))
order by similarity desc
limit 10
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/del-dataset.sqlpp b/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/del-dataset.sqlpp
index df43aa5..144a804 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/del-dataset.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/del-dataset.sqlpp
@@ -46,6 +46,6 @@
asterix_nc1,
asterix_nc2
;
-create dataset Customers(CustomerType) primary key cid on group1;
+create dataset Customers(CustomerType) primary key cid WITH {"node-group":{"name":"group1"}};
drop dataset Customers;
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/load-del-dataset.sqlpp b/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/load-del-dataset.sqlpp
index 66c1b68..5ecb455 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/load-del-dataset.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/load-del-dataset.sqlpp
@@ -46,7 +46,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset Customers(CustomerType) primary key cid on group1;
+create dataset Customers(CustomerType) primary key cid WITH {"node-group":{"name":"group1"}};
load dataset Customers using localfs ((`path`=`asterix_nc1:///tmp/customerData.json`),(`format`=`adm`)) pre-sorted;
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/union.sqlpp b/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/union.sqlpp
index 56464ba..0615494 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/union.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/parserts/queries_sqlpp/union.sqlpp
@@ -17,6 +17,17 @@
* under the License.
*/
+declare function foo1() {
+ []
+};
+
+declare function foo2() {
+ []
+};
+
+declare function foo3() {
+ []
+};
select element l
from foo1() as l
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/6.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/6.ast
index b784f99..89a72eb 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/6.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/6.ast
@@ -48,7 +48,7 @@
]
Let Variable [ Name=$similarity ]
:=
- FunctionCall null.jaccard_similarity@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$user ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias.ast
index 7d76691..37f2369 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias.ast
@@ -1,6 +1,6 @@
Query:
SELECT [
-Variable [ Name=#1 ]
+Variable [ Name=#2 ]
root
]
FROM [ FunctionCall asterix.dataset@1[
@@ -15,12 +15,12 @@
Variable [ Name=$t ]
Field=id
]
- GROUP AS Variable [ Name=#2 ]
+ GROUP AS Variable [ Name=#1 ]
(
t:=Variable [ Name=$t ]
)
-Let Variable [ Name=#1 ]
+Let Variable [ Name=#2 ]
:=
FunctionCall asterix.sql-sum@1[
(
@@ -43,12 +43,12 @@
]
]
]
- FROM [ Variable [ Name=#2 ]
+ FROM [ Variable [ Name=#1 ]
AS Variable [ Name=#3 ]
]
)
]
Orderby
- Variable [ Name=#1 ]
+ Variable [ Name=#2 ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias3.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias3.ast
index f72802f..f485782 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias3.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/columnalias3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [root]
:
- Variable [ Name=#1 ]
+ Variable [ Name=#2 ]
)
]
]
@@ -20,12 +20,12 @@
Variable [ Name=$t ]
Field=id
]
- GROUP AS Variable [ Name=#2 ]
+ GROUP AS Variable [ Name=#1 ]
(
t:=Variable [ Name=$t ]
)
-Let Variable [ Name=#1 ]
+Let Variable [ Name=#2 ]
:=
FunctionCall asterix.sql-sum@1[
(
@@ -48,12 +48,12 @@
]
]
]
- FROM [ Variable [ Name=#2 ]
+ FROM [ Variable [ Name=#1 ]
AS Variable [ Name=#3 ]
]
)
]
Orderby
- Variable [ Name=#1 ]
+ Variable [ Name=#2 ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/from_left_correlate.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/from_left_correlate.ast
index 5098fbd..3390da5 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/from_left_correlate.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/from_left_correlate.ast
@@ -27,7 +27,7 @@
(
LiteralExpr [STRING] [location]
:
- FunctionCall test_022.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [0.0,0.0]
]
)
@@ -41,7 +41,7 @@
(
LiteralExpr [STRING] [location]
:
- FunctionCall test_022.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [0.0,1.0]
]
)
@@ -55,7 +55,7 @@
(
LiteralExpr [STRING] [location]
:
- FunctionCall test_022.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [0.0,1.0]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/from_left_outer_join.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/from_left_outer_join.ast
index cb25a66..1ef4dcb 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/from_left_outer_join.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/from_left_outer_join.ast
@@ -27,7 +27,7 @@
(
LiteralExpr [STRING] [location]
:
- FunctionCall test_021.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [0.0,0.0]
]
)
@@ -41,7 +41,7 @@
(
LiteralExpr [STRING] [location]
:
- FunctionCall test_021.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [0.0,1.0]
]
)
@@ -55,7 +55,7 @@
(
LiteralExpr [STRING] [location]
:
- FunctionCall test_021.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [0.0,1.0]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/functionDecl1.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/functionDecl1.ast
index 60fc518..43e1b02 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/functionDecl1.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/functionDecl1.ast
@@ -52,7 +52,7 @@
Let Variable [ Name=$sig_sponsorship_count ]
:=
- FunctionCall null.count@1[
+ FunctionCall count@1[
Variable [ Name=$es ]
]
Let Variable [ Name=$by_chapter ]
@@ -68,7 +68,7 @@
(
LiteralExpr [STRING] [escount]
:
- FunctionCall null.count@1[
+ FunctionCall count@1[
Variable [ Name=$es ]
]
)
@@ -101,7 +101,7 @@
Query:
Let Variable [ Name=$result ]
:=
- FunctionCall null.calculate@1[
+ FunctionCall Default.calculate@1[
(
SELECT ELEMENT [
Variable [ Name=$e ]
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/functionDecl3.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/functionDecl3.ast
index 54032ff..e7c8632 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/functionDecl3.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/functionDecl3.ast
@@ -3,7 +3,7 @@
}
Query:
-FunctionCall null.function with spaces@2[
+FunctionCall Default.function with spaces@2[
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
]
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/union.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/union.ast
index 0b0ec68..ef53092 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/union.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/union.ast
@@ -1,8 +1,23 @@
+FunctionDecl foo1([]) {
+ OrderedListConstructor [
+ ]
+}
+
+FunctionDecl foo2([]) {
+ OrderedListConstructor [
+ ]
+}
+
+FunctionDecl foo3([]) {
+ OrderedListConstructor [
+ ]
+}
+
Query:
SELECT ELEMENT [
Variable [ Name=$l ]
]
-FROM [ FunctionCall null.foo1@0[
+FROM [ FunctionCall Default.foo1@0[
]
AS Variable [ Name=$l ]
]
@@ -10,7 +25,7 @@
SELECT ELEMENT [
Variable [ Name=$l ]
]
- FROM [ FunctionCall null.foo2@0[
+ FROM [ FunctionCall Default.foo2@0[
]
AS Variable [ Name=$l ]
]
@@ -18,7 +33,7 @@
SELECT ELEMENT [
Variable [ Name=$l ]
]
- FROM [ FunctionCall null.foo3@0[
+ FROM [ FunctionCall Default.foo3@0[
]
AS Variable [ Name=$l ]
]
diff --git a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/utf-8.ast b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/utf-8.ast
index 8a1b335..a52f1d5 100644
--- a/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/utf-8.ast
+++ b/asterixdb/asterix-app/src/test/resources/parserts/results_parser_sqlpp/utf-8.ast
@@ -1,8 +1,8 @@
Query:
-FunctionCall null.string-to-codepoint@1[
+FunctionCall asterix.string-to-codepoint@1[
LiteralExpr [STRING] [äöß]
]
Query:
-FunctionCall null.string-to-codepoint@1[
+FunctionCall asterix.string-to-codepoint@1[
LiteralExpr [STRING] [čż]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/intersection_with_nodegroup/intersection_with_nodegroup.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/intersection_with_nodegroup/intersection_with_nodegroup.1.ddl.aql
index f53e3cf..bb78142 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/intersection_with_nodegroup/intersection_with_nodegroup.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/intersection_with_nodegroup/intersection_with_nodegroup.1.ddl.aql
@@ -43,8 +43,9 @@
asterix_nc1;
create dataset TweetMessages(TweetMessageType)
-primary key tweetid on group_test
-hints(cardinality=100);
+primary key tweetid
+hints(cardinality=100)
+with {"node-group":{"name":"group_test"}};
create index twTimeIdx on TweetMessages(send-time) type btree;
create index twLocationIdx on TweetMessages(user.sender-location) type rtree;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/inverted-index-ngram-edit-distance-with-two-ngram-index/inverted-index-ngram-edit-distance-with-two-ngram-index.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/inverted-index-ngram-edit-distance-with-two-ngram-index/inverted-index-ngram-edit-distance-with-two-ngram-index.1.ddl.aql
index 3756b81..fdb0fd9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/inverted-index-ngram-edit-distance-with-two-ngram-index/inverted-index-ngram-edit-distance-with-two-ngram-index.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/inverted-index-ngram-edit-distance-with-two-ngram-index/inverted-index-ngram-edit-distance-with-two-ngram-index.1.ddl.aql
@@ -38,5 +38,5 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.aql
index 04110dc..b68602f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.aql
@@ -35,7 +35,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPTypetmp)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.aql
index db7944e..47c6f44 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.aql
@@ -35,8 +35,8 @@
}
create dataset DBLPtmp(DBLPNestedType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.aql
index 04110dc..b68602f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.aql
@@ -35,7 +35,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPTypetmp)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.aql
index fc549fa..7eae3b4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.aql
@@ -35,8 +35,8 @@
}
create dataset DBLPtmp(DBLPNestedType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.aql
index 04110dc..b68602f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.aql
@@ -35,7 +35,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPTypetmp)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.aql
index 04110dc..b68602f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.aql
@@ -35,7 +35,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPTypetmp)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.1.ddl.aql
index 01f4465..c6b4f5a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.1.ddl.aql
@@ -42,8 +42,8 @@
create nodegroup group1 if not exists on asterix_nc1;
create dataset Customerstmp(CustomerTypetmp)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
create dataset Customers(CustomerType)
- primary key nested.cid on group1;
+ primary key nested.cid with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.1.ddl.aql
index 01f4465..c6b4f5a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.1.ddl.aql
@@ -42,8 +42,8 @@
create nodegroup group1 if not exists on asterix_nc1;
create dataset Customerstmp(CustomerTypetmp)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
create dataset Customers(CustomerType)
- primary key nested.cid on group1;
+ primary key nested.cid with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.1.ddl.aql
index 01f4465..c6b4f5a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.1.ddl.aql
@@ -42,8 +42,8 @@
create nodegroup group1 if not exists on asterix_nc1;
create dataset Customerstmp(CustomerTypetmp)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
create dataset Customers(CustomerType)
- primary key nested.cid on group1;
+ primary key nested.cid with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.1.ddl.aql
index e917368..94f7424 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.1.ddl.aql
@@ -42,7 +42,7 @@
create nodegroup group1 if not exists on asterix_nc1;
create dataset Customerstmp(CustomerTypetmp)
- primary key cid on group1;
+ primary key cid with {"node-group":{"name":"group1"}};
create dataset Customers(CustomerType)
- primary key nested.cid on group1;
+ primary key nested.cid with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.aql
index 04110dc..b68602f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.aql
@@ -35,7 +35,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPTypetmp)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.aql
index 04110dc..b68602f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.aql
@@ -35,7 +35,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPTypetmp)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.aql
index 373a9a8..c6cb973 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.aql
@@ -42,7 +42,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPTypetmp)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.aql
index eaa7e99..d0e66d5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.aql
@@ -42,8 +42,8 @@
}
create dataset DBLPtmp(DBLPClosedType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.aql
index 6652c23..de5115a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.aql
@@ -42,7 +42,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPTypetmp)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.aql
index 72bbfbd..f2962b3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.aql
@@ -43,8 +43,8 @@
}
create dataset DBLPtmp(DBLPClosedType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.aql
index 6652c23..de5115a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.aql
@@ -42,7 +42,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPTypetmp)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.aql
index 373a9a8..c6cb973 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.aql
@@ -42,7 +42,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPTypetmp)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.aql
index 373a9a8..c6cb973 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.aql
@@ -42,7 +42,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPTypetmp)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.aql
index 373a9a8..c6cb973 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/nested-open-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.aql
@@ -42,7 +42,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPTypetmp)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPType)
- primary key nested.id on group1;
+ primary key nested.id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.aql
index 0afaafe..a31921c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.aql
@@ -38,8 +38,8 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLPOpen(DBLPOpenType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.aql
index 636d441..602a8ef 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.aql
@@ -39,8 +39,8 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPOpenType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.aql
index aab1c81..dc9e577 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.aql
@@ -38,7 +38,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLPOpen(DBLPOpenType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.aql
index 9cb239f..0543140 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.aql
@@ -38,8 +38,8 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLPtmp(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLP(DBLPOpenType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.aql
index 387dade..a722cc3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.aql
@@ -38,6 +38,6 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLPOpen(DBLPOpenType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.aql
index 0afaafe..a31921c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.aql
@@ -38,8 +38,8 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLPOpen(DBLPOpenType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.aql
index 38261d7..1007570 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.aql
@@ -38,7 +38,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLPOpen(DBLPOpenType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.aql
index 38261d7..1007570 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.aql
@@ -38,7 +38,7 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLPOpen(DBLPOpenType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/multi-index/multi-index.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/multi-index/multi-index.1.ddl.aql
index f32bae0..f5ff5c8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/multi-index/multi-index.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/open-index-enforced/index-selection/multi-index/multi-index.1.ddl.aql
@@ -38,6 +38,6 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
create dataset DBLPOpen(DBLPOpenType)
- primary key id on group1;
+ primary key id with {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries/tpch/q04_order_priority_with_nodegroup/q04_order_priority_with_nodegroup.1.ddl.aql b/asterixdb/asterix-app/src/test/resources/runtimets/queries/tpch/q04_order_priority_with_nodegroup/q04_order_priority_with_nodegroup.1.ddl.aql
index bffda72..0243d35 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries/tpch/q04_order_priority_with_nodegroup/q04_order_priority_with_nodegroup.1.ddl.aql
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries/tpch/q04_order_priority_with_nodegroup/q04_order_priority_with_nodegroup.1.ddl.aql
@@ -111,6 +111,6 @@
asterix_nc1;
create dataset LineItem(LineItemType)
- primary key l_orderkey, l_linenumber on group_test;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group_test"}};
create dataset Orders(OrderType)
- primary key o_orderkey on group_test;
+ primary key o_orderkey with {"node-group":{"name":"group_test"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.1.ddl.sqlpp
index 735666b..01a82ba 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.1.ddl.sqlpp
@@ -40,4 +40,4 @@
create dataset Points(PointType)
primary key x, y
-on group_test;
+WITH {"node-group":{"name":"group_test"}};;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-index/create-inverted-index-with-variable-length-primary-key/create-inverted-index-with-variable-length-primary-key.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-index/create-inverted-index-with-variable-length-primary-key/create-inverted-index-with-variable-length-primary-key.1.ddl.sqlpp
new file mode 100644
index 0000000..d6e9bbb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-index/create-inverted-index-with-variable-length-primary-key/create-inverted-index-with-variable-length-primary-key.1.ddl.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+DROP DATAVERSE MyDataverse IF EXISTS;
+CREATE DATAVERSE MyDataverse;
+USE MyDataverse;
+
+DROP TYPE MyDataset IF EXISTS;
+CREATE TYPE MyDataType AS OPEN
+{ myKey: string, myValue: string? };
+
+DROP DATASET MyDataset IF EXISTS;
+CREATE DATASET MyDataset(MyDataType) PRIMARY KEY myKey;
+
+DROP INDEX MyDataset.MyIndex IF EXISTS;
+// should fail because inverted index with a variable length primary key are not supported yet
+CREATE INDEX MyIndex ON MyDataset(myValue) type fulltext;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create_dataset_with_filter_on_meta/create_dataset_with_filter_on_meta.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create_dataset_with_filter_on_meta/create_dataset_with_filter_on_meta.1.ddl.sqlpp
new file mode 100644
index 0000000..909d8d4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create_dataset_with_filter_on_meta/create_dataset_with_filter_on_meta.1.ddl.sqlpp
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+drop dataverse KeyVerse if exists;
+create dataverse KeyVerse;
+use KeyVerse;
+
+create type DocumentType as open{
+ location: point,
+ area_code: string,
+ text: string
+};
+
+create type KVMetaType as open{
+ `key`:string,
+ vbucket:int32,
+ seq:int64,
+ cas:int64,
+ expiration:int32,
+ flags:int32,
+ revSeq:int64,
+ lockTime:int32
+};
+
+create dataset KVStore(DocumentType) with meta(KVMetaType) primary key meta().`key` with filter on meta().seq;
+
+CREATE INDEX s_rating ON KVStore(area_code);
+CREATE INDEX s_location ON KVStore(location) type RTREE;
+//CREATE INDEX text_idx ON KVStore(text) type fulltext;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create_dataset_with_filter_on_meta/create_dataset_with_filter_on_meta.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create_dataset_with_filter_on_meta/create_dataset_with_filter_on_meta.2.query.sqlpp
new file mode 100644
index 0000000..03926a4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create_dataset_with_filter_on_meta/create_dataset_with_filter_on_meta.2.query.sqlpp
@@ -0,0 +1,19 @@
+/*
+ * 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.
+ */
+SELECT VALUE i FROM Metadata.`Index` i WHERE i.DataverseName = "KeyVerse";
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/invalid-dataverse/invalid-dataverse.003.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/invalid-dataverse/invalid-dataverse.003.ddl.sqlpp
index 7d482dd..0bb88db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/invalid-dataverse/invalid-dataverse.003.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/invalid-dataverse/invalid-dataverse.003.ddl.sqlpp
@@ -24,5 +24,5 @@
drop type realDataverse.myType if exists;
create type realDataverse.myType as open { id: uuid, f1: int };
-drop dataset fakeDataverse.myDataset if exists;
+drop dataset fakeDataverse.myDataset /*if exists*/;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.1.ddl.sqlpp
new file mode 100644
index 0000000..4c9bae5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.1.ddl.sqlpp
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-delete-inverted-index-ngram-secondary-index.aql
+ * Description : This test is intended to test deletion from secondary ngram inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+
+create type test.DBLPType as
+ closed {
+ id : bigint,
+ dblpid : string,
+ title : string,
+ authors : string,
+ misc : string
+};
+
+create dataset DBLP(DBLPType) primary key id;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.2.update.sqlpp
new file mode 100644
index 0000000..08e9fec
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.2.update.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-delete-inverted-index-ngram-secondary-index.aql
+ * Description : This test is intended to test deletion from secondary ngram inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+load dataset DBLP using localfs ((`path`=`asterix_nc1://data/dblp-small/dblp-small-id.txt`),(`format`=`delimited-text`),(`delimiter`=`:`)) pre-sorted;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.3.ddl.sqlpp
new file mode 100644
index 0000000..157d445
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.3.ddl.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-delete-inverted-index-ngram-secondary-index.aql
+ * Description : This test is intended to test deletion from secondary ngram inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+create index ngram_index on DBLP (title) type ngram (3);
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.4.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.4.update.sqlpp
new file mode 100644
index 0000000..abf1233
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.4.update.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-delete-inverted-index-ngram-secondary-index.aql
+ * Description : This test is intended to test deletion from secondary ngram inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+delete from DBLP
+ where id > 50;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.5.query.sqlpp
new file mode 100644
index 0000000..d3c8253
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.5.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-delete-inverted-index-ngram-secondary-index.aql
+ * Description : This test is intended to test deletion from secondary ngram inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+select element o
+from DBLP as o
+where test.contains(o.title,'Multimedia')
+order by o.id
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.1.ddl.sqlpp
new file mode 100644
index 0000000..808c7d4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.1.ddl.sqlpp
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-ngram-correlated-secondary-index-nullable.sqlpp
+ * Description : This test is intended to test insertion from correlated secondary ngram inverted index
+ * that are built on nullable fields.
+ * Expected Result : Success
+ * Date : June 21 2017
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+
+create type test.DBLPType as
+ closed {
+ id : string,
+ dblpid : string,
+ title : string?,
+ authors : string,
+ misc : string
+};
+
+create dataset DBLP(DBLPType) primary key id
+with {
+ "merge-policy": {
+ "name": "correlated-prefix",
+ "parameters": { "max-mergable-component-size": 16384, "max-tolerance-component-count": 3 }
+ }
+};
+
+create dataset DBLP1(DBLPType) primary key id
+with {
+ "merge-policy": {
+ "name": "correlated-prefix",
+ "parameters": { "max-mergable-component-size": 16384, "max-tolerance-component-count": 3 }
+ }
+};
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.2.update.sqlpp
new file mode 100644
index 0000000..2a7ce84
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.2.update.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+
+use test;
+
+
+load dataset DBLP using localfs ((`path`=`asterix_nc1://data/dblp-small/dblp-small-nulls-string-as-primary-key.adm`),(`format`=`adm`));
+
+insert into DBLP1
+select element {'id':o.id,'dblpid':o.dblpid,'title':o.title,'authors':o.authors,'misc':o.misc}
+from DBLP as o
+where test.contains(o.title,'Multimedia')
+order by o.id
+;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.3.ddl.sqlpp
new file mode 100644
index 0000000..2854258
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.3.ddl.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+use test;
+
+
+create index ngram_index on DBLP (title) type ngram (3);
+
+create index ngram_index1 on DBLP1 (title) type ngram (3);
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.4.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.4.get.http
new file mode 100644
index 0000000..f3a6e46
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.4.get.http
@@ -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.
+ */
+
+/connector?datasetName=DBLP&dataverseName=test
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.5.query.sqlpp
new file mode 100644
index 0000000..cfa4899
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key.5.query.sqlpp
@@ -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.
+ */
+
+use test;
+
+
+select element o
+from DBLP1 as o
+where test.contains(o.title,'Multimedia')
+order by o.id
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.1.ddl.sqlpp
new file mode 100644
index 0000000..aacf42b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.1.ddl.sqlpp
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-ngram-secondary-index-nullable.aql
+ * Description : This test is intended to test insertion from secondary ngram inverted index that are built on nullable fields.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+
+create type test.DBLPType as
+ closed {
+ id : string,
+ dblpid : string,
+ title : string?,
+ authors : string,
+ misc : string
+};
+
+create dataset DBLP(DBLPType) primary key id;
+
+create dataset DBLP1(DBLPType) primary key id;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.2.update.sqlpp
new file mode 100644
index 0000000..0dd89bb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.2.update.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-ngram-secondary-index-nullable.aql
+ * Description : This test is intended to test insertion from secondary ngram inverted index that are built on nullable fields.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+load dataset DBLP using localfs ((`path`=`asterix_nc1://data/dblp-small/dblp-small-nulls-string-as-primary-key.adm`),(`format`=`adm`));
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.3.ddl.sqlpp
new file mode 100644
index 0000000..b6edf47
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.3.ddl.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-ngram-secondary-index-nullable.aql
+ * Description : This test is intended to test insertion from secondary ngram inverted index that are built on nullable fields.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+create index ngram_index on DBLP (title) type ngram (3);
+
+create index ngram_index1 on DBLP1 (title) type ngram (3);
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.4.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.4.get.http
new file mode 100644
index 0000000..f3a6e46
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.4.get.http
@@ -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.
+ */
+
+/connector?datasetName=DBLP&dataverseName=test
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.5.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.5.update.sqlpp
new file mode 100644
index 0000000..e027679
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.5.update.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-ngram-secondary-index-nullable.aql
+ * Description : This test is intended to test insertion from secondary ngram inverted index that are built on nullable fields.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+insert into DBLP1
+select element {'id':o.id,'dblpid':o.dblpid,'title':o.title,'authors':o.authors,'misc':o.misc}
+from DBLP as o
+where test.contains(o.title,'Multimedia')
+order by o.id
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.6.query.sqlpp
new file mode 100644
index 0000000..2a02c8e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.6.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-ngram-secondary-index-nullable.aql
+ * Description : This test is intended to test insertion from secondary ngram inverted index that are built on nullable fields.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+select element o
+from DBLP1 as o
+where test.contains(o.title,'Multimedia')
+order by o.id
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.1.ddl.sqlpp
new file mode 100644
index 0000000..369a3a9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.1.ddl.sqlpp
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-ngram-secondary-index.aql
+ * Description : This test is intended to test insertion from secondary ngram inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+
+create type test.DBLPType as
+ closed {
+ id : string,
+ dblpid : string,
+ title : string,
+ authors : string,
+ misc : string
+};
+
+create dataset DBLP(DBLPType) primary key id;
+
+create dataset DBLP1(DBLPType) primary key id;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.2.update.sqlpp
new file mode 100644
index 0000000..826bcdb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.2.update.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-ngram-secondary-index.aql
+ * Description : This test is intended to test insertion from secondary ngram inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+load dataset DBLP using localfs ((`path`=`asterix_nc1://data/dblp-small/dblp-small-id.txt`),(`format`=`delimited-text`),(`delimiter`=`:`)) pre-sorted;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.3.ddl.sqlpp
new file mode 100644
index 0000000..d034b0f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.3.ddl.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-ngram-secondary-index.aql
+ * Description : This test is intended to test insertion from secondary ngram inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+create index ngram_index on DBLP (title) type ngram (3);
+
+create index ngram_index1 on DBLP1 (title) type ngram (3);
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.4.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.4.get.http
new file mode 100644
index 0000000..f3a6e46
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.4.get.http
@@ -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.
+ */
+
+/connector?datasetName=DBLP&dataverseName=test
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.5.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.5.update.sqlpp
new file mode 100644
index 0000000..9e7c24e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.5.update.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-ngram-secondary-index.aql
+ * Description : This test is intended to test insertion from secondary ngram inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+insert into DBLP1
+select element {'id':o.id,'dblpid':o.dblpid,'title':o.title,'authors':o.authors,'misc':o.misc}
+from DBLP as o
+where test.contains(o.title,'Multimedia')
+order by o.id
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.6.query.sqlpp
new file mode 100644
index 0000000..c0f9b7c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.6.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-ngram-secondary-index.aql
+ * Description : This test is intended to test insertion from secondary ngram inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+select element o
+from DBLP1 as o
+where test.contains(o.title,'Multimedia')
+order by o.id
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.1.ddl.sqlpp
new file mode 100644
index 0000000..17633e8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.1.ddl.sqlpp
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-word-correlated-secondary-index.sqlpp
+ * Description : This test is intended to test insertion from correlated secondary keyword inverted index.
+ * Expected Result : Success
+ * Date : June 21 2017
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+
+create type test.DBLPType as
+ closed {
+ id : string,
+ dblpid : string,
+ title : string,
+ authors : string,
+ misc : string
+};
+
+create dataset DBLP(DBLPType) primary key id
+with {
+ "merge-policy": {
+ "name": "correlated-prefix",
+ "parameters": { "max-mergable-component-size": 16384, "max-tolerance-component-count": 3 }
+ }
+};
+
+create dataset DBLP1(DBLPType) primary key id
+with {
+ "merge-policy": {
+ "name": "correlated-prefix",
+ "parameters": { "max-mergable-component-size": 16384, "max-tolerance-component-count": 3 }
+ }
+};
+
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.2.update.sqlpp
new file mode 100644
index 0000000..cf9a86a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.2.update.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+
+
+use test;
+
+
+load dataset DBLP using localfs ((`path`=`asterix_nc1://data/dblp-small/dblp-small-id.txt`),(`format`=`delimited-text`),(`delimiter`=`:`)) pre-sorted;
+
+insert into DBLP1
+select element {'id':o.id,'dblpid':o.dblpid,'title':o.title,'authors':o.authors,'misc':o.misc}
+from DBLP as o
+order by o.id
+;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.3.ddl.sqlpp
new file mode 100644
index 0000000..ab2be5c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.3.ddl.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+use test;
+
+
+create index keyword_index on DBLP (title) type keyword;
+
+create index keyword_index1 on DBLP1 (title) type keyword;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.4.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.4.get.http
new file mode 100644
index 0000000..f3a6e46
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.4.get.http
@@ -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.
+ */
+
+/connector?datasetName=DBLP&dataverseName=test
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.5.query.sqlpp
new file mode 100644
index 0000000..34f332c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key.5.query.sqlpp
@@ -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.
+ */
+
+use test;
+
+
+select element o
+from DBLP1 as o
+with jacc as test.`similarity-jaccard-check`(test.`word-tokens`(o.title),test.`word-tokens`('Transactions for Cooperative Environments'),0.500000f)
+where jacc[0]
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.1.ddl.sqlpp
new file mode 100644
index 0000000..eea34f1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.1.ddl.sqlpp
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-word-secondary-index-nullable.aql
+ * Description : This test is intended to test insertion from secondary keyword inverted index that are built on nullable fields.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+
+create type test.DBLPType as
+ closed {
+ id : string,
+ dblpid : string,
+ title : string?,
+ authors : string,
+ misc : string
+};
+
+create dataset DBLP(DBLPType) primary key id;
+
+create dataset DBLP1(DBLPType) primary key id;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.2.update.sqlpp
new file mode 100644
index 0000000..da667ae
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.2.update.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-word-secondary-index-nullable.aql
+ * Description : This test is intended to test insertion from secondary keyword inverted index that are built on nullable fields.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+load dataset DBLP using localfs ((`path`=`asterix_nc1://data/dblp-small/dblp-small-nulls-string-as-primary-key.adm`),(`format`=`adm`));
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.3.ddl.sqlpp
new file mode 100644
index 0000000..c95f616
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.3.ddl.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-word-secondary-index-nullable.aql
+ * Description : This test is intended to test insertion from secondary keyword inverted index that are built on nullable fields.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+create index keyword_index on DBLP (title) type keyword;
+
+create index keyword_index1 on DBLP1 (title) type keyword;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.4.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.4.update.sqlpp
new file mode 100644
index 0000000..abd20e2
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.4.update.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-word-secondary-index-nullable.aql
+ * Description : This test is intended to test insertion from secondary keyword inverted index that are built on nullable fields.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+insert into DBLP1
+select element {'id':o.id,'dblpid':o.dblpid,'title':o.title,'authors':o.authors,'misc':o.misc}
+from DBLP as o
+order by o.id
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.5.query.sqlpp
new file mode 100644
index 0000000..aadbeb6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.5.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-word-secondary-index-nullable.aql
+ * Description : This test is intended to test insertion from secondary keyword inverted index that are built on nullable fields.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+select element o
+from DBLP1 as o
+with jacc as test.`similarity-jaccard-check`(test.`word-tokens`(o.title),test.`word-tokens`('Transactions for Cooperative Environments'),0.500000f)
+where jacc[0]
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.1.ddl.sqlpp
new file mode 100644
index 0000000..a0227f9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.1.ddl.sqlpp
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-word-secondary-index.aql
+ * Description : This test is intended to test insertion from secondary keyword inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+
+create type test.DBLPType as
+ closed {
+ id : string,
+ dblpid : string,
+ title : string,
+ authors : string,
+ misc : string
+};
+
+create dataset DBLP(DBLPType) primary key id;
+
+create dataset DBLP1(DBLPType) primary key id;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.2.update.sqlpp
new file mode 100644
index 0000000..b37beb2
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.2.update.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-word-secondary-index.aql
+ * Description : This test is intended to test insertion from secondary keyword inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+load dataset DBLP using localfs ((`path`=`asterix_nc1://data/dblp-small/dblp-small-id.txt`),(`format`=`delimited-text`),(`delimiter`=`:`)) pre-sorted;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.3.ddl.sqlpp
new file mode 100644
index 0000000..27c3e6c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.3.ddl.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-word-secondary-index.aql
+ * Description : This test is intended to test insertion from secondary keyword inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+create index keyword_index on DBLP (title) type keyword;
+
+create index keyword_index1 on DBLP1 (title) type keyword;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.4.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.4.get.http
new file mode 100644
index 0000000..f3a6e46
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.4.get.http
@@ -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.
+ */
+
+/connector?datasetName=DBLP&dataverseName=test
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.5.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.5.update.sqlpp
new file mode 100644
index 0000000..460e51e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.5.update.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-word-secondary-index.aql
+ * Description : This test is intended to test insertion from secondary keyword inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+insert into DBLP1
+select element {'id':o.id,'dblpid':o.dblpid,'title':o.title,'authors':o.authors,'misc':o.misc}
+from DBLP as o
+order by o.id
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.6.query.sqlpp
new file mode 100644
index 0000000..cde417e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.6.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Test case Name : scan-insert-inverted-index-word-secondary-index.aql
+ * Description : This test is intended to test insertion from secondary keyword inverted index.
+ * Expected Result : Success
+ * Date : March 31 2013
+ */
+
+use test;
+
+
+select element o
+from DBLP1 as o
+with jacc as test.`similarity-jaccard-check`(test.`word-tokens`(o.title),test.`word-tokens`('Transactions for Cooperative Environments'),0.500000f)
+where jacc[0]
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-11/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-11/test.000.ddl.sqlpp
new file mode 100644
index 0000000..e4cf69b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-11/test.000.ddl.sqlpp
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+use test;
+
+drop type test if exists;
+create type test as open {
+};
+
+drop dataset test if exists;
+create external dataset test(test) using S3 (
+("accessKeyId"="dummyAccessKey"),
+("secretAccessKey"="dummySecretKey"),
+("region"="us-west-2"),
+("serviceEndpoint"="http://localhost:8001"),
+("container"="include-exclude"),
+("definition"="data/mixed/"),
+("format"="csv"),
+("header"=false),
+("include"="*.[a-c][a-z][a-z**||\\\\&&--~~]")
+);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-11/test.001.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-11/test.001.query.sqlpp
new file mode 100644
index 0000000..3306d5c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-11/test.001.query.sqlpp
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+use test;
+select count(*) as `count` from test;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-11/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-11/test.099.ddl.sqlpp
new file mode 100644
index 0000000..548e632
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-11/test.099.ddl.sqlpp
@@ -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.
+ */
+
+drop dataverse test if exists;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-12/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-12/test.000.ddl.sqlpp
new file mode 100644
index 0000000..47fbaef
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-12/test.000.ddl.sqlpp
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+
+ // This test case matches nothing for "include", but has extreme cases and complicated pattern, expected is to not fail
+
+drop dataverse test if exists;
+create dataverse test;
+use test;
+
+drop type test if exists;
+create type test as open {
+};
+
+drop dataset test if exists;
+create external dataset test(test) using S3 (
+("accessKeyId"="dummyAccessKey"),
+("secretAccessKey"="dummySecretKey"),
+("region"="us-west-2"),
+("serviceEndpoint"="http://localhost:8001"),
+("container"="include-exclude"),
+("definition"="data/mixed/"),
+("format"="csv"),
+("header"=false),
+("include"="[][!][^]]]]*[![*a-zA--&&^$||0-9B$\\*&&]*&&[^a-b||0--9][[[")
+);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-12/test.001.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-12/test.001.query.sqlpp
new file mode 100644
index 0000000..3306d5c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-12/test.001.query.sqlpp
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+use test;
+select count(*) as `count` from test;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-12/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-12/test.099.ddl.sqlpp
new file mode 100644
index 0000000..548e632
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/include-exclude/include-12/test.099.ddl.sqlpp
@@ -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.
+ */
+
+drop dataverse test if exists;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.1.ddl.sqlpp
new file mode 100644
index 0000000..76cc70d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.1.ddl.sqlpp
@@ -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.
+ */
+DROP DATAVERSE externallibtest if exists;
+CREATE DATAVERSE externallibtest;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.10.query.sqlpp
new file mode 100644
index 0000000..58202fb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.10.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+select value {
+ "type": "eval",
+ "value": externallibtest.f2(3, 4)
+}
+union all
+select value {
+ "type": "meta-functions",
+ "value": ( select value m from Metadata.`Function` m where DataverseName = "externallibtest" )
+}
+union all
+select value {
+ "type": "meta-types",
+ "value": ( select value object_remove(m, "Timestamp") from Metadata.`Datatype` m where DataverseName = "externallibtest" )
+}
+order by `type`;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.11.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.11.ddl.sqlpp
new file mode 100644
index 0000000..66e94b1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.11.ddl.sqlpp
@@ -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.
+ */
+
+/*
+ * Test CREATE OR REPLACE FUNCTION.
+ * Replace with SQL++ function
+ */
+
+create or replace function externallibtest.f2(a, b) {
+ a * b
+};
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.12.query.sqlpp
new file mode 100644
index 0000000..46f8b50
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.12.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+select value {
+ "type": "eval",
+ "value": externallibtest.f2(5, 6)
+}
+union all
+select value {
+ "type": "meta-functions",
+ "value": ( select value m from Metadata.`Function` m where DataverseName = "externallibtest" )
+}
+union all
+select value {
+ "type": "meta-types",
+ "value": ( select value object_remove(m, "Timestamp") from Metadata.`Datatype` m where DataverseName = "externallibtest" )
+}
+order by `type`;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.2.lib.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.2.lib.sqlpp
new file mode 100644
index 0000000..3dc6eb6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.2.lib.sqlpp
@@ -0,0 +1,19 @@
+/*
+ * 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.
+ */
+install externallibtest testlib admin admin target/data/externallib/asterix-external-data-testlib.zip
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.3.ddl.sqlpp
new file mode 100644
index 0000000..a16d594
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.3.ddl.sqlpp
@@ -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.
+ */
+
+/*
+ * Test default dataverse for the library reference
+ */
+
+create function externallibtest.f(a)
+ as "org.apache.asterix.external.library.OpenCapitalFinderFactory" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.4.query.sqlpp
new file mode 100644
index 0000000..10772ec
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.4.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+select value {
+ "type": "eval",
+ "value": externallibtest.f("United States")
+}
+union all
+select value {
+ "type": "meta-functions",
+ "value": ( select value m from Metadata.`Function` m where DataverseName = "externallibtest" )
+}
+union all
+select value {
+ "type": "meta-types",
+ "value": ( select value object_remove(m, "Timestamp") from Metadata.`Datatype` m where DataverseName = "externallibtest" )
+}
+order by `type`;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.5.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.5.ddl.sqlpp
new file mode 100644
index 0000000..2727090
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.5.ddl.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+/*
+ * Test CREATE OR REPLACE FUNCTION.
+ *
+ * Replace implementation
+ * Replace parameter type.
+ */
+
+create or replace function externallibtest.f(a: [int32]) returns int32
+ as "org.apache.asterix.external.library.MyArraySumFactory" at testlib;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.6.query.sqlpp
new file mode 100644
index 0000000..34e8c26
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.6.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+select value {
+ "type": "eval",
+ "value": externallibtest.f([1, 2])
+}
+union all
+select value {
+ "type": "meta-functions",
+ "value": ( select value m from Metadata.`Function` m where DataverseName = "externallibtest" )
+}
+union all
+select value {
+ "type": "meta-types",
+ "value": ( select value object_remove(m, "Timestamp") from Metadata.`Datatype` m where DataverseName = "externallibtest" )
+}
+order by `type`;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.7.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.7.ddl.sqlpp
new file mode 100644
index 0000000..9276797
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.7.ddl.sqlpp
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+/*
+ * Test CREATE OR REPLACE FUNCTION.
+ *
+ * Replace implementation
+ * Replace parameter type with 'any'
+ * Replace return type with 'any'
+ */
+
+create or replace function externallibtest.f(a)
+ as "org.apache.asterix.external.library.OpenCapitalFinderFactory" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.8.query.sqlpp
new file mode 100644
index 0000000..884c63d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.8.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+select value {
+ "type": "eval",
+ "value": externallibtest.f("Italy")
+}
+union all
+select value {
+ "type": "meta-functions",
+ "value": ( select value m from Metadata.`Function` m where DataverseName = "externallibtest" )
+}
+union all
+select value {
+ "type": "meta-types",
+ "value": ( select value object_remove(m, "Timestamp") from Metadata.`Datatype` m where DataverseName = "externallibtest" )
+}
+order by `type`;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.9.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.9.ddl.sqlpp
new file mode 100644
index 0000000..bd8d726
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/create-or-replace-function-1/create-or-replace-function-1.9.ddl.sqlpp
@@ -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.
+ */
+
+/*
+ * Test CREATE OR REPLACE FUNCTION.
+ *
+ * Create function with 2 parameters
+ */
+
+create function externallibtest.f2(a: int32, b: int32) returns int32
+ as "org.apache.asterix.external.library.MySumFactory" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/deterministic/deterministic.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/deterministic/deterministic.2.ddl.sqlpp
index 8439cfb..0d700f2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/deterministic/deterministic.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/deterministic/deterministic.2.ddl.sqlpp
@@ -20,10 +20,12 @@
use externallibtest;
create function getCapital_default(a: string) returns CountryCapitalType
-language java as "testlib","org.apache.asterix.external.library.CapitalFinderFactory";
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib;
create function getCapital_deterministic(a: string) returns CountryCapitalType
-language java deterministic as "testlib","org.apache.asterix.external.library.CapitalFinderFactory";
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib
+ with { "deterministic": true };
create function getCapital_not_deterministic(a: string) returns CountryCapitalType
-language java not deterministic as "testlib","org.apache.asterix.external.library.CapitalFinderFactory";
\ No newline at end of file
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib
+ with { "deterministic": false };
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/getCapital/getCapital.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/getCapital/getCapital.2.ddl.sqlpp
index a03b570..59c0509 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/getCapital/getCapital.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/getCapital/getCapital.2.ddl.sqlpp
@@ -19,4 +19,5 @@
use externallibtest;
-create function getCapital(a: string) returns CountryCapitalType language java as "testlib","org.apache.asterix.external.library.CapitalFinderFactory";
+create function getCapital(a: string) returns CountryCapitalType
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/getCapital_open/getCapital_open.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/getCapital_open/getCapital_open.2.ddl.sqlpp
index 28963b6..5532ae7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/getCapital_open/getCapital_open.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/getCapital_open/getCapital_open.2.ddl.sqlpp
@@ -19,4 +19,5 @@
use externallibtest;
-create function getCapital(a) language java as "testlib","org.apache.asterix.external.library.OpenCapitalFinderFactory";
+create function getCapital(a)
+ as "org.apache.asterix.external.library.OpenCapitalFinderFactory" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/keyword_detector/keyword_detector.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/keyword_detector/keyword_detector.2.ddl.sqlpp
index 2ff4d11..80502a0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/keyword_detector/keyword_detector.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/keyword_detector/keyword_detector.2.ddl.sqlpp
@@ -24,6 +24,11 @@
use test;
-create function fnameDetector(a: InputRecordType) returns DetectResultType language java as "testlib","org.apache.asterix.external.library.KeywordsDetectorFactory" WITH {"dictPath":"data/external_function/KeywordsDetector_List1.txt","fieldName":"fname"};
-create function lnameDetector(a: InputRecordType) returns DetectResultType language java as "testlib","org.apache.asterix.external.library.KeywordsDetectorFactory" WITH {"dictPath":"data/external_function/KeywordsDetector_List2.txt","fieldName":"lname"};
+create function fnameDetector(a: InputRecordType) returns DetectResultType
+ as "org.apache.asterix.external.library.KeywordsDetectorFactory" at testlib
+ with { "resources": {"dictPath":"data/external_function/KeywordsDetector_List1.txt","fieldName":"fname"} };
+
+create function lnameDetector(a: InputRecordType) returns DetectResultType
+ as "org.apache.asterix.external.library.KeywordsDetectorFactory" at testlib
+ with { "resources": {"dictPath":"data/external_function/KeywordsDetector_List2.txt","fieldName":"lname"} };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.0.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.0.ddl.sqlpp
index 76cc70d..05b3d2c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.0.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.0.ddl.sqlpp
@@ -18,3 +18,6 @@
*/
DROP DATAVERSE externallibtest if exists;
CREATE DATAVERSE externallibtest;
+
+DROP DATAVERSE externallibtest2 if exists;
+CREATE DATAVERSE externallibtest2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.1.lib.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.1.lib.sqlpp
index 3dc6eb6..9e53153 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.1.lib.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.1.lib.sqlpp
@@ -16,4 +16,4 @@
* specific language governing permissions and limitations
* under the License.
*/
-install externallibtest testlib admin admin target/data/externallib/asterix-external-data-testlib.zip
+install externallibtest2 testlib admin admin target/data/externallib/asterix-external-data-testlib.zip
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.2.ddl.sqlpp
index 25f04e1..aeeba56 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.2.ddl.sqlpp
@@ -16,7 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
- use externallibtest;
+/*
+ * Use library in a different dataverse
+ */
-create function my_array_sum(a: [int32]) returns int32 language java as "testlib","org.apache.asterix.external.library.MyArraySumFactory";
+use externallibtest;
+
+create function my_array_sum(a: [int32]) returns int32
+ as "org.apache.asterix.external.library.MyArraySumFactory" at externallibtest2.testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.4.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.4.ddl.sqlpp
index 65733e4..45afe0c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.4.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/my_array_sum/my_array_sum.4.ddl.sqlpp
@@ -17,3 +17,4 @@
* under the License.
*/
DROP DATAVERSE externallibtest;
+DROP DATAVERSE externallibtest2;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysentiment/mysentiment.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysentiment/mysentiment.2.ddl.sqlpp
index ff39aee..00838de 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysentiment/mysentiment.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysentiment/mysentiment.2.ddl.sqlpp
@@ -18,4 +18,5 @@
*/
USE externallibtest;
-create function sentiment(s) language python as "testlib","sentiment:TweetSent";
+create function sentiment(s)
+ as "sentiment", "TweetSent.sentiment" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysum/mysum.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysum/mysum.2.ddl.sqlpp
index fd815d1..9f325a3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysum/mysum.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysum/mysum.2.ddl.sqlpp
@@ -16,6 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
- USE externallibtest;
-create function mysum(a: int32, b: int32) returns int32 language java as "testlib","org.apache.asterix.external.library.MySumFactory";
+create function externallibtest.mysum(a: int32, b: int32) returns int32
+ as "org.apache.asterix.external.library.MySumFactory" at externallibtest.testlib;
+
+/* test if not exists */
+create function externallibtest.mysum if not exists (a: int32, b: int32) returns int32
+ as "org.apache.asterix.external.library.MySumFactory" at externallibtest.testlib;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysum_dropinuse/mysum_dropinuse.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysum_dropinuse/mysum_dropinuse.2.ddl.sqlpp
index fd815d1..4e93750 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysum_dropinuse/mysum_dropinuse.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysum_dropinuse/mysum_dropinuse.2.ddl.sqlpp
@@ -18,4 +18,5 @@
*/
USE externallibtest;
-create function mysum(a: int32, b: int32) returns int32 language java as "testlib","org.apache.asterix.external.library.MySumFactory";
+create function mysum(a: int32, b: int32) returns int32
+ as "org.apache.asterix.external.library.MySumFactory" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysum_dropinuse/mysum_dropinuse.5.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysum_dropinuse/mysum_dropinuse.5.ddl.sqlpp
index f8e2ae7..58447ec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysum_dropinuse/mysum_dropinuse.5.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/mysum_dropinuse/mysum_dropinuse.5.ddl.sqlpp
@@ -18,4 +18,4 @@
*/
USE externallibtest;
-drop function externallibtest.mysum@2;
+drop function externallibtest.mysum(a: int32, b: int32);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_function_error/py_function_error.0.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_function_error/py_function_error.0.ddl.sqlpp
new file mode 100644
index 0000000..2076054
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_function_error/py_function_error.0.ddl.sqlpp
@@ -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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+
+drop dataverse test if exists;
+create dataverse test;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_function_error/py_function_error.1.lib.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_function_error/py_function_error.1.lib.sqlpp
new file mode 100644
index 0000000..0f0a05b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_function_error/py_function_error.1.lib.sqlpp
@@ -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.
+ */
+
+install test testlib admin admin target/TweetSent.pyz
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_function_error/py_function_error.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_function_error/py_function_error.2.ddl.sqlpp
new file mode 100644
index 0000000..6bbeaa1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_function_error/py_function_error.2.ddl.sqlpp
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+use test;
+
+create function warning()
+ as "roundtrip", "Tests.warning" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_function_error/py_function_error.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_function_error/py_function_error.3.query.sqlpp
new file mode 100644
index 0000000..1fe7c59
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_function_error/py_function_error.3.query.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+// param max-warnings:json=1
+
+use test;
+
+warning();
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.0.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.0.ddl.sqlpp
new file mode 100644
index 0000000..c074534
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.0.ddl.sqlpp
@@ -0,0 +1,88 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+
+create type test.S as
+{
+ id : bigint
+};
+
+create type test.GS as
+ closed {
+ id : bigint,
+ Genus : string,
+ lower : S
+};
+
+create type test.FGS as
+{
+ id : bigint,
+ Family : string
+};
+
+create type test.OFGS as
+ closed {
+ id : bigint,
+ `Order` : string,
+ lower : FGS
+};
+
+create type test.COFGS as
+ closed {
+ id : bigint,
+ Class : string,
+ lower : OFGS
+};
+
+create type test.PCOFGS as
+ closed {
+ id : bigint,
+ Phylum : string,
+ lower : COFGS
+};
+
+create type test.KPCOFGS as
+{
+ id : bigint,
+ Kingdom : string
+};
+
+create type test.Classification as
+ closed {
+ id : bigint,
+ fullClassification : KPCOFGS
+};
+
+create type test.Animal as
+{
+ id : bigint
+};
+
+create dataset Animals(Animal) primary key id;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.1.lib.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.1.lib.sqlpp
new file mode 100644
index 0000000..0f0a05b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.1.lib.sqlpp
@@ -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.
+ */
+
+install test testlib admin admin target/TweetSent.pyz
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.10.query.sqlpp
new file mode 100644
index 0000000..c48dda5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.10.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+
+use test;
+
+
+select value [(
+select element result
+from Animals as test
+with result as roundtrip(test)[0][0].class.fullClassification.lower
+order by result.id)][0]
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.11.query.sqlpp
new file mode 100644
index 0000000..30ec1da
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.11.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+
+use test;
+
+
+select value [(
+select element result
+from Animals as test
+with result as roundtrip(test)[0][0].class.fullClassification
+order by result.id)][0]
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.12.query.sqlpp
new file mode 100644
index 0000000..1f7925f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.12.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+
+use test;
+
+
+select value [(
+select element result
+from Animals as test
+with result as roundtrip(test)[0][0].class
+order by result.id)][0]
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.13.query.sqlpp
new file mode 100644
index 0000000..13b4c28
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.13.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+
+use test;
+
+
+select value [(
+select element result
+from Animals as test
+with result as roundtrip(test)[0][0]
+order by result.id)][0]
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.2.ddl.sqlpp
new file mode 100644
index 0000000..69395a0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.2.ddl.sqlpp
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+use test;
+
+create function roundtrip(s)
+ as "roundtrip", "Tests.roundtrip" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.3.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.3.update.sqlpp
new file mode 100644
index 0000000..3ca7f76
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.3.update.sqlpp
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+
+use test;
+
+
+load dataset Animals using localfs ((`path`=`asterix_nc1://data/classifications/animals.adm`),(`format`=`adm`));
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.4.query.sqlpp
new file mode 100644
index 0000000..1e9a088
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.4.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+
+use test;
+
+
+select element result
+from Animals as test
+with result as roundtrip(test)[0][0].class.fullClassification.lower.lower.lower.lower.lower.lower.Species
+order by result
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.5.query.sqlpp
new file mode 100644
index 0000000..eedf56b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.5.query.sqlpp
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+use test;
+
+select value [(
+select element result
+from Animals as test
+with result as roundtrip(test)[0][0].class.fullClassification.lower.lower.lower.lower.lower.lower
+order by result.id )][0]
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.6.query.sqlpp
new file mode 100644
index 0000000..4912ad6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.6.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+
+use test;
+
+
+select value [(
+select element result
+from Animals as test
+with result as roundtrip(test)[0][0].class.fullClassification.lower.lower.lower.lower.lower
+order by result.id)][0]
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.7.query.sqlpp
new file mode 100644
index 0000000..546c174
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.7.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+
+use test;
+
+
+select value [(
+select element result
+from Animals as test
+with result as roundtrip(test)[0][0].class.fullClassification.lower.lower.lower.lower
+order by result.id)][0]
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.8.query.sqlpp
new file mode 100644
index 0000000..62af850
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.8.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+
+use test;
+
+
+select value [(
+select element result
+from Animals as test
+with result as roundtrip(test)[0][0].class.fullClassification.lower.lower.lower
+order by result.id)][0]
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.9.query.sqlpp
new file mode 100644
index 0000000..6c594f0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/py_nested_access/py_nested_access.9.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+* Description : Access a records nested records at each level.
+* Expected Res : Success
+* Date : 04 Jun 2015
+*/
+
+use test;
+
+
+select value [(
+select element result
+from Animals as test
+with result as roundtrip(test)[0][0].class.fullClassification.lower.lower
+order by result.id)][0]
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/python-fn-escape/python-fn-escape.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/python-fn-escape/python-fn-escape.2.ddl.sqlpp
index b1c5b10..ebb0844 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/python-fn-escape/python-fn-escape.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/python-fn-escape/python-fn-escape.2.ddl.sqlpp
@@ -18,4 +18,5 @@
*/
USE externallibtest;
-create function system(s: string) language python as "testlib","os";
+create function system(s: string)
+ as "os", "system" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/return_invalid_type/return_invalid_type.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/return_invalid_type/return_invalid_type.2.ddl.sqlpp
index 82fec18..ee3c27a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/return_invalid_type/return_invalid_type.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/return_invalid_type/return_invalid_type.2.ddl.sqlpp
@@ -19,4 +19,5 @@
use externallibtest;
-create function addHashTagsInPlace(t: Tweet) returns ProcessedTweet language java as "testlib","org.apache.asterix.external.library.AddHashTagsInPlaceFactory";
+create function addHashTagsInPlace(t: Tweet) returns ProcessedTweet
+ as "org.apache.asterix.external.library.AddHashTagsInPlaceFactory" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/type_validation/type_validation.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/type_validation/type_validation.2.ddl.sqlpp
index f87c3d7..2a7c683 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/type_validation/type_validation.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/type_validation/type_validation.2.ddl.sqlpp
@@ -18,5 +18,6 @@
*/
use externallibtest;
-create function typeValidation(a: int32, b: float, c:string, d:double, e:boolean, f:date, g: datetime) returns string language java as "testlib","org.apache.asterix.external.library.TypeValidationFunctionFactory";
+create function typeValidation(a: int32, b: float, c:string, d:double, e:boolean, f:date, g: datetime) returns string
+ as "org.apache.asterix.external.library.TypeValidationFunctionFactory" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/udf_metadata/udf_metadata.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/udf_metadata/udf_metadata.2.ddl.sqlpp
index bcb86ac..c9623b5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/udf_metadata/udf_metadata.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/udf_metadata/udf_metadata.2.ddl.sqlpp
@@ -20,35 +20,35 @@
use externallibtest;
create function myfn001()
- language java as "testlib","org.apache.asterix.external.library.CapitalFinderFactory";
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib;
create function myfn002(a)
- language java as "testlib","org.apache.asterix.external.library.CapitalFinderFactory";
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib;
create function myfn003(a:string, b:[bigint], c:{{boolean}})
returns string
- language java as "testlib","org.apache.asterix.external.library.CapitalFinderFactory";
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib;
create function myfn004(a:CountryCapitalType, b:[CountryCapitalType])
returns CountryCapitalType
- language java as "testlib","org.apache.asterix.external.library.CapitalFinderFactory";
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib;
create function myfn005(a:smallint, b:[bigint], c:CountryCapitalType, d:[CountryCapitalType])
returns string
- language java as "testlib","org.apache.asterix.external.library.CapitalFinderFactory";
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib;
create function myfn006(a [string])
returns [string]
- language java as "testlib","org.apache.asterix.external.library.CapitalFinderFactory";
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib;
create function myfn007(a {{string}})
returns {{string}}
- language java as "testlib","org.apache.asterix.external.library.CapitalFinderFactory";
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib;
create function myfn008(a [CountryCapitalType])
returns [CountryCapitalType]
- language java as "testlib","org.apache.asterix.external.library.CapitalFinderFactory";
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib;
create function externallibtest2.myfn009(a externallibtest.CountryCapitalType)
returns externallibtest.CountryCapitalType
- language java as "testlib2","org.apache.asterix.external.library.CapitalFinderFactory";
\ No newline at end of file
+ as "org.apache.asterix.external.library.CapitalFinderFactory" at testlib2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/upperCase/upperCase.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/upperCase/upperCase.2.ddl.sqlpp
index 7b12324..a6cf8fb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/upperCase/upperCase.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-library/upperCase/upperCase.2.ddl.sqlpp
@@ -18,5 +18,6 @@
*/
USE externallibtest;
-create function toUpper(t: TextType) returns TextType language java as "testlib","org.apache.asterix.external.library.UpperCaseFactory";
+create function toUpper(t: TextType) returns TextType
+ as "org.apache.asterix.external.library.UpperCaseFactory" at testlib;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.1.ddl.sqlpp
new file mode 100644
index 0000000..fbcc7db
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.1.ddl.sqlpp
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+drop dataverse KeyVerse if exists;
+create dataverse KeyVerse;
+use KeyVerse;
+
+create type DocumentType as open{
+};
+
+create type KVMetaType as open{
+ `key`:string,
+ vbucket:int32,
+ seq:int64,
+ cas:int64,
+ expiration:int32,
+ flags:int32,
+ revSeq:int64,
+ lockTime:int32
+};
+
+create dataset KVStore(DocumentType) with meta(KVMetaType) primary key meta().`key` with filter on meta().seq;
+
+create feed KVChangeStream with {
+ "adapter-name" : "adapter",
+ "type-name" : "DocumentType",
+ "meta-type-name" : "KVMetaType",
+ "reader" : "org.apache.asterix.external.input.record.reader.kv.KVTestReaderFactory",
+ "parser" : "record-with-metadata",
+ "format" : "dcp",
+ "record-format" : "json",
+ "change-feed" : "true",
+ "key-indexes" : "0",
+ "key-indicators" : "1",
+ "num-of-records" : "1000"
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.2.update.sqlpp
new file mode 100644
index 0000000..76ad55b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.2.update.sqlpp
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+use KeyVerse;
+
+set `wait-for-completion-feed` "true";
+connect feed KVChangeStream to dataset KVStore;
+
+start feed KVChangeStream;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.3.query.sqlpp
new file mode 100644
index 0000000..61c1d45
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.3.query.sqlpp
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+use KeyVerse;
+
+select k, meta() as meta from KVStore k
+where k.id = 5;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.4.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.4.ddl.sqlpp
new file mode 100644
index 0000000..46a5fad
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.4.ddl.sqlpp
@@ -0,0 +1,19 @@
+/*
+ * 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.
+ */
+drop dataverse KeyVerse;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.1.ddl.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.1.ddl.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.1.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.10.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.10.update.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.10.update.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.10.update.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.11.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.11.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.11.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.12.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.12.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.12.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.13.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.13.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.13.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.14.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.14.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.14.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.15.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.15.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.15.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.15.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.16.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.16.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.16.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.16.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.17.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.17.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.17.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.17.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.18.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.18.ddl.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.18.ddl.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.18.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.2.update.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.2.update.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.2.update.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.3.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.3.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.3.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.4.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.4.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.4.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.5.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.5.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.5.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.6.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.6.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.6.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.7.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.7.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.7.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.8.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.8.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.8.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.9.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.9.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-where-on-meta/change-feed-with-where-on-meta.9.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/drop-function-no-longer-used-by-feed/drop-function-no-longer-used-by-feed.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/drop-function-no-longer-used-by-feed/drop-function-no-longer-used-by-feed.3.ddl.sqlpp
index c0ee51a..a92d8b7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/drop-function-no-longer-used-by-feed/drop-function-no-longer-used-by-feed.3.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/drop-function-no-longer-used-by-feed/drop-function-no-longer-used-by-feed.3.ddl.sqlpp
@@ -17,5 +17,4 @@
* under the License.
*/
use experiments;
-drop function test_func0@1;
-
+drop function test_func0@1;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/drop-function-used-by-feed/drop-function-used-by-feed.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/drop-function-used-by-feed/drop-function-used-by-feed.3.ddl.sqlpp
index c0ee51a..57d0a78 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/drop-function-used-by-feed/drop-function-used-by-feed.3.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/drop-function-used-by-feed/drop-function-used-by-feed.3.ddl.sqlpp
@@ -17,5 +17,5 @@
* under the License.
*/
use experiments;
-drop function test_func0@1;
+drop function test_func0(x);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.0.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.0.ddl.sqlpp
new file mode 100644
index 0000000..904e960
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.0.ddl.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Feed with an external adapter. Test different dataverses.
+ * Expected Res : Success
+ */
+
+drop dataverse externallibtest if exists;
+create dataverse externallibtest;
+
+drop dataverse externallibtest2 if exists;
+create dataverse externallibtest2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.1.lib.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.1.lib.sqlpp
new file mode 100644
index 0000000..806ad5e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.1.lib.sqlpp
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Feed with an external adapter
+ * Expected Res : Success
+ */
+
+install externallibtest2 testlib admin admin target/data/externallib/asterix-external-data-testlib.zip
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.2.ddl.sqlpp
new file mode 100644
index 0000000..46a5fe9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.2.ddl.sqlpp
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Feed with an external adapter
+ * Expected Res : Success
+ */
+
+/* test drop adapter if exists */
+drop adapter externallibtest.TweetAdapter if exists;
+
+create adapter externallibtest.TweetAdapter
+ as "org.apache.asterix.external.library.adapter.TestTypedAdapterFactory" at externallibtest2.testlib;
+
+/* test create adapter if not exists */
+create adapter externallibtest.TweetAdapter if not exists
+ as "org.apache.asterix.external.library.adapter.TestTypedAdapterFactory" at externallibtest2.testlib;
+
+create type externallibtest.TweetType as open {
+ tweetid: int64
+};
+
+create dataset externallibtest.Tweets(TweetType) primary key tweetid;
+
+create feed externallibtest.TweetFeed with {
+ "adapter-name": "TweetAdapter",
+ "type-name" : "TweetType",
+ "num_output_records": 4
+};
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.3.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.3.update.sqlpp
new file mode 100644
index 0000000..ae44476
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.3.update.sqlpp
@@ -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.
+ */
+/*
+ * Description : Feed with an external adapter
+ * Expected Res : Success
+ */
+
+set `wait-for-completion-feed` "true";
+
+connect feed externallibtest.TweetFeed to dataset externallibtest.Tweets;
+start feed externallibtest.TweetFeed;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.4.query.sqlpp
new file mode 100644
index 0000000..5eccf60
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.4.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Feed with an external adapter
+ * Expected Res : Success
+ */
+
+select value t
+from externallibtest.Tweets t
+order by t.tweetid;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.5.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.5.update.sqlpp
new file mode 100644
index 0000000..62f4960
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.5.update.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Feed with an external adapter
+ * Expected Res : Success
+ */
+
+disconnect feed externallibtest.TweetFeed from dataset externallibtest.Tweets;
+drop feed externallibtest.TweetFeed;
+drop adapter externallibtest.TweetAdapter;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter/feed-with-external-adapter.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter/feed-with-external-adapter.2.ddl.sqlpp
index 9cb4046..f0a36cd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter/feed-with-external-adapter.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter/feed-with-external-adapter.2.ddl.sqlpp
@@ -23,8 +23,15 @@
use externallibtest;
-create adapter TweetAdapter language java as "testlib",
- "org.apache.asterix.external.library.adapter.TestTypedAdapterFactory";
+/* test drop adapter if exists */
+drop adapter TweetAdapter if exists;
+
+create adapter TweetAdapter
+ as "org.apache.asterix.external.library.adapter.TestTypedAdapterFactory" at testlib;
+
+/* test create adapter if not exists */
+create adapter TweetAdapter if not exists
+ as "org.apache.asterix.external.library.adapter.TestTypedAdapterFactory" at testlib;
create type TweetType as open {
tweetid: int64
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter/feed-with-external-adapter.5.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter/feed-with-external-adapter.5.update.sqlpp
new file mode 100644
index 0000000..e897463
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-adapter/feed-with-external-adapter.5.update.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Feed with an external adapter
+ * Expected Res : Success
+ */
+
+use externallibtest;
+
+disconnect feed TweetFeed from dataset Tweets;
+drop feed TweetFeed;
+drop adapter TweetAdapter;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-function/feed-with-external-function.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-function/feed-with-external-function.2.ddl.sqlpp
index 00544be..01e29c0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-function/feed-with-external-function.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/feed-with-external-function/feed-with-external-function.2.ddl.sqlpp
@@ -24,5 +24,7 @@
use udfs;
-create function addMentionedUsers(t: TweetType) returns TweetType language java as "testlib","org.apache.asterix.external.library.AddMentionedUsersFactory" WITH {"textFieldName": "text"};
+create function addMentionedUsers(t: TweetType) returns TweetType
+ as "org.apache.asterix.external.library.AddMentionedUsersFactory" at testlib
+ with { "resources": {"textFieldName": "text"} };
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/drop_if_exists/drop_if_exists.2.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/drop_if_exists/drop_if_exists.2.ddl.sqlpp
index 14a68c0..e39a9fc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/drop_if_exists/drop_if_exists.2.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/drop_if_exists/drop_if_exists.2.ddl.sqlpp
@@ -17,4 +17,4 @@
* under the License.
*/
use test;
-drop function test@0 if exists;
\ No newline at end of file
+drop function test() if exists;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/drop_if_exists/drop_if_exists.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/drop_if_exists/drop_if_exists.3.ddl.sqlpp
index 14a68c0..e39a9fc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/drop_if_exists/drop_if_exists.3.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/drop_if_exists/drop_if_exists.3.ddl.sqlpp
@@ -17,4 +17,4 @@
* under the License.
*/
use test;
-drop function test@0 if exists;
\ No newline at end of file
+drop function test() if exists;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.1.ddl.sqlpp
new file mode 100644
index 0000000..8ae179e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.1.ddl.sqlpp
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+
+drop dataverse fuzzyjoin if exists;
+create dataverse fuzzyjoin;
+
+use fuzzyjoin;
+
+
+create type DBLPType as
+{
+ id : string,
+ dblpid : string,
+ title : string,
+ authors : string,
+ misc : string
+};
+
+create dataset DBLP(DBLPType) primary key id;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.2.update.sqlpp
new file mode 100644
index 0000000..51c5bb1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.2.update.sqlpp
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+use fuzzyjoin;
+
+load dataset DBLP using localfs ((`path`=`asterix_nc1://data/dblp-small/dblp-small-id.txt`),(`format`=`delimited-text`),(`delimiter`=`:`)) pre-sorted;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.3.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.3.get.http
new file mode 100644
index 0000000..e9e914e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.3.get.http
@@ -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.
+ */
+
+/connector?datasetName=DBLP&dataverseName=fuzzyjoin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.4.query.sqlpp
new file mode 100644
index 0000000..0d3f4ca
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.4.query.sqlpp
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+use fuzzyjoin;
+
+SELECT VALUE id FROM DBLP dblp where ftcontains(dblp.title, ["storage", "ExODuS"], {"mode" : "all"});
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-2/gby-expr-2.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-2/gby-expr-2.1.ddl.sqlpp
deleted file mode 100644
index fa9ccad..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-2/gby-expr-2.1.ddl.sqlpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.
- */
-
-DROP DATAVERSE gby IF EXISTS;
-CREATE DATAVERSE gby;
-
-USE gby;
-
-CREATE TYPE EmployeeType AS {
- id : string
-};
-
-CREATE TYPE IncentiveType AS {
- job_category: string
-};
-
-CREATE TYPE SuperStarType AS {
- id : string
-};
-
-CREATE DATASET Employee(EmployeeType) PRIMARY KEY id;
-CREATE DATASET Incentive(IncentiveType) PRIMARY KEY job_category;
-CREATE DATASET SuperStars(SuperStarType) PRIMARY KEY id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-2/gby-expr-2.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-2/gby-expr-2.2.update.sqlpp
deleted file mode 100644
index cfa1f24..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-2/gby-expr-2.2.update.sqlpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.
- */
-
-
-USE gby;
-
-INSERT INTO Employee (
- {
- 'id': '123',
- 'job_category': 'Cook',
- 'salary': 2000,
- 'department_id': 'K55'
- }
-);
-
-INSERT INTO Incentive (
- { 'job_category': 'Cook',
- 'bonus': 1000
- }
-);
-
-INSERT INTO SuperStars (
- {
- 'id': '123'
- }
-);
-
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-3/gby-expr-3.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-3/gby-expr-3.1.ddl.sqlpp
deleted file mode 100644
index fa9ccad..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-3/gby-expr-3.1.ddl.sqlpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.
- */
-
-DROP DATAVERSE gby IF EXISTS;
-CREATE DATAVERSE gby;
-
-USE gby;
-
-CREATE TYPE EmployeeType AS {
- id : string
-};
-
-CREATE TYPE IncentiveType AS {
- job_category: string
-};
-
-CREATE TYPE SuperStarType AS {
- id : string
-};
-
-CREATE DATASET Employee(EmployeeType) PRIMARY KEY id;
-CREATE DATASET Incentive(IncentiveType) PRIMARY KEY job_category;
-CREATE DATASET SuperStars(SuperStarType) PRIMARY KEY id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-3/gby-expr-3.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-3/gby-expr-3.2.update.sqlpp
deleted file mode 100644
index cfa1f24..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-3/gby-expr-3.2.update.sqlpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.
- */
-
-
-USE gby;
-
-INSERT INTO Employee (
- {
- 'id': '123',
- 'job_category': 'Cook',
- 'salary': 2000,
- 'department_id': 'K55'
- }
-);
-
-INSERT INTO Incentive (
- { 'job_category': 'Cook',
- 'bonus': 1000
- }
-);
-
-INSERT INTO SuperStars (
- {
- 'id': '123'
- }
-);
-
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-2/gby-expr-2.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr/gby-expr.4.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-2/gby-expr-2.3.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr/gby-expr.4.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-3/gby-expr-3.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr/gby-expr.5.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr-3/gby-expr-3.3.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr/gby-expr.5.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr/gby-expr.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr/gby-expr.6.query.sqlpp
new file mode 100644
index 0000000..47e750d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/gby-expr/gby-expr.6.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+
+USE gby;
+
+/*
+ * Test that builtin function names are compared case-insensitive
+ * when replacing SELECT expression with GROUP BY expression
+ */
+
+FROM Employee e
+ JOIN Incentive i ON e.job_category = i.job_category
+ JOIN SuperStars s ON e.id = s.id
+GROUP BY substr(e.department_id, 0)
+SELECT SUBSTR(e.department_id, 0) as deptId, SUM(e.salary + i.bonus) AS star_cost;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.10.query.sqlpp
new file mode 100644
index 0000000..26a3c1f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.10.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+use test;
+
+select four, s1, s2
+from tenk
+group by rollup(four)
+let s1 = sum(two), s2 = sum(unique1)
+order by s1 desc, s2 desc;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.11.query.sqlpp
new file mode 100644
index 0000000..fe073cc
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.11.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+use test;
+
+select four, s1
+from tenk
+group by rollup(four)
+let s1 = sum(two), s2 = sum(unique1)
+order by s1 desc, s2 desc;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.12.query.sqlpp
new file mode 100644
index 0000000..abc2f29
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.12.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+use test;
+
+select four
+from tenk
+group by rollup(four)
+let s1 = sum(two), s2 = sum(unique1)
+order by s1 desc, s2 desc;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.13.query.sqlpp
new file mode 100644
index 0000000..faba3d2
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.13.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+use test;
+
+select value four
+from tenk
+group by rollup(four)
+let s1 = sum(two), s2 = sum(unique1)
+order by s1 desc, s2 desc;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.14.query.sqlpp
new file mode 100644
index 0000000..6539da30
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.14.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+use test;
+
+select distinct four, s1
+from tenk
+group by grouping sets((four), (four))
+let s1 = sum(two)
+order by s1 desc, four desc;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.15.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.15.query.sqlpp
new file mode 100644
index 0000000..fd90e93
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.15.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+use test;
+
+select distinct value s1
+from tenk
+group by grouping sets((four), (four))
+let s1 = sum(two)
+order by s1 desc;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.16.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.16.query.sqlpp
new file mode 100644
index 0000000..14bd768
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.16.query.sqlpp
@@ -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.
+ */
+
+use test;
+
+select four, sum(two) s
+from tenk
+group by rollup(four)
+order by four;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.17.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.17.query.sqlpp
new file mode 100644
index 0000000..e341ffd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.17.query.sqlpp
@@ -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.
+ */
+
+use test;
+
+select value to_string(if_null(four, "null")) || "," || to_string(sum(two))
+from tenk
+group by rollup(four)
+order by four;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.18.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.18.query.sqlpp
new file mode 100644
index 0000000..b95e1d5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.18.query.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+
+use test;
+
+select two, null as four, sum(unique1) s
+from tenk
+group by rollup(two)
+union all
+select null as two, four, sum(unique1) s
+from tenk
+group by rollup(four)
+
+order by s desc;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.4.query.sqlpp
index 6fcac65..ea7b81e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.4.query.sqlpp
@@ -23,6 +23,6 @@
use test;
select v2, v4, grouping(v2, v4) as grp, sum(ten) as agg_sum
- from tenk
- group by rollup(two as v2, four as v4)
- order by v2, v4;
+from tenk
+group by rollup(two as v2, four as v4)
+order by v2, v4;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.5.query.sqlpp
index 38a80f1..d894f88 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.5.query.sqlpp
@@ -24,6 +24,6 @@
use test;
select v2, v4, grouping(v2, v4) as grp, sum(ten) as agg_sum
- from tenk
- group by two as v2, rollup(two, four as v4)
- order by v2, v4;
+from tenk
+group by two as v2, rollup(two, four as v4)
+order by v2, v4;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.6.query.sqlpp
new file mode 100644
index 0000000..45e085b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.6.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+use test;
+
+select two, four, s
+from tenk
+group by rollup(two, four)
+let s = sum(unique1)
+order by s desc;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.7.query.sqlpp
new file mode 100644
index 0000000..cc0f2bd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.7.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+use test;
+
+select two, four
+from tenk
+group by rollup(two, four)
+let s = sum(unique1)
+order by s desc;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.8.query.sqlpp
new file mode 100644
index 0000000..d4ce070
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.8.query.sqlpp
@@ -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.
+ */
+
+use test;
+
+select value
+ to_string(if_null(two, "null")) || ',' || to_string(if_null(four, "null"))
+from tenk
+group by rollup(two, four)
+let s = sum(unique1)
+order by s desc;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.9.query.sqlpp
new file mode 100644
index 0000000..9565c39
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-2/grouping-sets-2.9.query.sqlpp
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+
+set `compiler.groupmemory` "4MB";
+set `compiler.sortmemory` "4MB";
+
+use test;
+
+with tenk_subset as (
+ select two, unique1
+ from tenk
+ where unique2 % 2000 = 0
+),
+
+tenk_sum as (
+ select *
+ from tenk_subset t
+ group by rollup(two) group as g
+ let s = sum(unique1)
+ order by s desc
+ limit 3
+)
+
+select s, two, gg
+from tenk_sum tt
+let gg = ( select gi.* from tt.g as gi order by gi.t.unique1 )
+order by s desc;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-3-negative/grouping-sets-3-negative.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-3-negative/grouping-sets-3-negative.9.query.sqlpp
new file mode 100644
index 0000000..7d05dee
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-3-negative/grouping-sets-3-negative.9.query.sqlpp
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+/*
+ * ORDER BY after GROUPING SETS with SELECT v.*
+ */
+
+with hundred as (
+ select r % 2 as two, r %3 as three, r % 4 as four,
+ r % 5 as five, r % 6 as six, r % 7 as seven,
+ t % 8 as eight, r % 9 as nine, r % 10 as ten
+ from range(1, 100) r
+)
+
+select v.*
+from hundred
+group by rollup(two, four)
+let v = { two, four },
+ s = sum(ten)
+order by s
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/intersection_with_nodegroup/intersection_with_nodegroup.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/intersection_with_nodegroup/intersection_with_nodegroup.1.ddl.sqlpp
index f337543..2051275 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/intersection_with_nodegroup/intersection_with_nodegroup.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/intersection_with_nodegroup/intersection_with_nodegroup.1.ddl.sqlpp
@@ -43,8 +43,9 @@
asterix_nc1;
create dataset TweetMessages(TweetMessageType)
-primary key tweetid on group_test
-hints(cardinality=100);
+primary key tweetid
+hints(cardinality=100)
+WITH {"node-group":{"name":"group_test"}};
create index twTimeIdx on TweetMessages(`send-time`) type btree;
create index twLocationIdx on TweetMessages(user.`sender-location`) type rtree;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-with-two-ngram-index/inverted-index-ngram-edit-distance-with-two-ngram-index.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-with-two-ngram-index/inverted-index-ngram-edit-distance-with-two-ngram-index.1.ddl.sqlpp
index fb4c9cb..508757a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-with-two-ngram-index/inverted-index-ngram-edit-distance-with-two-ngram-index.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-with-two-ngram-index/inverted-index-ngram-edit-distance-with-two-ngram-index.1.ddl.sqlpp
@@ -38,6 +38,6 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.1.ddl.sqlpp
index f25e779..1390c3a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.1.ddl.sqlpp
@@ -47,5 +47,5 @@
create nodegroup group1 if not exists on
asterix_nc1
;
-create dataset Customers(CustomerType) primary key cid on group1;
+create dataset Customers(CustomerType) primary key cid WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.1.ddl.sqlpp
index f25e779..1390c3a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.1.ddl.sqlpp
@@ -47,5 +47,5 @@
create nodegroup group1 if not exists on
asterix_nc1
;
-create dataset Customers(CustomerType) primary key cid on group1;
+create dataset Customers(CustomerType) primary key cid WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.1.ddl.sqlpp
index f25e779..1390c3a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.1.ddl.sqlpp
@@ -47,5 +47,5 @@
create nodegroup group1 if not exists on
asterix_nc1
;
-create dataset Customers(CustomerType) primary key cid on group1;
+create dataset Customers(CustomerType) primary key cid WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.1.ddl.sqlpp
index 97e4c49..c920201 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.1.ddl.sqlpp
@@ -47,5 +47,5 @@
create nodegroup group1 if not exists on
asterix_nc1
;
-create dataset Customers(CustomerType) primary key cid on group1;
+create dataset Customers(CustomerType) primary key cid WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/orders-index-custkey-open/orders-index-custkey-open.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/orders-index-custkey-open/orders-index-custkey-open.1.ddl.sqlpp
index 2d91636..825a391 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/orders-index-custkey-open/orders-index-custkey-open.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/orders-index-custkey-open/orders-index-custkey-open.1.ddl.sqlpp
@@ -40,5 +40,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset Orders(OrderType) primary key o_orderkey on group1;
+create dataset Orders(OrderType) primary key o_orderkey WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.1.ddl.sqlpp
new file mode 100644
index 0000000..7502f37
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.1.ddl.sqlpp
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+create type openType as {id: string};
+create dataset ds1(openType) primary key id;
+create dataset ds2(openType) primary key id;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.2.update.sqlpp
new file mode 100644
index 0000000..ec06976
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.2.update.sqlpp
@@ -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.
+ */
+
+insert into ds1 {"id": "1", "f": 3};
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.3.query.sqlpp
new file mode 100644
index 0000000..57ab8c1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.3.query.sqlpp
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+from ds1 left outer join ds2 on ds1.f = ds2.f
+select ds1, ds2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.4.query.sqlpp
new file mode 100644
index 0000000..d0b21b8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.4.query.sqlpp
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+from ds2 left outer join ds1 on ds2.f = ds1.f
+select ds1, ds2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.5.query.sqlpp
new file mode 100644
index 0000000..3dba765
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.5.query.sqlpp
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+from ds1 join ds2 on ds1.f = ds2.f
+select ds1, ds2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.6.query.sqlpp
new file mode 100644
index 0000000..851be3a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.6.query.sqlpp
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+from ds2 join ds1 on ds2.f = ds1.f
+select ds1, ds2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/list-star_01/list-star_01.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/list-star_01/list-star_01.1.ddl.sqlpp
new file mode 100644
index 0000000..ad018d3
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/list-star_01/list-star_01.1.ddl.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+drop dataverse TinySocial if exists;
+create dataverse TinySocial;
+
+use TinySocial;
+
+create type t1 AS {
+
+};
+
+create type t2 AS {
+id: int,
+compType: t1
+};
+
+create dataset d1(t2) primary key id;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/list-star_01/list-star_01.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/list-star_01/list-star_01.2.update.sqlpp
new file mode 100644
index 0000000..2c88183
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/list-star_01/list-star_01.2.update.sqlpp
@@ -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.
+ */
+
+use TinySocial;
+
+insert into d1([
+{"id":1, "compType":{"sth":33}},
+{"id":2, "compType":{"sth":44}, "followers":[{"a":"a_val1", "b": "b_val1"}, {"a":"a_val2", "b":"b_val2"}, {"a":"a_val3", "b":"b_val3"}]}
+]);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/list-star_01/list-star_01.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/list-star_01/list-star_01.3.query.sqlpp
new file mode 100644
index 0000000..f26c332
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/list-star_01/list-star_01.3.query.sqlpp
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+
+use TinySocial;
+
+{
+ "t1": [{"a":"a_val1", "b": "b_val1"}, {"a":"a_val2", "b":"b_val2"}, {"a":"a_val3", "b":"b_val3"}][*],
+ "t2": (select value v from d1 v)[*],
+ "t3": [{"b": "b_val1", "a":"a_val1"}, {"a":"a_val2", "b":"b_val2"}, {"a":"a_val3", "b":"b_val3"}][*],
+ "t4": [{"b": "b_val1", "a":"a_val1"}, {"b":"b_val2"}, {"a":"a_val3", "b":"b_val3"}][*],
+ "t5": [{"b": "b_val1", "a":"a_val1"}, {"a": null, "b":"b_val2"}, {"a":"a_val3", "b":"b_val3"}][*],
+ "t6": [{"b": "b_val1", "a":"a_val1"}, {"a": null, "b":"b_val2"}, {"a":"a_val3", "b":"b_val3", "c":"c_val3"}][*],
+ "t7": [{"b": "b_val1", "a":5}, {"a": 3.2, "b":"b_val2"}, {"a":"a_val3", "b":"b_val3", "c":"c_val3"}][*],
+ "t8": [{"b": "b_val1", "a":"a_val1"}, {}, {"a":"a_val3", "b":"b_val3"}][*],
+ "t9": [{"b": "b_val1", "a":"a_val1"}, 5, {"a":"a_val3", "b":"b_val3"}][*],
+ "t10": [{"b": "b_val1", "a":"a_val1"}, null, {"a":"a_val3", "b":"b_val3"}][*],
+ "t11": [{"b": "b_val1", "a":"a_val1"}, missing, {"a":"a_val3", "b":"b_val3"}][*],
+ "t12": [{"b": "b_val1", "a":"a_val1"}, 5, [3] ][*],
+ "t13": [{}, {}, {}][*],
+ "t14": [1, 2, 3][*],
+ "t15": [1][*],
+ "t16": [][*],
+ "t17": "non_array"[*],
+ "t18": missing[*],
+ "t19": null[*],
+ "t20": (select d.followers[*] from d1 d)
+};
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.2.query.sqlpp
new file mode 100644
index 0000000..83c3779
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.2.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+/*
+ * Description: testing constant folding of OR with one TRUE argument
+ */
+
+select value true or x<=2
+from range(1, 4) x
+order by x;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.3.query.sqlpp
new file mode 100644
index 0000000..85a77fe
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.3.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+/*
+ * Description: testing constant folding of OR with one TRUE argument
+ */
+
+explain select value true or x<=2
+from range(1, 4) x
+order by x;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.4.query.sqlpp
new file mode 100644
index 0000000..efb543f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.4.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+/*
+ * Description: testing constant folding of OR with one FALSE argument
+ */
+
+select value false or x<=2
+from range(1, 4) x
+order by x;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.5.query.sqlpp
new file mode 100644
index 0000000..4283fa6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.5.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+/*
+ * Description: testing constant folding of OR with one FALSE argument
+ */
+
+explain select value false or x<=2
+from range(1, 4) x
+order by x;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.6.query.sqlpp
new file mode 100644
index 0000000..b4b7c36
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.6.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+/*
+ * Description: No constant folding of OR with non TRUE/FALSE argument
+ */
+
+explain select value null or x<=2
+from range(1, 4) x
+order by x;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.7.query.sqlpp
new file mode 100644
index 0000000..517a996
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/misc/constant_folding/constant_folding.7.query.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+/*
+ * Description: No constant folding of OR with a non functional argument
+ */
+
+explain select value true or get_year(current_date()) < x
+from range(1, 4) x
+order by x;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/multipart-dataverse/special_chars_2/special_chars_2.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/multipart-dataverse/special_chars_2/special_chars_2.1.ddl.sqlpp
new file mode 100644
index 0000000..867c91b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/multipart-dataverse/special_chars_2/special_chars_2.1.ddl.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Description: special characters in multipart dataverse name
+ */
+
+drop dataverse A if exists;
+create dataverse A;
+
+drop dataverse B.C if exists;
+create dataverse B.C;
+
+drop dataverse `C.D.E` if exists;
+create dataverse `C.D.E`;
+
+drop dataverse `a-A`.`b_B`.`c$C`.`z.Z` if exists;
+create dataverse `a-A`.`b_B`.`c$C`.`z.Z`;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/multipart-dataverse/special_chars_2/special_chars_2.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/multipart-dataverse/special_chars_2/special_chars_2.2.query.sqlpp
new file mode 100644
index 0000000..4dc4e3b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/multipart-dataverse/special_chars_2/special_chars_2.2.query.sqlpp
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+
+select DataverseName as CanonicalName,
+ decode_dataverse_display_name(DataverseName) as DisplayName,
+ decode_dataverse_name(DataverseName) as NameParts
+from Metadata.`Dataverse`
+order by DataverseName;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp
index 710cb66..2109967 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp
@@ -41,7 +41,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPTypetmp) primary key id on group1;
+create dataset DBLPtmp(DBLPTypetmp) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp
index 31cbd0f..69c3d12 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp
@@ -41,7 +41,7 @@
nested : DBLPNestedType
};
-create dataset DBLPtmp(DBLPNestedType) primary key id on group1;
+create dataset DBLPtmp(DBLPNestedType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp
index 710cb66..2109967 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp
@@ -41,7 +41,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPTypetmp) primary key id on group1;
+create dataset DBLPtmp(DBLPTypetmp) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp
index d1ba662..9e3c7be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp
@@ -41,7 +41,7 @@
nested : DBLPNestedType
};
-create dataset DBLPtmp(DBLPNestedType) primary key id on group1;
+create dataset DBLPtmp(DBLPNestedType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp
index 710cb66..2109967 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp
@@ -41,7 +41,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPTypetmp) primary key id on group1;
+create dataset DBLPtmp(DBLPTypetmp) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp
index 710cb66..2109967 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp
@@ -41,7 +41,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPTypetmp) primary key id on group1;
+create dataset DBLPtmp(DBLPTypetmp) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.1.ddl.sqlpp
index 76506fd..4932563 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.1.ddl.sqlpp
@@ -52,7 +52,7 @@
create nodegroup group1 if not exists on
asterix_nc1
;
-create dataset Customerstmp(CustomerTypetmp) primary key cid on group1;
+create dataset Customerstmp(CustomerTypetmp) primary key cid WITH {"node-group":{"name":"group1"}};
-create dataset Customers(CustomerType) primary key nested.cid on group1;
+create dataset Customers(CustomerType) primary key nested.cid WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.1.ddl.sqlpp
index 76506fd..4932563 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.1.ddl.sqlpp
@@ -52,7 +52,7 @@
create nodegroup group1 if not exists on
asterix_nc1
;
-create dataset Customerstmp(CustomerTypetmp) primary key cid on group1;
+create dataset Customerstmp(CustomerTypetmp) primary key cid WITH {"node-group":{"name":"group1"}};
-create dataset Customers(CustomerType) primary key nested.cid on group1;
+create dataset Customers(CustomerType) primary key nested.cid WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.1.ddl.sqlpp
index 76506fd..4932563 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.1.ddl.sqlpp
@@ -52,7 +52,7 @@
create nodegroup group1 if not exists on
asterix_nc1
;
-create dataset Customerstmp(CustomerTypetmp) primary key cid on group1;
+create dataset Customerstmp(CustomerTypetmp) primary key cid WITH {"node-group":{"name":"group1"}};
-create dataset Customers(CustomerType) primary key nested.cid on group1;
+create dataset Customers(CustomerType) primary key nested.cid WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.1.ddl.sqlpp
index 38695e6..0949401 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.1.ddl.sqlpp
@@ -52,7 +52,7 @@
create nodegroup group1 if not exists on
asterix_nc1
;
-create dataset Customerstmp(CustomerTypetmp) primary key cid on group1;
+create dataset Customerstmp(CustomerTypetmp) primary key cid WITH {"node-group":{"name":"group1"}};
-create dataset Customers(CustomerType) primary key nested.cid on group1;
+create dataset Customers(CustomerType) primary key nested.cid WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp
index 710cb66..2109967 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp
@@ -41,7 +41,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPTypetmp) primary key id on group1;
+create dataset DBLPtmp(DBLPTypetmp) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp
index 710cb66..2109967 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp
@@ -41,7 +41,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPTypetmp) primary key id on group1;
+create dataset DBLPtmp(DBLPTypetmp) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp
index 04a8caa..ab18ffe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp
@@ -49,7 +49,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPTypetmp) primary key id on group1;
+create dataset DBLPtmp(DBLPTypetmp) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp
index fa5931a..0854f76 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp
@@ -49,7 +49,7 @@
nested : DBLPOpenType
};
-create dataset DBLPtmp(DBLPClosedType) primary key id on group1;
+create dataset DBLPtmp(DBLPClosedType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp
index db282da..56055de 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp
@@ -49,7 +49,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPTypetmp) primary key id on group1;
+create dataset DBLPtmp(DBLPTypetmp) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp
index fa5931a..0854f76 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp
@@ -49,7 +49,7 @@
nested : DBLPOpenType
};
-create dataset DBLPtmp(DBLPClosedType) primary key id on group1;
+create dataset DBLPtmp(DBLPClosedType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp
index db282da..56055de 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp
@@ -49,7 +49,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPTypetmp) primary key id on group1;
+create dataset DBLPtmp(DBLPTypetmp) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp
index 04a8caa..ab18ffe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp
@@ -49,7 +49,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPTypetmp) primary key id on group1;
+create dataset DBLPtmp(DBLPTypetmp) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp
index 04a8caa..ab18ffe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp
@@ -49,7 +49,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPTypetmp) primary key id on group1;
+create dataset DBLPtmp(DBLPTypetmp) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp
index 04a8caa..ab18ffe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/nested-open-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp
@@ -49,7 +49,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPTypetmp) primary key id on group1;
+create dataset DBLPtmp(DBLPTypetmp) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPType) primary key nested.id on group1;
+create dataset DBLP(DBLPType) primary key nested.id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp
index 199b34c..458b048 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.1.ddl.sqlpp
@@ -44,7 +44,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLPOpen(DBLPOpenType) primary key id on group1;
+create dataset DBLPOpen(DBLPOpenType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp
index c5af04a..95678af 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.1.ddl.sqlpp
@@ -44,7 +44,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPType) primary key id on group1;
+create dataset DBLPtmp(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPOpenType) primary key id on group1;
+create dataset DBLP(DBLPOpenType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp
index 412bd06..ae1176a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.1.ddl.sqlpp
@@ -44,7 +44,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLPOpen(DBLPOpenType) primary key id on group1;
+create dataset DBLPOpen(DBLPOpenType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp
index c5af04a..95678af 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.1.ddl.sqlpp
@@ -44,7 +44,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLPtmp(DBLPType) primary key id on group1;
+create dataset DBLPtmp(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLP(DBLPOpenType) primary key id on group1;
+create dataset DBLP(DBLPOpenType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp
index 412bd06..ae1176a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.1.ddl.sqlpp
@@ -44,7 +44,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLPOpen(DBLPOpenType) primary key id on group1;
+create dataset DBLPOpen(DBLPOpenType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp
index 199b34c..458b048 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.1.ddl.sqlpp
@@ -44,7 +44,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLPOpen(DBLPOpenType) primary key id on group1;
+create dataset DBLPOpen(DBLPOpenType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp
index 199b34c..458b048 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-word-contains/inverted-index-word-contains.1.ddl.sqlpp
@@ -44,7 +44,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLPOpen(DBLPOpenType) primary key id on group1;
+create dataset DBLPOpen(DBLPOpenType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp
index 199b34c..458b048 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.1.ddl.sqlpp
@@ -44,7 +44,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
-create dataset DBLPOpen(DBLPOpenType) primary key id on group1;
+create dataset DBLPOpen(DBLPOpenType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/multi-index/multi-index.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/multi-index/multi-index.1.ddl.sqlpp
index ebe24c2..1077f44 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/multi-index/multi-index.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-enforced/index-selection/multi-index/multi-index.1.ddl.sqlpp
@@ -38,6 +38,6 @@
create nodegroup group1 if not exists on asterix_nc1, asterix_nc2;
create dataset DBLP(DBLPType)
- primary key id on group1;
+ primary key id WITH {"node-group":{"name":"group1"}};
create dataset DBLPOpen(DBLPOpenType)
- primary key id on group1;
+ primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/fuzzyeq-edit-distance/fuzzyeq-edit-distance.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/fuzzyeq-edit-distance/fuzzyeq-edit-distance.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/fuzzyeq-edit-distance/fuzzyeq-edit-distance.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/fuzzyeq-edit-distance/fuzzyeq-edit-distance.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/fuzzyeq-similarity-jaccard/fuzzyeq-similarity-jaccard.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/fuzzyeq-similarity-jaccard/fuzzyeq-similarity-jaccard.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/fuzzyeq-similarity-jaccard/fuzzyeq-similarity-jaccard.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/fuzzyeq-similarity-jaccard/fuzzyeq-similarity-jaccard.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard-check_query/similarity-jaccard-check_query.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard-check_query/similarity-jaccard-check_query.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard-check_query/similarity-jaccard-check_query.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard-check_query/similarity-jaccard-check_query.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard-sorted-check_query/similarity-jaccard-sorted-check_query.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard-sorted-check_query/similarity-jaccard-sorted-check_query.1.ddl.sqlpp
index 8778274..144226c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard-sorted-check_query/similarity-jaccard-sorted-check_query.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard-sorted-check_query/similarity-jaccard-sorted-check_query.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard-sorted_query/similarity-jaccard-sorted_query.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard-sorted_query/similarity-jaccard-sorted_query.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard-sorted_query/similarity-jaccard-sorted_query.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard-sorted_query/similarity-jaccard-sorted_query.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard_query/similarity-jaccard_query.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard_query/similarity-jaccard_query.1.ddl.sqlpp
index 9bf6d4d..095d3dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard_query/similarity-jaccard_query.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/similarity/similarity-jaccard_query/similarity-jaccard_query.1.ddl.sqlpp
@@ -36,5 +36,5 @@
asterix_nc1,
asterix_nc2
;
-create dataset DBLP(DBLPType) primary key id on group1;
+create dataset DBLP(DBLPType) primary key id WITH {"node-group":{"name":"group1"}};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.1.ddl.sqlpp
index d9fb7ec..482d2a5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.1.ddl.sqlpp
@@ -36,7 +36,7 @@
asterix_nc1,
asterix_nc2
;
-create dataset TwitterData(Tweet) primary key id on group1;
+create dataset TwitterData(Tweet) primary key id WITH {"node-group":{"name":"group1"}};
create index rtree_index_point on TwitterData (loc) type rtree;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/statement-params/index_01/index_01.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/statement-params/index_01/index_01.1.ddl.sqlpp
new file mode 100644
index 0000000..7515b0b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/statement-params/index_01/index_01.1.ddl.sqlpp
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+/*
+ * Description: Test that BTree index is used in query plan
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+create type test.Emp as
+ closed {
+ id : bigint,
+ fname : string,
+ lname : string,
+ age : bigint,
+ dept : string
+};
+
+create dataset employee(Emp) primary key id;
+
+create index idx_employee_fname on employee (fname) type btree;
+
+create index idx_employee_lname on employee (lname) type btree;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/statement-params/index_01/index_01.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/statement-params/index_01/index_01.2.update.sqlpp
new file mode 100644
index 0000000..eef17c1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/statement-params/index_01/index_01.2.update.sqlpp
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+/*
+ * Description: Test that BTree index is used in query plan
+ */
+
+use test;
+
+load dataset employee using localfs ((`path`=`asterix_nc1://data/names.adm`),(`format`=`delimited-text`),(`delimiter`=`|`));
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/statement-params/index_01/index_01.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/statement-params/index_01/index_01.3.query.sqlpp
new file mode 100644
index 0000000..aae6b95
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/statement-params/index_01/index_01.3.query.sqlpp
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+/*
+ * Description: Test that BTree index is used in this query plan
+ */
+
+// requesttype=application/json
+
+// param $p_fname:json="Julio"
+// param $p_lname:json=null
+
+use test;
+
+select l.id, l.fname, l.lname, l.age
+from employee as l
+where
+ ($p_fname is null or l.fname = $p_fname )
+ and
+ ($p_lname is null or l.lname = $p_lname)
+order by l.id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/statement-params/index_01/index_01.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/statement-params/index_01/index_01.4.query.sqlpp
new file mode 100644
index 0000000..2b1c77c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/statement-params/index_01/index_01.4.query.sqlpp
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+/*
+ * Description: Test that BTree index is used in this query plan
+ */
+
+// requesttype=application/json
+
+// param $p_fname:json="Julio"
+// param $p_lname:json="Isa"
+
+use test;
+
+select l.id, l.fname, l.lname, l.age
+from employee as l
+where
+ ($p_fname is null or l.fname = $p_fname )
+ and
+ ($p_lname is null or l.lname = $p_lname)
+order by l.id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/length_multi_code_point_01/length_multi_code_point_01.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/length_multi_code_point_01/length_multi_code_point_01.1.query.sqlpp
new file mode 100644
index 0000000..082b827
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/length_multi_code_point_01/length_multi_code_point_01.1.query.sqlpp
@@ -0,0 +1,5 @@
+[
+ length("đŠđŠđ§đŚ"),
+ length("đŠđŠđ§đŚđ¨đł"),
+ length("áá
ĄáŤáá
łáŻ")
+];
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/position/offset0/pos0_multi_code_point/pos0_multi_code_point.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/position/offset0/pos0_multi_code_point/pos0_multi_code_point.1.query.sqlpp
new file mode 100644
index 0000000..e50ada6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/position/offset0/pos0_multi_code_point/pos0_multi_code_point.1.query.sqlpp
@@ -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.
+ */
+
+pos0("đŠđŠđ§đŚđ", "đ");
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/position/offset1/pos1_multi_code_point/pos1_multi_code_point.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/position/offset1/pos1_multi_code_point/pos1_multi_code_point.1.query.sqlpp
new file mode 100644
index 0000000..55af74b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/position/offset1/pos1_multi_code_point/pos1_multi_code_point.1.query.sqlpp
@@ -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.
+ */
+
+pos1("đŠđŠđ§đŚđ", "đ");
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/regexp_contains/regexp_contains/regexp_contains.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/regexp_contains/regexp_contains/regexp_contains.3.query.sqlpp
index da6968a..df96edc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/regexp_contains/regexp_contains/regexp_contains.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/regexp_contains/regexp_contains/regexp_contains.3.query.sqlpp
@@ -34,6 +34,7 @@
REGEXP_CONTAINS('FFFFFFFF','[\\p{XDigit}]'),
REGEXP_CONTAINS('abcdefgh','[\\p{javaLowerCase}]'),
REGEXP_CONTAINS('ABCDEF','[\\p{javaLowerCase}]'),
- REGEXP_CONTAINS(`codepoint-to-string`([163]),'[\\p{Sc}]')
+ REGEXP_CONTAINS(`codepoint-to-string`([163]),'[\\p{Sc}]'),
+ REGEXP_CONTAINS('đŠđŠđ§đŚ','đŠđŠđ§đŚ')
] as a
;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/reverse/reverse.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/reverse/reverse.1.query.sqlpp
index e127372..f450868 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/reverse/reverse.1.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/reverse/reverse.1.query.sqlpp
@@ -22,5 +22,6 @@
"t2": reverse(""),
"t3": reverse("abcd"),
"t4": string_to_codepoint(reverse("a\u00D7\u2103\u00F7\u2109b")),
- "t5": ( from ["ab", "abc", "abcd"] t select value reverse(t) order by t )
- }
\ No newline at end of file
+ "t5": ( from ["ab", "abc", "abcd"] t select value reverse(t) order by t ),
+ "t6": reverse("đ¨đł")
+ };
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/string_to_codepoint_multi_codepoints_01/string_to_codepoint_multi_codepoints_01.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/string_to_codepoint_multi_codepoints_01/string_to_codepoint_multi_codepoints_01.1.query.sqlpp
new file mode 100644
index 0000000..4261cda
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/string_to_codepoint_multi_codepoints_01/string_to_codepoint_multi_codepoints_01.1.query.sqlpp
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+[
+ string_to_codepoint("đŠđŠđ§đŚ"),
+ codepoint_to_string([ 128105, 8205, 128105, 8205, 128103, 8205, 128102 ])
+];
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/substring_multi_codepoint_01/substring_multi_codepoint_01.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/substring_multi_codepoint_01/substring_multi_codepoint_01.1.query.sqlpp
new file mode 100644
index 0000000..16e75a4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/substring_multi_codepoint_01/substring_multi_codepoint_01.1.query.sqlpp
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+
+{
+ '2 people in a 4-people family': SUBSTR("đ¨đ¨đŚđŚ", 2, 3),
+ 'Korean test 0': SUBSTR('áá
ĄáŤáá
łáŻ', 3,3),
+ 'Korean test 1': SUBSTR('áá
ĄáŤáá
łáŻ', 2,2)
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/trim/trim.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/trim/trim.1.query.sqlpp
index 61dc619..82326c4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/trim/trim.1.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/string/trim/trim.1.query.sqlpp
@@ -33,5 +33,9 @@
trim(null, null),
trim("abc", missing),
trim(missing, "abc"),
- trim(missing, missing)
+ trim(missing, missing),
+ trim("đşđ¸", "đş"),
+ trim("đ¨đŠđ§đŚ", "đ¨đŚ"),
+ ltrim("đ¨đŠđ§đŚ", "đ¨đŚ"),
+ rtrim("đ¨đŠđ§đŚ", "đ¨đŚ")
];
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/TemporalQueries.xml b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/TemporalQueries.xml
index 2df6acb..4ec2303 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/TemporalQueries.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/TemporalQueries.xml
@@ -155,8 +155,8 @@
</compilation-unit>
</test-case>
<test-case FilePath="temporal/interval_joins">
- <compilation-unit name="interval_overlapping">
- <output-dir compare="Text">interval_overlapping</output-dir>
+ <compilation-unit name="interval_after">
+ <output-dir compare="Text">interval_after</output-dir>
</compilation-unit>
</test-case>
<test-case FilePath="temporal/interval_joins">
@@ -165,11 +165,21 @@
</compilation-unit>
</test-case>
<test-case FilePath="temporal/interval_joins">
+ <compilation-unit name="interval_covered_by">
+ <output-dir compare="Text">interval_covered_by</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="temporal/interval_joins">
<compilation-unit name="interval_covers">
<output-dir compare="Text">interval_covers</output-dir>
</compilation-unit>
</test-case>
<test-case FilePath="temporal/interval_joins">
+ <compilation-unit name="interval_ended_by">
+ <output-dir compare="Text">interval_ended_by</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="temporal/interval_joins">
<compilation-unit name="interval_ends">
<output-dir compare="Text">interval_ends</output-dir>
</compilation-unit>
@@ -180,31 +190,6 @@
</compilation-unit>
</test-case>
<test-case FilePath="temporal/interval_joins">
- <compilation-unit name="interval_overlaps">
- <output-dir compare="Text">interval_overlaps</output-dir>
- </compilation-unit>
- </test-case>
- <test-case FilePath="temporal/interval_joins">
- <compilation-unit name="interval_starts">
- <output-dir compare="Text">interval_starts</output-dir>
- </compilation-unit>
- </test-case>
- <test-case FilePath="temporal/interval_joins">
- <compilation-unit name="interval_after">
- <output-dir compare="Text">interval_after</output-dir>
- </compilation-unit>
- </test-case>
- <test-case FilePath="temporal/interval_joins">
- <compilation-unit name="interval_covered_by">
- <output-dir compare="Text">interval_covered_by</output-dir>
- </compilation-unit>
- </test-case>
- <test-case FilePath="temporal/interval_joins">
- <compilation-unit name="interval_ended_by">
- <output-dir compare="Text">interval_ended_by</output-dir>
- </compilation-unit>
- </test-case>
- <test-case FilePath="temporal/interval_joins">
<compilation-unit name="interval_met_by">
<output-dir compare="Text">interval_met_by</output-dir>
</compilation-unit>
@@ -215,8 +200,58 @@
</compilation-unit>
</test-case>
<test-case FilePath="temporal/interval_joins">
+ <compilation-unit name="interval_overlapping">
+ <output-dir compare="Text">interval_overlapping</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="temporal/interval_joins">
+ <compilation-unit name="interval_overlaps">
+ <output-dir compare="Text">interval_overlaps</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="temporal/interval_joins">
<compilation-unit name="interval_started_by">
<output-dir compare="Text">interval_started_by</output-dir>
</compilation-unit>
</test-case>
+ <test-case FilePath="temporal/interval_joins">
+ <compilation-unit name="interval_starts">
+ <output-dir compare="Text">interval_starts</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="temporal/interval_joins_spilling">
+ <compilation-unit name="interval_after">
+ <output-dir compare="Text">interval_after</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="temporal/interval_joins_spilling">
+ <compilation-unit name="interval_before">
+ <output-dir compare="Text">interval_before</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="temporal/interval_joins_spilling">
+ <compilation-unit name="interval_covered_by">
+ <output-dir compare="Text">interval_covered_by</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="temporal/interval_joins_spilling">
+ <compilation-unit name="interval_covers">
+ <output-dir compare="Text">interval_covers</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="temporal/interval_joins_spilling">
+ <compilation-unit name="interval_overlapped_by">
+ <output-dir compare="Text">interval_overlapped_by</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="temporal/interval_joins_spilling">
+ <compilation-unit name="interval_overlapping">
+ <output-dir compare="Text">interval_overlapping</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="temporal/interval_joins_spilling">
+ <compilation-unit name="interval_overlaps">
+ <output-dir compare="Text">interval_overlaps</output-dir>
+ </compilation-unit>
+ </test-case>
</test-group>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
index fdef960..9ea732a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,10 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.10.query.sqlpp
new file mode 100644
index 0000000..3504834
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.10.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_after(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.11.query.sqlpp
new file mode 100644
index 0000000..45406b1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.11.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_after(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.12.query.sqlpp
new file mode 100644
index 0000000..3baabf1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.12.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_after(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.13.query.sqlpp
new file mode 100644
index 0000000..6b91ac9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.13.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_after(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.14.query.sqlpp
new file mode 100644
index 0000000..c5f2280
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.14.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_after(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
index a303827..6668205 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 9th January 2019
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_after(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.4.query.sqlpp
index fa439c1..31ba5aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-after`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_after(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
index 39e3372..c9308fd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_after(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.6.query.sqlpp
index eb2797b..48118d4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-after`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_after(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.7.query.sqlpp
new file mode 100644
index 0000000..a013ac9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.7.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_after(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.8.query.sqlpp
new file mode 100644
index 0000000..690e5b5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.8.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_after(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.9.query.sqlpp
new file mode 100644
index 0000000..c57cfc7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_after/interval_after.9.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_after(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.1.ddl.sqlpp
index fdef960..ae840c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,9 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.10.query.sqlpp
new file mode 100644
index 0000000..9e22e04
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.10.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_before(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.11.query.sqlpp
new file mode 100644
index 0000000..b93f969
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.11.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_before(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.12.query.sqlpp
new file mode 100644
index 0000000..6ffb1cb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.12.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_before(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.13.query.sqlpp
new file mode 100644
index 0000000..295f895
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.13.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_before(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.14.query.sqlpp
new file mode 100644
index 0000000..6d0e028
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.14.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_before(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
index 4644367..faf9e7e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_before(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.4.query.sqlpp
index 8db7596..6c1f734 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-before`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_before(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.5.query.sqlpp
index 3769ff3..c7e34d8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-before`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_before(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.6.query.sqlpp
index 70ab1ea..27185d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-before`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_before(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.7.query.sqlpp
new file mode 100644
index 0000000..c184704
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.7.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_before(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.8.query.sqlpp
new file mode 100644
index 0000000..7425bce
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.8.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_before(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.9.query.sqlpp
new file mode 100644
index 0000000..5089141
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_before/interval_before.9.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_before(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.1.ddl.sqlpp
index fdef960..ae840c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,9 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.10.query.sqlpp
new file mode 100644
index 0000000..d71029a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.10.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covered_by(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.11.query.sqlpp
new file mode 100644
index 0000000..e635228
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.11.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covered_by(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.12.query.sqlpp
new file mode 100644
index 0000000..25d22d5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.12.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covered_by(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.13.query.sqlpp
new file mode 100644
index 0000000..1f287ef
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.13.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covered_by(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.14.query.sqlpp
new file mode 100644
index 0000000..881f62e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.14.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covered_by(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp
index cdd6744..3458df9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-covered-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covered_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.4.query.sqlpp
index 2209a6a..2deb6e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-covered-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covered_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.5.query.sqlpp
index 69ac8d5..fa931af 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-covered-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covered_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.6.query.sqlpp
index 467200a..0010b26 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-covered-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covered_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.7.query.sqlpp
new file mode 100644
index 0000000..5bf5d4a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.7.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covered_by(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.8.query.sqlpp
new file mode 100644
index 0000000..83f7beb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.8.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covered_by(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.9.query.sqlpp
new file mode 100644
index 0000000..46ba991
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covered_by/interval_covered_by.9.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covered_by(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.1.ddl.sqlpp
index fdef960..ae840c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,9 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.10.query.sqlpp
new file mode 100644
index 0000000..16f53dd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.10.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covers(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.11.query.sqlpp
new file mode 100644
index 0000000..94db651
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.11.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covers(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.12.query.sqlpp
new file mode 100644
index 0000000..fbc64ab
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.12.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covers(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.13.query.sqlpp
new file mode 100644
index 0000000..bdd439e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.13.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covers(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.14.query.sqlpp
new file mode 100644
index 0000000..dddf7bd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.14.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_covers(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp
index 2816cfb..bc2e0b5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-covers`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covers(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.4.query.sqlpp
index 0241040..c22cc60 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-covers`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covers(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.5.query.sqlpp
index 8e600d0..9a2c572 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-covers`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covers(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.6.query.sqlpp
index d4a3760..89d9ada 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-covers`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_covers(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.7.query.sqlpp
new file mode 100644
index 0000000..ba156f1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.7.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covers(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.8.query.sqlpp
new file mode 100644
index 0000000..051620d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.8.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covers(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.9.query.sqlpp
new file mode 100644
index 0000000..dbd1fba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_covers/interval_covers.9.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_covers(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.1.ddl.sqlpp
index fdef960..07166ca 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.1.ddl.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +31,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +42,9 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.10.query.sqlpp
new file mode 100644
index 0000000..390daaa
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.10.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ended_by(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.11.query.sqlpp
new file mode 100644
index 0000000..2986aa9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.11.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ended_by(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.12.query.sqlpp
new file mode 100644
index 0000000..0520104
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.12.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ended_by(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.13.query.sqlpp
new file mode 100644
index 0000000..62f72b6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.13.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ended_by(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.14.query.sqlpp
new file mode 100644
index 0000000..09ff8b4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.14.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ended_by(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.2.update.sqlpp
index 4334476..49648a4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.2.update.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp
index 96b63c5..5d410ae 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.3.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-ended-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ended_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.4.query.sqlpp
index 74929b2..ef30f3e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.4.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-ended-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ended_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.5.query.sqlpp
index 08f33a5..f4aae13 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.5.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-ended-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ended_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.6.query.sqlpp
index bb4e8b2..bd4dc8d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.6.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-ended-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ended_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.7.query.sqlpp
new file mode 100644
index 0000000..5d0e86d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.7.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ended_by(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.8.query.sqlpp
new file mode 100644
index 0000000..053535b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.8.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ended_by(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.9.query.sqlpp
new file mode 100644
index 0000000..c7d21f2
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ended_by/interval_ended_by.9.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ended_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ended_by(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.1.ddl.sqlpp
index fdef960..e3c2e76 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.1.ddl.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +31,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +42,9 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.10.query.sqlpp
new file mode 100644
index 0000000..80f1641
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.10.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ends(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.11.query.sqlpp
new file mode 100644
index 0000000..a12b527
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.11.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ends(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.12.query.sqlpp
new file mode 100644
index 0000000..fd758e0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.12.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ends(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.13.query.sqlpp
new file mode 100644
index 0000000..0f8a057
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.13.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ends(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.14.query.sqlpp
new file mode 100644
index 0000000..010c04e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.14.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_ends(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.2.update.sqlpp
index 4334476..881d227 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.2.update.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp
index 50ae865..42e9380 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.3.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-ends`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ends(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.4.query.sqlpp
index 86d9ff4..7ad2449 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.4.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-ends`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ends(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.5.query.sqlpp
index cf316a3..6751fc1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.5.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-ends`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ends(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.6.query.sqlpp
index c9faeda..61856be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.6.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-ends`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_ends(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.7.query.sqlpp
new file mode 100644
index 0000000..7b05616
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.7.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ends(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.8.query.sqlpp
new file mode 100644
index 0000000..a0d6a58
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.8.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ends(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.9.query.sqlpp
new file mode 100644
index 0000000..e1b5aa0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_ends/interval_ends.9.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval ends because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_ends(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.1.ddl.sqlpp
index fdef960..107e651 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.1.ddl.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +31,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +42,9 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.10.query.sqlpp
new file mode 100644
index 0000000..2998ed3
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.10.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_meets(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.11.query.sqlpp
new file mode 100644
index 0000000..31d89ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.11.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_meets(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.12.query.sqlpp
new file mode 100644
index 0000000..b79583f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.12.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_meets(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.13.query.sqlpp
new file mode 100644
index 0000000..1f1083b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.13.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_meets(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.14.query.sqlpp
new file mode 100644
index 0000000..8d8ad81
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.14.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_meets(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.2.update.sqlpp
index 4334476..95937ec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.2.update.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp
index 244cd62..80dd09c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.3.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-meets`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_meets(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.4.query.sqlpp
index ac9dd33..24dc50f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.4.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-meets`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_meets(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.5.query.sqlpp
index 8fd6a60..5c068942 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.5.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-meets`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_meets(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.6.query.sqlpp
index 34c9a12..f438e6a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.6.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-meets`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_meets(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.7.query.sqlpp
new file mode 100644
index 0000000..b2723f0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.7.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_meets(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.8.query.sqlpp
new file mode 100644
index 0000000..6a99fbe
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.8.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_meets(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.9.query.sqlpp
new file mode 100644
index 0000000..53f6a41
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_meets/interval_meets.9.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval meets because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_meets(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.1.ddl.sqlpp
index fdef960..2d76f34 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.1.ddl.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +31,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +42,9 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.10.query.sqlpp
new file mode 100644
index 0000000..9b0113a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.10.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_met_by(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.11.query.sqlpp
new file mode 100644
index 0000000..d2aa20b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.11.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_met_by(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.12.query.sqlpp
new file mode 100644
index 0000000..c8156dc
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.12.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_met_by(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.13.query.sqlpp
new file mode 100644
index 0000000..2d18ea3
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.13.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_met_by(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.14.query.sqlpp
new file mode 100644
index 0000000..7105983
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.14.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_met_by(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.2.update.sqlpp
index 4334476..c260fec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.2.update.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp
index f1f39a9..0aaf497 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.3.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-met-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_met_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.4.query.sqlpp
index fa2e9ed..57aa56f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.4.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-met-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_met_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.5.query.sqlpp
index 2755407..1bff1e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.5.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-met-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_met_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.6.query.sqlpp
index 319cb32..a601324 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.6.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-met-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_met_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.7.query.sqlpp
new file mode 100644
index 0000000..fdf140c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.7.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_met_by(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.8.query.sqlpp
new file mode 100644
index 0000000..9929fe8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.8.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_met_by(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.9.query.sqlpp
new file mode 100644
index 0000000..5a0a9da
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_met_by/interval_met_by.9.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval met_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_met_by(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.1.ddl.sqlpp
index fdef960..ae840c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,9 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.10.query.sqlpp
new file mode 100644
index 0000000..75bd6de
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.10.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapped_by(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.11.query.sqlpp
new file mode 100644
index 0000000..0d78bf9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.11.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapped_by(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.12.query.sqlpp
new file mode 100644
index 0000000..4b0761b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.12.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapped_by(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.13.query.sqlpp
new file mode 100644
index 0000000..e8bfd5c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.13.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapped_by(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.14.query.sqlpp
new file mode 100644
index 0000000..6e95625
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.14.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapped_by(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
index 2fc8575..9033c40 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlapped-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapped_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.query.sqlpp
index 1f80cd0..5389119 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlapped-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapped_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.5.query.sqlpp
index e32af46..1ff426f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-overlapped-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapped_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.query.sqlpp
index c8b77f3..422ce76 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-overlapped-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapped_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.7.query.sqlpp
new file mode 100644
index 0000000..89f8a60
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.7.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapped_by(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.8.query.sqlpp
new file mode 100644
index 0000000..02845b5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.8.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapped_by(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.9.query.sqlpp
new file mode 100644
index 0000000..08d2c04
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.9.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapped_by(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.1.ddl.sqlpp
index fdef960..ae840c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,9 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.10.query.sqlpp
new file mode 100644
index 0000000..e1ce7ce
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.10.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapping(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.11.query.sqlpp
new file mode 100644
index 0000000..e30bf20
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.11.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapping(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.12.query.sqlpp
new file mode 100644
index 0000000..a994ebf
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.12.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapping(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.13.query.sqlpp
new file mode 100644
index 0000000..0e30efb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.13.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapping(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.14.query.sqlpp
new file mode 100644
index 0000000..bcd2606
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.14.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlapping(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp
index 91589f2..ddcae39 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlapping`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapping(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.4.query.sqlpp
index 12b5daf..e7f62d4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlapping`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapping(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.5.query.sqlpp
index b0f4423..eaba9a5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-overlapping`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapping(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.6.query.sqlpp
index 94a690e..5e601e0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-overlapping`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlapping(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.7.query.sqlpp
new file mode 100644
index 0000000..ba64ef0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.7.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapping(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.8.query.sqlpp
new file mode 100644
index 0000000..3656661
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.8.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapping(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.9.query.sqlpp
new file mode 100644
index 0000000..84b6252
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlapping/interval_overlapping.9.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlapping(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.1.ddl.sqlpp
index fdef960..ae840c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.1.ddl.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +29,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +40,9 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.10.query.sqlpp
new file mode 100644
index 0000000..bd7fc86
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.10.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlaps(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.11.query.sqlpp
new file mode 100644
index 0000000..dc51559
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.11.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlaps(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.12.query.sqlpp
new file mode 100644
index 0000000..50e1fbb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.12.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlaps(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.13.query.sqlpp
new file mode 100644
index 0000000..bd750f4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.13.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlaps(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.14.query.sqlpp
new file mode 100644
index 0000000..91f42a1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.14.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_overlaps(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.2.update.sqlpp
index 4334476..b7cd541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.2.update.sqlpp
@@ -19,7 +19,7 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp
index 579eda5..717f7e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.3.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlaps`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlaps(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.4.query.sqlpp
index 1327d67..bdb8ec4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.4.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-overlaps`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlaps(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.5.query.sqlpp
index ac40622..f5bbac4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.5.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-overlaps`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlaps(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.6.query.sqlpp
index 65f43c5..03d8da5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.6.query.sqlpp
@@ -19,12 +19,14 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-overlaps`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_overlaps(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.7.query.sqlpp
new file mode 100644
index 0000000..c4ff119
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.7.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlaps(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.8.query.sqlpp
new file mode 100644
index 0000000..8e4eca8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.8.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlaps(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.9.query.sqlpp
new file mode 100644
index 0000000..4de8f1c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_overlaps/interval_overlaps.9.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_overlaps(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.1.ddl.sqlpp
index fdef960..5fcd96e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.1.ddl.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +31,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +42,9 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.10.query.sqlpp
new file mode 100644
index 0000000..319efac
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.10.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_started_by(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.11.query.sqlpp
new file mode 100644
index 0000000..d39164d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.11.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_started_by(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.12.query.sqlpp
new file mode 100644
index 0000000..70efc7b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.12.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_started_by(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.13.query.sqlpp
new file mode 100644
index 0000000..c6b20ed
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.13.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_started_by(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.14.query.sqlpp
new file mode 100644
index 0000000..76dd651
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.14.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_started_by(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.2.update.sqlpp
index 4334476..5fbdf7d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.2.update.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp
index ca93d0e..f3f805d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.3.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-started-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_started_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.4.query.sqlpp
index 5c5ae25..af5b059 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.4.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-started-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_started_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.5.query.sqlpp
index 91436cc..e414153 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.5.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-started-by`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_started_by(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.6.query.sqlpp
index d3ea093..3867b87 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.6.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-started-by`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_started_by(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.7.query.sqlpp
new file mode 100644
index 0000000..2b3a26f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.7.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_started_by(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.8.query.sqlpp
new file mode 100644
index 0000000..b4de8e8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.8.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_started_by(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.9.query.sqlpp
new file mode 100644
index 0000000..ab02067
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_started_by/interval_started_by.9.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval started_by because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_started_by(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.1.ddl.sqlpp
index fdef960..3326abb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.1.ddl.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
drop dataverse TinyCollege if exists;
@@ -29,7 +31,9 @@
create type StaffType as open {
name: string,
office: string,
- employment: interval
+ employment: interval,
+ vacation: interval,
+ office_hours: interval
};
create dataset Staff(StaffType)
primary key name;
@@ -38,7 +42,9 @@
create type StudentType as open {
name: string,
office: string,
- attendance: interval
+ attendance: interval,
+ break: interval,
+ work_hours: interval
};
create dataset Students(StudentType)
primary key name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.10.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.10.query.sqlpp
new file mode 100644
index 0000000..71a89a8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.10.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_starts(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.11.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.11.query.sqlpp
new file mode 100644
index 0000000..4e567c2
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.11.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_starts(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.12.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.12.query.sqlpp
new file mode 100644
index 0000000..cd7cf4a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.12.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_starts(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.13.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.13.query.sqlpp
new file mode 100644
index 0000000..8146936
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.13.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_starts(f.office_hours, d.work_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.14.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.14.query.sqlpp
new file mode 100644
index 0000000..1fea371
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.14.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [time("03:30:00.0+00:00"), time("05:59:00.0+00:00"), time("08:30:00.0+00:00")] */
+interval_starts(d.work_hours, f.office_hours)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.2.update.sqlpp
index 4334476..552dbc7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.2.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.2.update.sqlpp
@@ -19,7 +19,9 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp
index 915a717..51788b7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.3.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-starts`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_starts(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.4.query.sqlpp
index 2e8b27e..cf9d660 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.4.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Staff as f, Students as d
-where `interval-starts`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_starts(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.5.query.sqlpp
index f5aa575..fe13a01 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.5.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.5.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-starts`(f.employment, d.attendance)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_starts(f.employment, d.attendance)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.6.query.sqlpp
index 146ecd1..4621f50 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.6.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.6.query.sqlpp
@@ -19,12 +19,16 @@
/*
* Description : Check temporal join functionality for interval
* Expected Result : Success
- * Date : 26th Jun, 2015
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
*/
use TinyCollege;
select element { "staff" : f.name, "student" : d.name }
from Students as d, Staff as f
-where `interval-starts`(d.attendance, f.employment)
+where
+/*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+interval_starts(d.attendance, f.employment)
order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.7.query.sqlpp
new file mode 100644
index 0000000..49490f0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.7.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_starts(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.8.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.8.query.sqlpp
new file mode 100644
index 0000000..5430332
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.8.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Staff as f, Students as d
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_starts(d.break, f.vacation)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.9.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.9.query.sqlpp
new file mode 100644
index 0000000..e97dafa
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins/interval_starts/interval_starts.9.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ * Note : Range hint is not picked for interval starts because it is not implemented
+ * : It will default to Hybrid Has Join.
+ */
+
+use TinyCollege;
+
+select element { "staff" : f.name, "student" : d.name }
+from Students as d, Staff as f
+where
+/*+ range [datetime("2003-06-30T00:00:00.0"), datetime("2005-12-31T00:00:00.0"), datetime("2008-06-30T00:00:00.0")] */
+interval_starts(f.vacation, d.break)
+order by f.name, d.name;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_after/interval_after.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_after/interval_after.1.ddl.sqlpp
new file mode 100644
index 0000000..7ae3a6c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_after/interval_after.1.ddl.sqlpp
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join functionality for interval
+ * Expected Result : Success
+ * Date : 10th Aug, 2020
+ */
+
+drop dataverse IntervalTest if exists;
+create dataverse IntervalTest;
+use IntervalTest;
+
+create type IntervalType as open {
+id: int64,
+interval: interval,
+filler: string
+};
+
+create dataset DataSet1(IntervalType) primary key id;
+create dataset DataSet2(IntervalType) primary key id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_after/interval_after.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_after/interval_after.2.update.sqlpp
new file mode 100644
index 0000000..3b79eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_after/interval_after.2.update.sqlpp
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval after
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+insert into DataSet1
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 2,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
+
+insert into DataSet2
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 2,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_after/interval_after.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_after/interval_after.3.query.sqlpp
new file mode 100644
index 0000000..4bd3a38
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_after/interval_after.3.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval after
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+select count(*)
+from (select element { "id1" : ds1.id, "id2" : ds2.id, "spill" : length(ds1.filler || ds2.filler)}
+ from DataSet1 as ds1, DataSet2 as ds2
+ where
+ /*+ range [datetime("1970-01-01T00:00:05.000Z"), datetime("1970-01-01T00:00:10.000Z"), datetime("1970-01-01T00:00:15.000Z")] */
+ interval_after(ds1.interval, ds2.interval)) as results0
+where results0.id1 > 1 or results0.filler = 1;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_before/interval_before.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_before/interval_before.1.ddl.sqlpp
new file mode 100644
index 0000000..928f3b1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_before/interval_before.1.ddl.sqlpp
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval before
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+drop dataverse IntervalTest if exists;
+create dataverse IntervalTest;
+use IntervalTest;
+
+create type IntervalType as open {
+id: int64,
+interval: interval,
+filler: string
+};
+
+create dataset DataSet1(IntervalType) primary key id;
+create dataset DataSet2(IntervalType) primary key id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_before/interval_before.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_before/interval_before.2.update.sqlpp
new file mode 100644
index 0000000..68fc545
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_before/interval_before.2.update.sqlpp
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval before
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+insert into DataSet1
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 2,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
+
+insert into DataSet2
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 2,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_before/interval_before.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_before/interval_before.3.query.sqlpp
new file mode 100644
index 0000000..b363137
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_before/interval_before.3.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval before
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+select count(*)
+from (select element { "id1" : ds1.id, "id2" : ds2.id, "spill" : length(ds1.filler || ds2.filler)}
+ from DataSet1 as ds1, DataSet2 as ds2
+ where
+ /*+ range [datetime("1970-01-01T00:00:05.000Z"), datetime("1970-01-01T00:00:10.000Z"), datetime("1970-01-01T00:00:15.000Z")] */
+ interval_before(ds1.interval, ds2.interval)) as results0
+where results0.id1 > 1 or results0.filler = 1;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covered_by/interval_covered_by.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covered_by/interval_covered_by.1.ddl.sqlpp
new file mode 100644
index 0000000..6e0fb3d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covered_by/interval_covered_by.1.ddl.sqlpp
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval covered_by
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+drop dataverse IntervalTest if exists;
+create dataverse IntervalTest;
+use IntervalTest;
+
+create type IntervalType as open {
+id: int64,
+interval: interval,
+filler: string
+};
+
+create dataset DataSet1(IntervalType) primary key id;
+create dataset DataSet2(IntervalType) primary key id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covered_by/interval_covered_by.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covered_by/interval_covered_by.2.update.sqlpp
new file mode 100644
index 0000000..750e5e0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covered_by/interval_covered_by.2.update.sqlpp
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval covered_by
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+insert into DataSet1
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 2,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
+
+insert into DataSet2
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 20,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covered_by/interval_covered_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covered_by/interval_covered_by.3.query.sqlpp
new file mode 100644
index 0000000..66d2747
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covered_by/interval_covered_by.3.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval covered_by
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+select count(*)
+from (select element { "id1" : ds1.id, "id2" : ds2.id, "spill" : length(ds1.filler || ds2.filler)}
+ from DataSet1 as ds1, DataSet2 as ds2
+ where
+ /*+ range [datetime("1970-01-01T00:00:05.000Z"), datetime("1970-01-01T00:00:10.000Z"), datetime("1970-01-01T00:00:15.000Z")] */
+ interval_covered_by(ds1.interval, ds2.interval)) as results0
+where results0.id1 > 1 or results0.filler = 1;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covers/interval_covers.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covers/interval_covers.1.ddl.sqlpp
new file mode 100644
index 0000000..1561f8a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covers/interval_covers.1.ddl.sqlpp
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval covers
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+drop dataverse IntervalTest if exists;
+create dataverse IntervalTest;
+use IntervalTest;
+
+create type IntervalType as open {
+id: int64,
+interval: interval,
+filler: string
+};
+
+create dataset DataSet1(IntervalType) primary key id;
+create dataset DataSet2(IntervalType) primary key id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covers/interval_covers.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covers/interval_covers.2.update.sqlpp
new file mode 100644
index 0000000..2ac8eda
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covers/interval_covers.2.update.sqlpp
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval covers
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+insert into DataSet1
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 20,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
+
+insert into DataSet2
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 2,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covers/interval_covers.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covers/interval_covers.3.query.sqlpp
new file mode 100644
index 0000000..a7bbc96
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_covers/interval_covers.3.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval covers
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+select count(*)
+from (select element { "id1" : ds1.id, "id2" : ds2.id, "spill" : length(ds1.filler || ds2.filler)}
+ from DataSet1 as ds1, DataSet2 as ds2
+ where
+ /*+ range [datetime("1970-01-01T00:00:05.000Z"), datetime("1970-01-01T00:00:10.000Z"), datetime("1970-01-01T00:00:15.000Z")] */
+ interval_covers(ds1.interval, ds2.interval)) as results0
+where results0.id1 > 1 or results0.filler = 1;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapped_by/interval_overlapped_by.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapped_by/interval_overlapped_by.1.ddl.sqlpp
new file mode 100644
index 0000000..67561d6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapped_by/interval_overlapped_by.1.ddl.sqlpp
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval overlapped_by
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+drop dataverse IntervalTest if exists;
+create dataverse IntervalTest;
+use IntervalTest;
+
+create type IntervalType as open {
+id: int64,
+interval: interval,
+filler: string
+};
+
+create dataset DataSet1(IntervalType) primary key id;
+create dataset DataSet2(IntervalType) primary key id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapped_by/interval_overlapped_by.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapped_by/interval_overlapped_by.2.update.sqlpp
new file mode 100644
index 0000000..a4f25c3
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapped_by/interval_overlapped_by.2.update.sqlpp
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval overlapped_by
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+insert into DataSet1
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 20,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
+
+insert into DataSet2
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 20,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
new file mode 100644
index 0000000..93c810a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapped_by/interval_overlapped_by.3.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval overlapped_by
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+select count(*)
+from (select element { "id1" : ds1.id, "id2" : ds2.id, "spill" : length(ds1.filler || ds2.filler)}
+ from DataSet1 as ds1, DataSet2 as ds2
+ where
+ /*+ range [datetime("1970-01-01T00:00:05.000Z"), datetime("1970-01-01T00:00:10.000Z"), datetime("1970-01-01T00:00:15.000Z")] */
+ interval_overlapped_by(ds1.interval, ds2.interval)) as results0
+where results0.id1 > 1 or results0.filler = 1;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapping/interval_overlapping.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapping/interval_overlapping.1.ddl.sqlpp
new file mode 100644
index 0000000..e55fad7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapping/interval_overlapping.1.ddl.sqlpp
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval overlapping
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+drop dataverse IntervalTest if exists;
+create dataverse IntervalTest;
+use IntervalTest;
+
+create type IntervalType as open {
+id: int64,
+interval: interval,
+filler: string
+};
+
+create dataset DataSet1(IntervalType) primary key id;
+create dataset DataSet2(IntervalType) primary key id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapping/interval_overlapping.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapping/interval_overlapping.2.update.sqlpp
new file mode 100644
index 0000000..b0c6139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapping/interval_overlapping.2.update.sqlpp
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval overlapping
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+insert into DataSet1
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 10,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
+
+insert into DataSet2
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 10,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapping/interval_overlapping.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapping/interval_overlapping.3.query.sqlpp
new file mode 100644
index 0000000..243b4ec
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlapping/interval_overlapping.3.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval overlapping
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+select count(*)
+from (select element { "id1" : ds1.id, "id2" : ds2.id, "spill" : length(ds1.filler || ds2.filler)}
+ from DataSet1 as ds1, DataSet2 as ds2
+ where
+ /*+ range [datetime("1970-01-01T00:00:05.000Z"), datetime("1970-01-01T00:00:10.000Z"), datetime("1970-01-01T00:00:15.000Z")] */
+ interval_overlapping(ds1.interval, ds2.interval)) as results0
+where results0.id1 > 1 or results0.filler = 1;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlaps/interval_overlaps.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlaps/interval_overlaps.1.ddl.sqlpp
new file mode 100644
index 0000000..ab7c0cd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlaps/interval_overlaps.1.ddl.sqlpp
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval overlaps
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+drop dataverse IntervalTest if exists;
+create dataverse IntervalTest;
+use IntervalTest;
+
+create type IntervalType as open {
+id: int64,
+interval: interval,
+filler: string
+};
+
+create dataset DataSet1(IntervalType) primary key id;
+create dataset DataSet2(IntervalType) primary key id;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlaps/interval_overlaps.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlaps/interval_overlaps.2.update.sqlpp
new file mode 100644
index 0000000..de06fde
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlaps/interval_overlaps.2.update.sqlpp
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval overlaps
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+use IntervalTest;
+
+insert into DataSet1
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 20,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
+
+insert into DataSet2
+from range(1, 100) s at srow,
+ range(1, 1) l at lrow
+let filler = repeat("i", 10000),
+ lambda = 1, d = 20,
+ id = (srow-1) * lambda + lrow
+select value {
+"id": id,
+"interval": interval(datetime_from_unix_time_in_secs(s), datetime_from_unix_time_in_secs(s + d)),
+"filler": filler
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlaps/interval_overlaps.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlaps/interval_overlaps.3.query.sqlpp
new file mode 100644
index 0000000..becc9e7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/interval_joins_spilling/interval_overlaps/interval_overlaps.3.query.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Check temporal join spilling functionality for interval overlaps
+ * Expected Result : Success
+ * Date : 13th Aug, 2020
+ */
+
+use IntervalTest;
+
+select count(*)
+from (select element { "id1" : ds1.id, "id2" : ds2.id, "spill" : length(ds1.filler || ds2.filler)}
+ from DataSet1 as ds1, DataSet2 as ds2
+ where
+ /*+ range [datetime("1970-01-01T00:00:05.000Z"), datetime("1970-01-01T00:00:10.000Z"), datetime("1970-01-01T00:00:15.000Z")] */
+ interval_overlaps(ds1.interval, ds2.interval)) as results0
+where results0.id1 > 1 or results0.filler = 1;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q04_order_priority_with_nodegroup/q04_order_priority_with_nodegroup.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q04_order_priority_with_nodegroup/q04_order_priority_with_nodegroup.1.ddl.sqlpp
index 5fbc67b..26a7e56 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q04_order_priority_with_nodegroup/q04_order_priority_with_nodegroup.1.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/tpch-with-index/q04_order_priority_with_nodegroup/q04_order_priority_with_nodegroup.1.ddl.sqlpp
@@ -121,9 +121,9 @@
asterix_nc1;
create dataset LineItem(LineItemType)
- primary key l_orderkey, l_linenumber on group_test;
+ primary key l_orderkey, l_linenumber WITH {"node-group":{"name":"group_test"}};
create dataset Orders(OrderType)
- primary key o_orderkey on group_test;
+ primary key o_orderkey WITH {"node-group":{"name":"group_test"}};
create index lineitem_shipdateIx on LineItem (l_shipdate);
create index lineitem_receiptdateIx on LineItem (l_receiptdate);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/types/default/default.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/types/default/default.3.ddl.sqlpp
index a0bc671..82bcc32 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/types/default/default.3.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/types/default/default.3.ddl.sqlpp
@@ -17,4 +17,4 @@
* under the License.
*/
-DROP function foo@0;
+DROP function foo();
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.1.ddl.sqlpp
new file mode 100644
index 0000000..1d7a8ae
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.1.ddl.sqlpp
@@ -0,0 +1,79 @@
+/*
+ * 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.
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+use test;
+
+create type onekType1 as
+ closed {
+ unique1 : bigint,
+ unique2 : bigint,
+ two : bigint,
+ four : bigint,
+ ten : bigint,
+ twenty : bigint,
+ onePercent : bigint,
+ tenPercent : bigint,
+ twentyPercent : bigint,
+ fiftyPercent : bigint,
+ unique3 : bigint,
+ evenOnePercent : bigint,
+ oddOnePercent : bigint,
+ stringu1 : string,
+ stringu2 : string,
+ string4 : string
+};
+
+-- switch unique1 and unique2 in the schema
+
+create type onekType2 as
+ closed {
+ unique2 : bigint,
+ unique1 : bigint,
+ two : bigint,
+ four : bigint,
+ ten : bigint,
+ twenty : bigint,
+ onePercent : bigint,
+ tenPercent : bigint,
+ twentyPercent : bigint,
+ fiftyPercent : bigint,
+ unique3 : bigint,
+ evenOnePercent : bigint,
+ oddOnePercent : bigint,
+ stringu1 : string,
+ stringu2 : string,
+ string4 : string
+};
+
+create type fbuType as
+{
+ id : bigint
+};
+
+create dataset onek1(onekType1) primary key unique2;
+
+create dataset onek2(onekType2) primary key unique2;
+
+create dataset fbu1(fbuType) primary key id;
+
+create dataset fbu2(fbuType) primary key id;
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.2.update.sqlpp
new file mode 100644
index 0000000..19d5778
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.2.update.sqlpp
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+use test;
+
+load dataset onek1 using localfs ((`path`=`asterix_nc1://data/wisc/onektup.adm`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
+
+load dataset onek2 using localfs ((`path`=`asterix_nc1://data/wisc/onektup.adm`),(`format`=`delimited-text`),(`delimiter`=`|`)) pre-sorted;
+
+load dataset fbu1 using localfs ((`path`=`asterix_nc1://data/tinysocial/fbu.adm`),(`format`=`adm`));
+
+load dataset fbu2 using localfs ((`path`=`asterix_nc1://data/tinysocial/fbu.adm`),(`format`=`adm`));
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.3.ddl.sqlpp
new file mode 100644
index 0000000..c34933e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.3.ddl.sqlpp
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+use test;
+
+create index onek1_idx on onek1(unique1);
+
+create index onek2_idx on onek2(unique1);
+
+create index fbu1_idx on fbu1(alias: string);
+
+create index fbu2_idx on fbu2(alias: string);
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.4.query.sqlpp
new file mode 100644
index 0000000..453e42c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.4.query.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+/**
+ * Test that the index is used (closed field)
+ */
+
+use test;
+
+with T as (
+ select value t1 from onek1 t1
+ union all
+ select value t2 from onek2 t2
+)
+select unique1, unique2, unique3 from T
+where unique1 >= 98
+order by unique2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.5.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.5.query.sqlpp
new file mode 100644
index 0000000..d99241f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.5.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/**
+ * Test that the index is used (closed field)
+ */
+
+use test;
+
+with T as (
+ select unique1, unique2, unique3 from onek1
+ union all
+ select unique1, unique2, unique3 from onek2
+)
+select value t from T t
+where unique1 >= 98
+order by unique2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.6.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.6.query.sqlpp
new file mode 100644
index 0000000..0f96940
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.6.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/**
+ * Test that the index is used (open field)
+ */
+
+use test;
+
+with T as (
+ select value t1 from fbu1 t1
+ union all
+ select value t2 from fbu2 t2
+)
+select alias, name from T
+where alias >= "Von"
+order by alias;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.7.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.7.query.sqlpp
new file mode 100644
index 0000000..872c963
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/union/union_opt_1/union_opt_1.7.query.sqlpp
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+/**
+ * Test that the index is used (open field)
+ */
+
+use test;
+
+with T as (
+ select alias, name from fbu1
+ union all
+ select alias, name from fbu2
+)
+select value t from T t
+where alias >= "Von"
+order by alias;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.1.ddl.sqlpp
new file mode 100644
index 0000000..c111196
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.1.ddl.sqlpp
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+
+/*
+ * Description : Test CREATE OR REPLACE FUNCTION
+ * Expected Res : Success
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+use test;
+
+create function f1(a, b) {
+ a + b
+};
+
+/* Replace an existing function */
+create or replace function f1(a, b) {
+ a - b
+};
+
+/* Create new function */
+create or replace function f2(a, b) {
+ a * b
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.2.query.sqlpp
new file mode 100644
index 0000000..8e6c136
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.2.query.sqlpp
@@ -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.
+ */
+
+use test;
+
+{
+ "f1": f1(5, 2),
+ "f2": f2(5, 2)
+}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.3.query.sqlpp
new file mode 100644
index 0000000..7a19fc3
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.3.query.sqlpp
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+
+use test;
+
+select f.Name, f.`Definition`
+from Metadata.`Function` f
+order by f.Name;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-dependency-3/drop-dependency.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-dependency-3/drop-dependency.3.ddl.sqlpp
index 7e7b60e..8e09034 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-dependency-3/drop-dependency.3.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-dependency-3/drop-dependency.3.ddl.sqlpp
@@ -39,4 +39,4 @@
};
use C;
-drop function f1@2;
\ No newline at end of file
+drop function f1(message, text);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-dependency-5/drop-dependency.5.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-dependency-5/drop-dependency.5.ddl.sqlpp
index 3a7f4dc..f301fc6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-dependency-5/drop-dependency.5.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-dependency-5/drop-dependency.5.ddl.sqlpp
@@ -35,4 +35,4 @@
C.f1(message,text)
};
-drop function f1@2;
\ No newline at end of file
+drop function f1(message, text);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-function-1/drop-function-1.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-function-1/drop-function-1.1.ddl.sqlpp
new file mode 100644
index 0000000..be5e07d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-function-1/drop-function-1.1.ddl.sqlpp
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+/*
+ * Description : Test drop function
+ * Expected Res : Success
+ */
+
+drop dataverse experiments if exists;
+create dataverse experiments;
+use experiments;
+
+create function my_sum(a, b) {
+ a + b
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-function-1/drop-function-1.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-function-1/drop-function-1.2.query.sqlpp
new file mode 100644
index 0000000..0f0de1a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-function-1/drop-function-1.2.query.sqlpp
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+use experiments;
+
+my_sum(2, 3);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-function-1/drop-function-1.3.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-function-1/drop-function-1.3.ddl.sqlpp
new file mode 100644
index 0000000..7023e16
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-function-1/drop-function-1.3.ddl.sqlpp
@@ -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.
+ */
+
+drop function experiments.my_sum(a, b);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-function-1/drop-function-1.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-function-1/drop-function-1.4.query.sqlpp
new file mode 100644
index 0000000..a998ac1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/drop-function-1/drop-function-1.4.query.sqlpp
@@ -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.
+ */
+
+/*
+ * Description : Error. Unknown function
+ * Expected Res : Failure
+ */
+
+use experiments;
+
+my_sum(2, 3);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/query-issue455/query-issue455.4.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/query-issue455/query-issue455.4.ddl.sqlpp
index 8cb4580..d293b8e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/query-issue455/query-issue455.4.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/query-issue455/query-issue455.4.ddl.sqlpp
@@ -23,4 +23,4 @@
* Date : 19th May 2013
*/
-drop function test.printName@0;
+drop function test.printName();
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf33_overloading/udf33_overloading.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf33_overloading/udf33_overloading.1.ddl.sqlpp
new file mode 100644
index 0000000..670922d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf33_overloading/udf33_overloading.1.ddl.sqlpp
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+
+/*
+ * Description : Function overloading is allowed
+ * Expected Res : Success
+ */
+
+drop dataverse experiments if exists;
+create dataverse experiments;
+use experiments;
+
+create function myfn(a) {
+ a
+};
+
+create function myfn(a, b) {
+ a + b
+};
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf33_overloading/udf33_overloading.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf33_overloading/udf33_overloading.2.query.sqlpp
new file mode 100644
index 0000000..c9359fc
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf33_overloading/udf33_overloading.2.query.sqlpp
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+
+/*
+ * Description : Function overloading is allowed
+ * Expected Res : Success
+ */
+
+use experiments;
+
+{
+ "myfn_1": myfn(2),
+ "myfn_2": myfn(2, 3)
+}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf34/udf34.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf34/udf34.1.ddl.sqlpp
new file mode 100644
index 0000000..6b0e577
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf34/udf34.1.ddl.sqlpp
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Function parameter used in HAVING clause
+ * Expected Res : Success
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+
+create function test.f1(v) {
+ select value x
+ from range(1, 9) r
+ group by r % 3 as x
+ having count(*) > v
+ order by x
+};
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf34/udf34.2.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf34/udf34.2.query.sqlpp
new file mode 100644
index 0000000..8fcb9a2
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/user-defined-functions/udf34/udf34.2.query.sqlpp
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+/*
+ * Description : Function parameter used in HAVING clause
+ * Expected Res : Success
+ */
+
+test.f1(2);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/window/win_negative/win_negative.4.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/window/win_negative/win_negative.4.query.sqlpp
index 59a0127..3b154ca 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/window/win_negative/win_negative.4.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/window/win_negative/win_negative.4.query.sqlpp
@@ -17,7 +17,7 @@
* under the License.
*/
/*
- * Description : Test error message for an unknown window function
+ * Description : Test error message for a non-window function
* : with identifier resolution
* Expected Res : FAILURE
*/
@@ -25,4 +25,4 @@
from (
from range(1, 2) x, range(1, 2) y select x, y
) t
-select unknown_func(x) over (partition by y)
+select lower(x) over (partition by y)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/count_dataset/count_dataset.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/count_dataset/count_dataset.1.adm
index 486b421..9a0762a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/count_dataset/count_dataset.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/count_dataset/count_dataset.1.adm
@@ -1,24 +1,24 @@
-distribute result [$$24]
+distribute result [$$25]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- aggregate [$$24] <- [agg-sql-sum($$27)]
+ aggregate [$$25] <- [agg-sql-sum($$28)]
-- AGGREGATE |UNPARTITIONED|
- aggregate [$$27] <- [agg-sql-count(1)]
+ aggregate [$$28] <- [agg-sql-count(1)]
-- AGGREGATE |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$25(ASC) ] |PARTITIONED|
- project ([$$25])
+ -- SORT_MERGE_EXCHANGE [$$26(ASC) ] |PARTITIONED|
+ project ([$$26])
-- STREAM_PROJECT |PARTITIONED|
- select (and(ge($$23, 1), le($$23, 10)))
+ select (and(ge($$24, 1), le($$24, 10)))
-- STREAM_SELECT |PARTITIONED|
- project ([$$25, $$23])
+ project ([$$26, $$24])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$23] <- [$$Tweet.getField(1)]
+ assign [$$24] <- [$$Tweet.getField(1)]
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$25, $$Tweet] <- Twitter.Tweet
+ data-scan []<-[$$26, $$Tweet] <- Twitter.Tweet
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/count_dataset/count_dataset.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/count_dataset/count_dataset.1.adm
index 42728fe..f56f3a1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/count_dataset/count_dataset.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/count_dataset/count_dataset.1.adm
@@ -1,24 +1,24 @@
-distribute result [$$24]
+distribute result [$$25]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- aggregate [$$24] <- [agg-sum($$27)]
+ aggregate [$$25] <- [agg-sum($$28)]
-- AGGREGATE |UNPARTITIONED|
- aggregate [$$27] <- [agg-count(1)]
+ aggregate [$$28] <- [agg-count(1)]
-- AGGREGATE |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$25(ASC) ] |PARTITIONED|
- project ([$$25])
+ -- SORT_MERGE_EXCHANGE [$$26(ASC) ] |PARTITIONED|
+ project ([$$26])
-- STREAM_PROJECT |PARTITIONED|
- select (and(ge($$23, 1), le($$23, 10)))
+ select (and(ge($$24, 1), le($$24, 10)))
-- STREAM_SELECT |PARTITIONED|
- project ([$$25, $$23])
+ project ([$$26, $$24])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$23] <- [$$Tweet.getField(1)]
+ assign [$$24] <- [$$Tweet.getField(1)]
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$25, $$Tweet] <- Twitter.Tweet
+ data-scan []<-[$$26, $$Tweet] <- Twitter.Tweet
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
index f68a897..cc96921 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
@@ -11,7 +11,8 @@
"compiler\.framesize" : 32768,
"compiler\.groupmemory" : 163840,
"compiler\.indexonly" : true,
- "compiler\.joinmemory" : 262144,
+ "compiler\.internal\.sanitycheck" : true,
+ "compiler\.joinmemory" : 786432,
"compiler\.parallelism" : 0,
"compiler\.sort\.parallel" : false,
"compiler\.sort\.samples" : 100,
@@ -37,6 +38,8 @@
"replication\.strategy" : "none",
"replication\.timeout" : 30,
"ssl\.enabled" : false,
+ "storage.compression.block" : "snappy",
+ "storage.lsm.bloomfilter.falsepositiverate" : 0.01,
"txn\.commitprofiler\.enabled" : false,
"txn\.commitprofiler\.reportinterval" : 5,
"txn\.dataset\.checkpoint\.interval" : 3600,
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
index 47c889b..b9c2894 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
@@ -11,6 +11,7 @@
"compiler\.framesize" : 32768,
"compiler\.groupmemory" : 163840,
"compiler\.indexonly" : true,
+ "compiler\.internal\.sanitycheck" : false,
"compiler\.joinmemory" : 262144,
"compiler\.parallelism" : -1,
"compiler\.sort\.parallel" : true,
@@ -37,6 +38,8 @@
"replication\.strategy" : "none",
"replication\.timeout" : 30,
"ssl\.enabled" : false,
+ "storage.compression.block" : "snappy",
+ "storage.lsm.bloomfilter.falsepositiverate" : 0.01,
"txn\.commitprofiler\.enabled" : false,
"txn\.commitprofiler\.reportinterval" : 5,
"txn\.dataset\.checkpoint\.interval" : 3600,
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
index eb5be43..68d3079 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
@@ -11,7 +11,8 @@
"compiler\.framesize" : 32768,
"compiler\.groupmemory" : 163840,
"compiler\.indexonly" : true,
- "compiler\.joinmemory" : 262144,
+ "compiler\.internal\.sanitycheck" : false,
+ "compiler\.joinmemory" : 1048576,
"compiler\.parallelism" : 3,
"compiler\.sort\.parallel" : true,
"compiler\.sort\.samples" : 100,
@@ -37,6 +38,8 @@
"replication\.strategy" : "none",
"replication\.timeout" : 30,
"ssl\.enabled" : false,
+ "storage.compression.block" : "snappy",
+ "storage.lsm.bloomfilter.falsepositiverate" : 0.01,
"txn\.commitprofiler\.enabled" : false,
"txn\.commitprofiler\.reportinterval" : 5,
"txn\.dataset\.checkpoint\.interval" : 3600,
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/cross-dataverse/cross-dv15/cross-dv15.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/cross-dataverse/cross-dv15/cross-dv15.1.adm
index ed83617..24d5071 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/cross-dataverse/cross-dv15/cross-dv15.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/cross-dataverse/cross-dv15/cross-dv15.1.adm
@@ -1,3 +1,3 @@
-{ "DataverseName": "testdv1", "Name": "fun01", "Arity": "0", "ReturnType": "any" }
-{ "DataverseName": "testdv1", "Name": "fun02", "Arity": "1", "ReturnType": "any" }
-{ "DataverseName": "testdv1", "Name": "fun03", "Arity": "2", "ReturnType": "any" }
+{ "DataverseName": "testdv1", "Name": "fun01", "Arity": "0", "ReturnType": "" }
+{ "DataverseName": "testdv1", "Name": "fun02", "Arity": "1", "ReturnType": "" }
+{ "DataverseName": "testdv1", "Name": "fun03", "Arity": "2", "ReturnType": "" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/ddl/create_dataset_with_filter_on_meta/create_dataset_with_filter_on_meta.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/ddl/create_dataset_with_filter_on_meta/create_dataset_with_filter_on_meta.1.adm
new file mode 100644
index 0000000..fcd415b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/ddl/create_dataset_with_filter_on_meta/create_dataset_with_filter_on_meta.1.adm
@@ -0,0 +1,3 @@
+{ "DataverseName": "KeyVerse", "DatasetName": "KVStore", "IndexName": "KVStore", "IndexStructure": "BTREE", "SearchKey": [ [ "key" ] ], "IsPrimary": true, "Timestamp": "Mon Sep 07 18:14:11 PDT 2020", "PendingOp": 0, "SearchKeySourceIndicator": [ 1 ] }
+{ "DataverseName": "KeyVerse", "DatasetName": "KVStore", "IndexName": "s_location", "IndexStructure": "RTREE", "SearchKey": [ [ "location" ] ], "IsPrimary": false, "Timestamp": "Mon Sep 07 18:14:11 PDT 2020", "PendingOp": 0 }
+{ "DataverseName": "KeyVerse", "DatasetName": "KVStore", "IndexName": "s_rating", "IndexStructure": "BTREE", "SearchKey": [ [ "area_code" ] ], "IsPrimary": false, "Timestamp": "Mon Sep 07 18:14:11 PDT 2020", "PendingOp": 0 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.1.adm
new file mode 100644
index 0000000..a9a79c0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key/scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key.1.adm
@@ -0,0 +1 @@
+{ "id": 4, "dblpid": "books/acm/kim95/ChristodoulakisK95", "title": "Multimedia Information Systems Issues and Approaches.", "authors": "Stavros Christodoulakis Leonidas Koveos", "misc": "2002-01-03 318-337 1995 Modern Database Systems db/books/collections/kim95.html#ChristodoulakisK95" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.4.adm
new file mode 100644
index 0000000..9671834
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.4.adm
@@ -0,0 +1 @@
+{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"DBLPType","open":false,"fields":[{"id":{"type":"AString"}},{"dblpid":{"type":"AString"}},{"title":{"type":"org.apache.asterix.om.types.AUnionType","fields":[{"type":"AString"},{"type":"ANULL"},{"type":"AMISSING"}]}},{"authors":{"type":"AString"}},{"misc":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/test/DBLP/0/DBLP"},{"ip":"127.0.0.1","path":"storage/partition_1/test/DBLP/0/DBLP"},{"ip":"127.0.0.1","path":"storage/partition_2/test/DBLP/0/DBLP"},{"ip":"127.0.0.1","path":"storage/partition_3/test/DBLP/0/DBLP"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.6.adm
new file mode 100644
index 0000000..24eea46
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key.6.adm
@@ -0,0 +1,3 @@
+{ "id": "4", "dblpid": "books/acm/kim95/ChristodoulakisK95", "title": "Multimedia Information Systems Issues and Approaches.", "authors": "Stavros Christodoulakis Leonidas Koveos", "misc": "2002-01-03 318-337 1995 Modern Database Systems db/books/collections/kim95.html#ChristodoulakisK95" }
+{ "id": "89", "dblpid": "conf/icip/SchonfeldL98", "title": "VORTEX Video Retrieval and Tracking from Compressed Multimedia Databases.", "authors": "Dan Schonfeld Dan Lelescu", "misc": "2002-11-05 123-127 1998 ICIP (3) db/conf/icip/icip1998-3.html#SchonfeldL98" }
+{ "id": "90", "dblpid": "conf/hicss/SchonfeldL99", "title": "VORTEX Video Retrieval and Tracking from Compressed Multimedia Databases ¾ Visual Search Engine.", "authors": "Dan Schonfeld Dan Lelescu", "misc": "2002-01-03 1999 HICSS http //computer.org/proceedings/hicss/0001/00013/00013006abs.htm db/conf/hicss/hicss1999-3.html#SchonfeldL99" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.4.adm
new file mode 100644
index 0000000..e5d5f6e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.4.adm
@@ -0,0 +1 @@
+{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"DBLPType","open":false,"fields":[{"id":{"type":"AString"}},{"dblpid":{"type":"AString"}},{"title":{"type":"AString"}},{"authors":{"type":"AString"}},{"misc":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/test/DBLP/0/DBLP"},{"ip":"127.0.0.1","path":"storage/partition_1/test/DBLP/0/DBLP"},{"ip":"127.0.0.1","path":"storage/partition_2/test/DBLP/0/DBLP"},{"ip":"127.0.0.1","path":"storage/partition_3/test/DBLP/0/DBLP"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.6.adm
new file mode 100644
index 0000000..24eea46
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key/scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key.6.adm
@@ -0,0 +1,3 @@
+{ "id": "4", "dblpid": "books/acm/kim95/ChristodoulakisK95", "title": "Multimedia Information Systems Issues and Approaches.", "authors": "Stavros Christodoulakis Leonidas Koveos", "misc": "2002-01-03 318-337 1995 Modern Database Systems db/books/collections/kim95.html#ChristodoulakisK95" }
+{ "id": "89", "dblpid": "conf/icip/SchonfeldL98", "title": "VORTEX Video Retrieval and Tracking from Compressed Multimedia Databases.", "authors": "Dan Schonfeld Dan Lelescu", "misc": "2002-11-05 123-127 1998 ICIP (3) db/conf/icip/icip1998-3.html#SchonfeldL98" }
+{ "id": "90", "dblpid": "conf/hicss/SchonfeldL99", "title": "VORTEX Video Retrieval and Tracking from Compressed Multimedia Databases ¾ Visual Search Engine.", "authors": "Dan Schonfeld Dan Lelescu", "misc": "2002-01-03 1999 HICSS http //computer.org/proceedings/hicss/0001/00013/00013006abs.htm db/conf/hicss/hicss1999-3.html#SchonfeldL99" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.1.adm
new file mode 100644
index 0000000..40fd3b5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key.1.adm
@@ -0,0 +1 @@
+{ "id": "9", "dblpid": "books/acm/kim95/Kaiser95", "title": "Cooperative Transactions for Multiuser Environments.", "authors": "Gail E. Kaiser", "misc": "2002-01-03 409-433 1995 Modern Database Systems db/books/collections/kim95.html#Kaiser95" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.4.adm
new file mode 100644
index 0000000..e5d5f6e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.4.adm
@@ -0,0 +1 @@
+{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"DBLPType","open":false,"fields":[{"id":{"type":"AString"}},{"dblpid":{"type":"AString"}},{"title":{"type":"AString"}},{"authors":{"type":"AString"}},{"misc":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/test/DBLP/0/DBLP"},{"ip":"127.0.0.1","path":"storage/partition_1/test/DBLP/0/DBLP"},{"ip":"127.0.0.1","path":"storage/partition_2/test/DBLP/0/DBLP"},{"ip":"127.0.0.1","path":"storage/partition_3/test/DBLP/0/DBLP"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.6.adm
new file mode 100644
index 0000000..40fd3b5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/dml/scan-insert-inverted-index-word-secondary-index-string-as-primary-key/scan-insert-inverted-index-word-secondary-index-string-as-primary-key.6.adm
@@ -0,0 +1 @@
+{ "id": "9", "dblpid": "books/acm/kim95/Kaiser95", "title": "Cooperative Transactions for Multiuser Environments.", "authors": "Gail E. Kaiser", "misc": "2002-01-03 409-433 1995 Modern Database Systems db/books/collections/kim95.html#Kaiser95" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm
index f7790a0..31ef021 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm
@@ -1,40 +1,40 @@
-distribute result [$$44]
+distribute result [$$47]
-- DISTRIBUTE_RESULT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$44])
+ project ([$$47])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$44] <- [{"deptId": $#1, "star_cost": $$47}]
+ assign [$$47] <- [{"deptId": $#1, "star_cost": $$50}]
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- group by ([$#1 := $$52]) decor ([]) {
- aggregate [$$47] <- [agg-global-sql-sum($$51)]
+ group by ([$#1 := $$55]) decor ([]) {
+ aggregate [$$50] <- [agg-global-sql-sum($$54)]
-- AGGREGATE |LOCAL|
nested tuple source
-- NESTED_TUPLE_SOURCE |LOCAL|
}
- -- SORT_GROUP_BY[$$52] |PARTITIONED|
+ -- SORT_GROUP_BY[$$55] |PARTITIONED|
exchange
- -- HASH_PARTITION_EXCHANGE [$$52] |PARTITIONED|
- group by ([$$52 := $$45]) decor ([]) {
- aggregate [$$51] <- [agg-local-sql-sum($$42)]
+ -- HASH_PARTITION_EXCHANGE [$$55] |PARTITIONED|
+ group by ([$$55 := $$48]) decor ([]) {
+ aggregate [$$54] <- [agg-local-sql-sum($$45)]
-- AGGREGATE |LOCAL|
nested tuple source
-- NESTED_TUPLE_SOURCE |LOCAL|
}
- -- SORT_GROUP_BY[$$45] |PARTITIONED|
+ -- SORT_GROUP_BY[$$48] |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$42, $$45])
+ project ([$$45, $$48])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$45, $$42] <- [substring($$e.getField("dept").getField("department_id"), 0), $$e.getField("salary")]
+ assign [$$48, $$45] <- [substring($$e.getField("dept").getField("department_id"), 0), $$e.getField("salary")]
-- ASSIGN |PARTITIONED|
project ([$$e])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$46, $$e] <- gby.Employee
+ data-scan []<-[$$49, $$e] <- gby.Employee
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm
index 7bfd96b..bbdbb57 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm
@@ -1,40 +1,40 @@
-distribute result [$$43]
+distribute result [$$46]
-- DISTRIBUTE_RESULT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$43])
+ project ([$$46])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$43] <- [{"deptId": $#1, "star_cost": $$46}]
+ assign [$$46] <- [{"deptId": $#1, "star_cost": $$49}]
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- group by ([$#1 := $$50]) decor ([]) {
- aggregate [$$46] <- [agg-global-sql-sum($$49)]
+ group by ([$#1 := $$53]) decor ([]) {
+ aggregate [$$49] <- [agg-global-sql-sum($$52)]
-- AGGREGATE |LOCAL|
nested tuple source
-- NESTED_TUPLE_SOURCE |LOCAL|
}
- -- SORT_GROUP_BY[$$50] |PARTITIONED|
+ -- SORT_GROUP_BY[$$53] |PARTITIONED|
exchange
- -- HASH_PARTITION_EXCHANGE [$$50] |PARTITIONED|
- group by ([$$50 := $$44]) decor ([]) {
- aggregate [$$49] <- [agg-local-sql-sum($$41)]
+ -- HASH_PARTITION_EXCHANGE [$$53] |PARTITIONED|
+ group by ([$$53 := $$47]) decor ([]) {
+ aggregate [$$52] <- [agg-local-sql-sum($$44)]
-- AGGREGATE |LOCAL|
nested tuple source
-- NESTED_TUPLE_SOURCE |LOCAL|
}
- -- SORT_GROUP_BY[$$44] |PARTITIONED|
+ -- SORT_GROUP_BY[$$47] |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$41, $$44])
+ project ([$$44, $$47])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$44, $$41] <- [substring($$e.getField(1), 0), $$e.getField(2)]
+ assign [$$47, $$44] <- [substring($$e.getField(1), 0), $$e.getField(2)]
-- ASSIGN |PARTITIONED|
project ([$$e])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$45, $$e] <- gby.Employee
+ data-scan []<-[$$48, $$e] <- gby.Employee
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/include-exclude/include-10/result.001.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/include-exclude/include-10/result.001.adm
new file mode 100644
index 0000000..c1a0ea2
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/include-exclude/include-10/result.001.adm
@@ -0,0 +1 @@
+{ "count": 0 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/include-exclude/include-11/result.001.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/include-exclude/include-11/result.001.adm
new file mode 100644
index 0000000..95204aa
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/include-exclude/include-11/result.001.adm
@@ -0,0 +1 @@
+{ "count": 6 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/include-exclude/include-12/result.001.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/include-exclude/include-12/result.001.adm
new file mode 100644
index 0000000..c1a0ea2
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/include-exclude/include-12/result.001.adm
@@ -0,0 +1 @@
+{ "count": 0 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.10.adm
new file mode 100644
index 0000000..c0c9e29
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.10.adm
@@ -0,0 +1,3 @@
+{ "type": "eval", "value": 7 }
+{ "type": "meta-functions", "value": [ { "DataverseName": "externallibtest", "Name": "f", "Arity": "1", "Params": [ "a" ], "ReturnType": "", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ null ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.OpenCapitalFinderFactory" ], "NullCall": false, "Deterministic": true }, { "DataverseName": "externallibtest", "Name": "f2", "Arity": "2", "Params": [ "a", "b" ], "ReturnType": "int32", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "int32" }, { "Type": "int32" } ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.MySumFactory" ], "NullCall": false, "Deterministic": true } ] }
+{ "type": "meta-types", "value": [ ] }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.12.adm
new file mode 100644
index 0000000..7775988
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.12.adm
@@ -0,0 +1,3 @@
+{ "type": "eval", "value": 30 }
+{ "type": "meta-functions", "value": [ { "DataverseName": "externallibtest", "Name": "f", "Arity": "1", "Params": [ "a" ], "ReturnType": "", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ null ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.OpenCapitalFinderFactory" ], "NullCall": false, "Deterministic": true }, { "DataverseName": "externallibtest", "Name": "f2", "Arity": "2", "Params": [ "a", "b" ], "ReturnType": "", "Definition": "a * b", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ] } ] }
+{ "type": "meta-types", "value": [ ] }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.4.adm
new file mode 100644
index 0000000..968097c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.4.adm
@@ -0,0 +1,3 @@
+{ "type": "eval", "value": { "country": "United States", "capital": "Washington D.C." } }
+{ "type": "meta-functions", "value": [ { "DataverseName": "externallibtest", "Name": "f", "Arity": "1", "Params": [ "a" ], "ReturnType": "", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ null ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.OpenCapitalFinderFactory" ], "NullCall": false, "Deterministic": true } ] }
+{ "type": "meta-types", "value": [ ] }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.6.adm
new file mode 100644
index 0000000..590b8de
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.6.adm
@@ -0,0 +1,3 @@
+{ "type": "eval", "value": 3 }
+{ "type": "meta-functions", "value": [ { "DataverseName": "externallibtest", "Name": "f", "Arity": "1", "Params": [ "a" ], "ReturnType": "int32", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "$f$t$f$1$0" } ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.MyArraySumFactory" ], "NullCall": false, "Deterministic": true } ] }
+{ "type": "meta-types", "value": [ { "DataverseName": "externallibtest", "DatatypeName": "$f$t$f$1$0", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "int32" } } ] }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.8.adm
new file mode 100644
index 0000000..4fda008
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/create-or-replace-function-1/create-or-replace-function-1.8.adm
@@ -0,0 +1,3 @@
+{ "type": "eval", "value": { "country": "Italy", "capital": "Rome" } }
+{ "type": "meta-functions", "value": [ { "DataverseName": "externallibtest", "Name": "f", "Arity": "1", "Params": [ "a" ], "ReturnType": "", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ null ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.OpenCapitalFinderFactory" ], "NullCall": false, "Deterministic": true } ] }
+{ "type": "meta-types", "value": [ ] }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_bigobj_roundtrip/py_bigobj_roundtrip.1.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_bigobj_roundtrip/py_bigobj_roundtrip.1.regexjson
new file mode 120000
index 0000000..7f8c8ee
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_bigobj_roundtrip/py_bigobj_roundtrip.1.regexjson
@@ -0,0 +1 @@
+../../big-object/big_object_insert/big_object_insert.1.adm
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_function_error/py_function_error.1.json b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_function_error/py_function_error.1.json
new file mode 100644
index 0000000..ec747fa
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_function_error/py_function_error.1.json
@@ -0,0 +1 @@
+null
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.10.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.10.regexjson
new file mode 100644
index 0000000..2cddb0f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.10.regexjson
@@ -0,0 +1,4 @@
+[{ "id": 1, "Kingdom": "Animalia", "lower": { "id": 1, "Phylum": "Chordata", "lower": { "id": 1, "Class": "Mammalia", "lower": { "id": 1, "Order": "Carnivora", "lower": { "id": 1, "Family": "Mustelinae", "lower": { "id": 1, "Genus": "Gulo", "lower": { "id": 1, "Species": "Gulo" } } } } } } },
+{ "id": 2, "Kingdom": "Animalia", "lower": { "id": 2, "Phylum": "Chordata", "lower": { "id": 2, "Class": "Mammalia", "lower": { "id": 2, "Order": "Artiodactyla", "lower": { "id": 2, "Family": "Giraffidae", "lower": { "id": 2, "Genus": "Okapia", "lower": { "id": 2, "Species": "Johnstoni" } } } } } } },
+{ "id": 3, "Kingdom": "Animalia", "lower": { "id": 3, "Phylum": "Chordata", "lower": { "id": 3, "Class": "Mammalia", "lower": { "id": 3, "Order": "Atlantogenata", "lower": { "id": 3, "Family": "Afrotheria", "lower": { "id": 3, "Genus": "Paenungulata", "lower": { "id": 3, "Species": "Hyracoidea" } } } } } } },
+{ "id": 4, "Kingdom": "Animalia", "lower": { "id": 4, "Phylum": "Chordata", "lower": { "id": 4, "Class": "Aves", "lower": { "id": 4, "Order": "Accipitriformes", "lower": { "id": 4, "Family": "Accipitridae", "lower": { "id": 4, "Genus": "Buteo", "lower": { "id": 4, "Species": "Jamaicensis" } } } } } } }]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.11.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.11.regexjson
new file mode 100644
index 0000000..a7ce00a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.11.regexjson
@@ -0,0 +1,4 @@
+[{ "id": 1, "fullClassification": { "id": 1, "Kingdom": "Animalia", "lower": { "id": 1, "Phylum": "Chordata", "lower": { "id": 1, "Class": "Mammalia", "lower": { "id": 1, "Order": "Carnivora", "lower": { "id": 1, "Family": "Mustelinae", "lower": { "id": 1, "Genus": "Gulo", "lower": { "id": 1, "Species": "Gulo" } } } } } } } },
+{ "id": 2, "fullClassification": { "id": 2, "Kingdom": "Animalia", "lower": { "id": 2, "Phylum": "Chordata", "lower": { "id": 2, "Class": "Mammalia", "lower": { "id": 2, "Order": "Artiodactyla", "lower": { "id": 2, "Family": "Giraffidae", "lower": { "id": 2, "Genus": "Okapia", "lower": { "id": 2, "Species": "Johnstoni" } } } } } } } },
+{ "id": 3, "fullClassification": { "id": 3, "Kingdom": "Animalia", "lower": { "id": 3, "Phylum": "Chordata", "lower": { "id": 3, "Class": "Mammalia", "lower": { "id": 3, "Order": "Atlantogenata", "lower": { "id": 3, "Family": "Afrotheria", "lower": { "id": 3, "Genus": "Paenungulata", "lower": { "id": 3, "Species": "Hyracoidea" } } } } } } } },
+{ "id": 4, "fullClassification": { "id": 4, "Kingdom": "Animalia", "lower": { "id": 4, "Phylum": "Chordata", "lower": { "id": 4, "Class": "Aves", "lower": { "id": 4, "Order": "Accipitriformes", "lower": { "id": 4, "Family": "Accipitridae", "lower": { "id": 4, "Genus": "Buteo", "lower": { "id": 4, "Species": "Jamaicensis" } } } } } } } }]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.12.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.12.regexjson
new file mode 100644
index 0000000..d09c537
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.12.regexjson
@@ -0,0 +1,4 @@
+[{ "id": 1, "class": { "id": 1, "fullClassification": { "id": 1, "Kingdom": "Animalia", "lower": { "id": 1, "Phylum": "Chordata", "lower": { "id": 1, "Class": "Mammalia", "lower": { "id": 1, "Order": "Carnivora", "lower": { "id": 1, "Family": "Mustelinae", "lower": { "id": 1, "Genus": "Gulo", "lower": { "id": 1, "Species": "Gulo" } } } } } } } } },
+{ "id": 2, "class": { "id": 2, "fullClassification": { "id": 2, "Kingdom": "Animalia", "lower": { "id": 2, "Phylum": "Chordata", "lower": { "id": 2, "Class": "Mammalia", "lower": { "id": 2, "Order": "Artiodactyla", "lower": { "id": 2, "Family": "Giraffidae", "lower": { "id": 2, "Genus": "Okapia", "lower": { "id": 2, "Species": "Johnstoni" } } } } } } } } },
+{ "id": 3, "class": { "id": 3, "fullClassification": { "id": 3, "Kingdom": "Animalia", "lower": { "id": 3, "Phylum": "Chordata", "lower": { "id": 3, "Class": "Mammalia", "lower": { "id": 3, "Order": "Atlantogenata", "lower": { "id": 3, "Family": "Afrotheria", "lower": { "id": 3, "Genus": "Paenungulata", "lower": { "id": 3, "Species": "Hyracoidea" } } } } } } } } },
+{ "id": 4, "class": { "id": 4, "fullClassification": { "id": 4, "Kingdom": "Animalia", "lower": { "id": 4, "Phylum": "Chordata", "lower": { "id": 4, "Class": "Aves", "lower": { "id": 4, "Order": "Accipitriformes", "lower": { "id": 4, "Family": "Accipitridae", "lower": { "id": 4, "Genus": "Buteo", "lower": { "id": 4, "Species": "Jamaicensis" } } } } } } } } }]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.3.adm
new file mode 100644
index 0000000..e34004a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.3.adm
@@ -0,0 +1,4 @@
+"Gulo"
+"Hyracoidea"
+"Jamaicensis"
+"Johnstoni"
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.4.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.4.regexjson
new file mode 100644
index 0000000..5d8ddf4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.4.regexjson
@@ -0,0 +1,4 @@
+[{ "id": 1, "Species": "Gulo" },
+{ "id": 2, "Species": "Johnstoni" },
+{ "id": 3, "Species": "Hyracoidea" },
+{ "id": 4, "Species": "Jamaicensis" }]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.5.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.5.regexjson
new file mode 100644
index 0000000..f10de1f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.5.regexjson
@@ -0,0 +1,4 @@
+[{ "id": 1, "Genus": "Gulo", "lower": { "id": 1, "Species": "Gulo" } },
+{ "id": 2, "Genus": "Okapia", "lower": { "id": 2, "Species": "Johnstoni" } },
+{ "id": 3, "Genus": "Paenungulata", "lower": { "id": 3, "Species": "Hyracoidea" } },
+{ "id": 4, "Genus": "Buteo", "lower": { "id": 4, "Species": "Jamaicensis" } }]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.6.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.6.regexjson
new file mode 100644
index 0000000..4e6d8ea
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.6.regexjson
@@ -0,0 +1,4 @@
+[{ "id": 1, "Family": "Mustelinae", "lower": { "id": 1, "Genus": "Gulo", "lower": { "id": 1, "Species": "Gulo" } } },
+{ "id": 2, "Family": "Giraffidae", "lower": { "id": 2, "Genus": "Okapia", "lower": { "id": 2, "Species": "Johnstoni" } } },
+{ "id": 3, "Family": "Afrotheria", "lower": { "id": 3, "Genus": "Paenungulata", "lower": { "id": 3, "Species": "Hyracoidea" } } },
+{ "id": 4, "Family": "Accipitridae", "lower": { "id": 4, "Genus": "Buteo", "lower": { "id": 4, "Species": "Jamaicensis" } } }]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.7.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.7.regexjson
new file mode 100644
index 0000000..60d21a9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.7.regexjson
@@ -0,0 +1,4 @@
+[{ "id": 1, "Order": "Carnivora", "lower": { "id": 1, "Family": "Mustelinae", "lower": { "id": 1, "Genus": "Gulo", "lower": { "id": 1, "Species": "Gulo" } } } },
+{ "id": 2, "Order": "Artiodactyla", "lower": { "id": 2, "Family": "Giraffidae", "lower": { "id": 2, "Genus": "Okapia", "lower": { "id": 2, "Species": "Johnstoni" } } } },
+{ "id": 3, "Order": "Atlantogenata", "lower": { "id": 3, "Family": "Afrotheria", "lower": { "id": 3, "Genus": "Paenungulata", "lower": { "id": 3, "Species": "Hyracoidea" } } } },
+{ "id": 4, "Order": "Accipitriformes", "lower": { "id": 4, "Family": "Accipitridae", "lower": { "id": 4, "Genus": "Buteo", "lower": { "id": 4, "Species": "Jamaicensis" } } } }]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.8.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.8.regexjson
new file mode 100644
index 0000000..183e94c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.8.regexjson
@@ -0,0 +1,4 @@
+[{ "id": 1, "Class": "Mammalia", "lower": { "id": 1, "Order": "Carnivora", "lower": { "id": 1, "Family": "Mustelinae", "lower": { "id": 1, "Genus": "Gulo", "lower": { "id": 1, "Species": "Gulo" } } } } },
+{ "id": 2, "Class": "Mammalia", "lower": { "id": 2, "Order": "Artiodactyla", "lower": { "id": 2, "Family": "Giraffidae", "lower": { "id": 2, "Genus": "Okapia", "lower": { "id": 2, "Species": "Johnstoni" } } } } },
+{ "id": 3, "Class": "Mammalia", "lower": { "id": 3, "Order": "Atlantogenata", "lower": { "id": 3, "Family": "Afrotheria", "lower": { "id": 3, "Genus": "Paenungulata", "lower": { "id": 3, "Species": "Hyracoidea" } } } } },
+{ "id": 4, "Class": "Aves", "lower": { "id": 4, "Order": "Accipitriformes", "lower": { "id": 4, "Family": "Accipitridae", "lower": { "id": 4, "Genus": "Buteo", "lower": { "id": 4, "Species": "Jamaicensis" } } } } }]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.9.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.9.regexjson
new file mode 100644
index 0000000..347b5b6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/py_nested_access/access-nested-fields.9.regexjson
@@ -0,0 +1,4 @@
+[{ "id": 1, "Phylum": "Chordata", "lower": { "id": 1, "Class": "Mammalia", "lower": { "id": 1, "Order": "Carnivora", "lower": { "id": 1, "Family": "Mustelinae", "lower": { "id": 1, "Genus": "Gulo", "lower": { "id": 1, "Species": "Gulo" } } } } } },
+{ "id": 2, "Phylum": "Chordata", "lower": { "id": 2, "Class": "Mammalia", "lower": { "id": 2, "Order": "Artiodactyla", "lower": { "id": 2, "Family": "Giraffidae", "lower": { "id": 2, "Genus": "Okapia", "lower": { "id": 2, "Species": "Johnstoni" } } } } } },
+{ "id": 3, "Phylum": "Chordata", "lower": { "id": 3, "Class": "Mammalia", "lower": { "id": 3, "Order": "Atlantogenata", "lower": { "id": 3, "Family": "Afrotheria", "lower": { "id": 3, "Genus": "Paenungulata", "lower": { "id": 3, "Species": "Hyracoidea" } } } } } },
+{ "id": 4, "Phylum": "Chordata", "lower": { "id": 4, "Class": "Aves", "lower": { "id": 4, "Order": "Accipitriformes", "lower": { "id": 4, "Family": "Accipitridae", "lower": { "id": 4, "Genus": "Buteo", "lower": { "id": 4, "Species": "Jamaicensis" } } } } } }]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/udf_metadata/udf_metadata.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/udf_metadata/udf_metadata.3.adm
index 913eab7..6d0ea72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/udf_metadata/udf_metadata.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/udf_metadata/udf_metadata.3.adm
@@ -1,12 +1,12 @@
-{ "fn": { "DataverseName": "externallibtest", "Name": "myfn001", "Arity": "0", "Params": [ ], "ReturnType": "any", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
-{ "fn": { "DataverseName": "externallibtest", "Name": "myfn002", "Arity": "1", "Params": [ "a" ], "ReturnType": "any", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "any" } ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
-{ "fn": { "DataverseName": "externallibtest", "Name": "myfn003", "Arity": "3", "Params": [ "a", "b", "c" ], "ReturnType": "string", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "string" }, { "Type": "$f$t$myfn003$3$1" }, { "Type": "$f$t$myfn003$3$2" } ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
-{ "fn": { "DataverseName": "externallibtest", "Name": "myfn004", "Arity": "2", "Params": [ "a", "b" ], "ReturnType": "CountryCapitalType", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "externallibtest", "CountryCapitalType" ] ] ], "ParamTypes": [ { "Type": "CountryCapitalType" }, { "Type": "$f$t$myfn004$2$1" } ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
-{ "fn": { "DataverseName": "externallibtest", "Name": "myfn005", "Arity": "4", "Params": [ "a", "b", "c", "d" ], "ReturnType": "string", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "externallibtest", "CountryCapitalType" ] ] ], "ParamTypes": [ { "Type": "int16" }, { "Type": "$f$t$myfn005$4$1" }, { "Type": "CountryCapitalType" }, { "Type": "$f$t$myfn005$4$3" } ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
-{ "fn": { "DataverseName": "externallibtest", "Name": "myfn006", "Arity": "1", "Params": [ "a" ], "ReturnType": "$f$t$myfn006$1", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "$f$t$myfn006$1$0" } ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
-{ "fn": { "DataverseName": "externallibtest", "Name": "myfn007", "Arity": "1", "Params": [ "a" ], "ReturnType": "$f$t$myfn007$1", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "$f$t$myfn007$1$0" } ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
-{ "fn": { "DataverseName": "externallibtest", "Name": "myfn008", "Arity": "1", "Params": [ "a" ], "ReturnType": "$f$t$myfn008$1", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "externallibtest", "CountryCapitalType" ] ] ], "ParamTypes": [ { "Type": "$f$t$myfn008$1$0" } ], "Library": "testlib", "NullCall": false, "Deterministic": false } }
-{ "fn": { "DataverseName": "externallibtest2", "Name": "myfn009", "Arity": "1", "Params": [ "a" ], "ReturnType": "CountryCapitalType", "Definition": "org.apache.asterix.external.library.CapitalFinderFactory", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "externallibtest", "CountryCapitalType" ] ] ], "ReturnTypeDataverseName": "externallibtest", "ParamTypes": [ { "Type": "CountryCapitalType", "DataverseName": "externallibtest" } ], "Library": "testlib2", "NullCall": false, "Deterministic": false } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn001", "Arity": "0", "Params": [ ], "ReturnType": "", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.CapitalFinderFactory" ], "NullCall": false, "Deterministic": true } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn002", "Arity": "1", "Params": [ "a" ], "ReturnType": "", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ null ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.CapitalFinderFactory" ], "NullCall": false, "Deterministic": true } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn003", "Arity": "3", "Params": [ "a", "b", "c" ], "ReturnType": "string", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "string" }, { "Type": "$f$t$myfn003$3$1" }, { "Type": "$f$t$myfn003$3$2" } ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.CapitalFinderFactory" ], "NullCall": false, "Deterministic": true } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn004", "Arity": "2", "Params": [ "a", "b" ], "ReturnType": "CountryCapitalType", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "externallibtest", "CountryCapitalType" ] ] ], "ParamTypes": [ { "Type": "CountryCapitalType" }, { "Type": "$f$t$myfn004$2$1" } ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.CapitalFinderFactory" ], "NullCall": false, "Deterministic": true } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn005", "Arity": "4", "Params": [ "a", "b", "c", "d" ], "ReturnType": "string", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "externallibtest", "CountryCapitalType" ] ] ], "ParamTypes": [ { "Type": "int16" }, { "Type": "$f$t$myfn005$4$1" }, { "Type": "CountryCapitalType" }, { "Type": "$f$t$myfn005$4$3" } ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.CapitalFinderFactory" ], "NullCall": false, "Deterministic": true } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn006", "Arity": "1", "Params": [ "a" ], "ReturnType": "$f$t$myfn006$1", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "$f$t$myfn006$1$0" } ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.CapitalFinderFactory" ], "NullCall": false, "Deterministic": true } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn007", "Arity": "1", "Params": [ "a" ], "ReturnType": "$f$t$myfn007$1", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "$f$t$myfn007$1$0" } ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.CapitalFinderFactory" ], "NullCall": false, "Deterministic": true } }
+{ "fn": { "DataverseName": "externallibtest", "Name": "myfn008", "Arity": "1", "Params": [ "a" ], "ReturnType": "$f$t$myfn008$1", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "externallibtest", "CountryCapitalType" ] ] ], "ParamTypes": [ { "Type": "$f$t$myfn008$1$0" } ], "LibraryDataverseName": "externallibtest", "LibraryName": "testlib", "ExternalIdentifier": [ "org.apache.asterix.external.library.CapitalFinderFactory" ], "NullCall": false, "Deterministic": true } }
+{ "fn": { "DataverseName": "externallibtest2", "Name": "myfn009", "Arity": "1", "Params": [ "a" ], "ReturnType": "CountryCapitalType", "Definition": "", "Language": "JAVA", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ [ "externallibtest", "CountryCapitalType" ] ] ], "ReturnTypeDataverseName": "externallibtest", "ParamTypes": [ { "Type": "CountryCapitalType", "DataverseName": "externallibtest" } ], "LibraryDataverseName": "externallibtest2", "LibraryName": "testlib2", "ExternalIdentifier": [ "org.apache.asterix.external.library.CapitalFinderFactory" ], "NullCall": false, "Deterministic": true } }
{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "$f$t$myfn003$3$1", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "int64" } } }
{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "$f$t$myfn003$3$2", "Derived": { "Tag": "UNORDEREDLIST", "IsAnonymous": true, "UnorderedList": "boolean" } } }
{ "dt": { "DataverseName": "externallibtest", "DatatypeName": "$f$t$myfn004$2$1", "Derived": { "Tag": "ORDEREDLIST", "IsAnonymous": true, "OrderedList": "CountryCapitalType" } } }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.1.adm
new file mode 100644
index 0000000..fa522e6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-filter-on-meta-dataset/change-feed-filter-on-meta-dataset.1.adm
@@ -0,0 +1 @@
+{ "k": { "id": 5, "name": "Ian Maxon", "exp": 15 }, "meta": { "key": "8-2", "vbucket": 8, "seq": 21, "cas": 5, "expiration": 8004, "flags": 0, "revSeq": 0, "lockTime": 163 } }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.11.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.11.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.11.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.12.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.12.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.12.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.13.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.13.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.13.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.14.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.14.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.14.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.15.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.15.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.15.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.15.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.16.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.16.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.16.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.16.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.17.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.17.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.17.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.17.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.3.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.3.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.3.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.4.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.4.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.4.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.5.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.5.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.5.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.6.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.6.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.6.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.7.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.7.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.7.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.8.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.8.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.8.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.9.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-filter-on-meta/change-feed-with-filter-on-meta.9.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-where-on-meta/change-feed-with-filter-on-meta.9.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.4.adm
new file mode 100644
index 0000000..9c810dd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/feed-with-external-adapter-cross-dv/feed-with-external-adapter-cross-dv.4.adm
@@ -0,0 +1,4 @@
+{ "tweetid": 1, "message-text": "1" }
+{ "tweetid": 2, "message-text": "2" }
+{ "tweetid": 3, "message-text": "3" }
+{ "tweetid": 4, "message-text": "4" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.3.adm
new file mode 100644
index 0000000..c08b4db
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.3.adm
@@ -0,0 +1 @@
+{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"DBLPType","open":true,"fields":[{"id":{"type":"AString"}},{"dblpid":{"type":"AString"}},{"title":{"type":"AString"}},{"authors":{"type":"AString"}},{"misc":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/fuzzyjoin/DBLP/0/DBLP"},{"ip":"127.0.0.1","path":"storage/partition_1/fuzzyjoin/DBLP/0/DBLP"},{"ip":"127.0.0.1","path":"storage/partition_2/fuzzyjoin/DBLP/0/DBLP"},{"ip":"127.0.0.1","path":"storage/partition_3/fuzzyjoin/DBLP/0/DBLP"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.4.adm
new file mode 100644
index 0000000..bffa712
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/fuzzyjoin/dblp-string-as-primary-key/dblp-string-as-primary-key.4.adm
@@ -0,0 +1 @@
+"38"
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr/gby-expr.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr/gby-expr.3.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr/gby-expr.1.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr/gby-expr.3.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr-2/gby-expr-2.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr/gby-expr.4.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr-2/gby-expr-2.1.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr/gby-expr.4.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr-3/gby-expr-3.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr/gby-expr.5.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr-3/gby-expr-3.1.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr/gby-expr.5.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr/gby-expr.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr/gby-expr.6.adm
new file mode 100644
index 0000000..3424a57
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/gby-expr/gby-expr.6.adm
@@ -0,0 +1 @@
+{ "deptId": "K55", "star_cost": 3000 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.10.adm
new file mode 100644
index 0000000..c1805e8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.10.adm
@@ -0,0 +1,5 @@
+{ "four": null, "s1": 5000, "s2": 49995000 }
+{ "four": 3, "s1": 2500, "s2": 12502500 }
+{ "four": 1, "s1": 2500, "s2": 12497500 }
+{ "four": 2, "s1": 0, "s2": 12500000 }
+{ "four": 0, "s1": 0, "s2": 12495000 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.11.adm
new file mode 100644
index 0000000..884812f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.11.adm
@@ -0,0 +1,5 @@
+{ "four": null, "s1": 5000 }
+{ "four": 3, "s1": 2500 }
+{ "four": 1, "s1": 2500 }
+{ "four": 2, "s1": 0 }
+{ "four": 0, "s1": 0 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.12.adm
new file mode 100644
index 0000000..c3606f4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.12.adm
@@ -0,0 +1,5 @@
+{ "four": null }
+{ "four": 3 }
+{ "four": 1 }
+{ "four": 2 }
+{ "four": 0 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.13.adm
new file mode 100644
index 0000000..133210b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.13.adm
@@ -0,0 +1,5 @@
+null
+3
+1
+2
+0
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.14.adm
new file mode 100644
index 0000000..97f939a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.14.adm
@@ -0,0 +1,4 @@
+{ "four": 3, "s1": 2500 }
+{ "four": 1, "s1": 2500 }
+{ "four": 2, "s1": 0 }
+{ "four": 0, "s1": 0 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.15.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.15.adm
new file mode 100644
index 0000000..443edd5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.15.adm
@@ -0,0 +1,2 @@
+2500
+0
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.16.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.16.adm
new file mode 100644
index 0000000..7721059
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.16.adm
@@ -0,0 +1,5 @@
+{ "four": null, "s": 5000 }
+{ "four": 0, "s": 0 }
+{ "four": 1, "s": 2500 }
+{ "four": 2, "s": 0 }
+{ "four": 3, "s": 2500 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.17.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.17.adm
new file mode 100644
index 0000000..ca4480e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.17.adm
@@ -0,0 +1,5 @@
+"null,5000"
+"0,0"
+"1,2500"
+"2,0"
+"3,2500"
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.18.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.18.adm
new file mode 100644
index 0000000..eecbe7f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.18.adm
@@ -0,0 +1,8 @@
+{ "two": null, "four": null, "s": 49995000 }
+{ "two": null, "four": null, "s": 49995000 }
+{ "two": 1, "four": null, "s": 25000000 }
+{ "two": 0, "four": null, "s": 24995000 }
+{ "two": null, "four": 3, "s": 12502500 }
+{ "two": null, "four": 2, "s": 12500000 }
+{ "two": null, "four": 1, "s": 12497500 }
+{ "two": null, "four": 0, "s": 12495000 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.6.adm
new file mode 100644
index 0000000..b5229c0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.6.adm
@@ -0,0 +1,7 @@
+{ "two": null, "four": null, "s": 49995000 }
+{ "two": 1, "four": null, "s": 25000000 }
+{ "two": 0, "four": null, "s": 24995000 }
+{ "two": 1, "four": 3, "s": 12502500 }
+{ "two": 0, "four": 2, "s": 12500000 }
+{ "two": 1, "four": 1, "s": 12497500 }
+{ "two": 0, "four": 0, "s": 12495000 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.7.adm
new file mode 100644
index 0000000..c9af23f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.7.adm
@@ -0,0 +1,7 @@
+{ "two": null, "four": null }
+{ "two": 1, "four": null }
+{ "two": 0, "four": null }
+{ "two": 1, "four": 3 }
+{ "two": 0, "four": 2 }
+{ "two": 1, "four": 1 }
+{ "two": 0, "four": 0 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.8.adm
new file mode 100644
index 0000000..bbff6b9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.8.adm
@@ -0,0 +1,7 @@
+"null,null"
+"1,null"
+"0,null"
+"1,3"
+"0,2"
+"1,1"
+"0,0"
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.9.adm
new file mode 100644
index 0000000..8eea2ad
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/group-by/grouping-sets-2/grouping-sets-2.9.adm
@@ -0,0 +1,3 @@
+{ "s": 32630, "two": null, "gg": [ { "t": { "two": 0, "unique1": 1858 } }, { "t": { "two": 0, "unique1": 3362 } }, { "t": { "two": 0, "unique1": 8800 } }, { "t": { "two": 1, "unique1": 9267 } }, { "t": { "two": 1, "unique1": 9343 } } ] }
+{ "s": 18610, "two": 1, "gg": [ { "t": { "two": 1, "unique1": 9267 } }, { "t": { "two": 1, "unique1": 9343 } } ] }
+{ "s": 14020, "two": 0, "gg": [ { "t": { "two": 0, "unique1": 1858 } }, { "t": { "two": 0, "unique1": 3362 } }, { "t": { "two": 0, "unique1": 8800 } } ] }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.03.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.03.adm
new file mode 100644
index 0000000..2cddb05
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.03.adm
@@ -0,0 +1 @@
+{ "ds1": { "id": "1", "f": 3 } }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.04.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.04.adm
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.04.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.05.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.05.adm
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.05.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.06.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.06.adm
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.06.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.adm
index 1f1e3a0..21618d0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.adm
@@ -7,28 +7,28 @@
project ([$$c])
-- STREAM_PROJECT |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$16(ASC), $$17(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$17(ASC), $$18(ASC) ] |PARTITIONED|
limit 10
-- STREAM_LIMIT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$16, $$17, $$c] <- index-search("LineItem", 0, "test", "LineItem", FALSE, FALSE, 2, $$22, $$23, 2, $$22, $$23, TRUE, TRUE, TRUE) condition (and(lt($$c.getField(2), 150), lt($$c.getField(5), 10000))) limit 10
+ unnest-map [$$17, $$18, $$c] <- index-search("LineItem", 0, "test", "LineItem", FALSE, FALSE, 2, $$23, $$24, 2, $$23, $$24, TRUE, TRUE, TRUE) condition (and(lt($$c.getField(2), 150), lt($$c.getField(5), 10000))) limit 10
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$22) (ASC, $$23)
- -- STABLE_SORT [$$22(ASC), $$23(ASC)] |PARTITIONED|
+ order (ASC, $$23) (ASC, $$24)
+ -- STABLE_SORT [$$23(ASC), $$24(ASC)] |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$22, $$23])
+ project ([$$23, $$24])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$21, $$22, $$23] <- index-search("idx_LineItem_suppkey", 0, "test", "LineItem", FALSE, FALSE, 0, 1, $$20, TRUE, FALSE, FALSE)
+ unnest-map [$$22, $$23, $$24] <- index-search("idx_LineItem_suppkey", 0, "test", "LineItem", FALSE, FALSE, 0, 1, $$21, TRUE, FALSE, FALSE)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$20] <- [150]
+ assign [$$21] <- [150]
-- ASSIGN |PARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.adm
index a0e070b..1f4ef66 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.adm
@@ -1,40 +1,40 @@
-distribute result [$$18]
+distribute result [$$19]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
limit 5
-- STREAM_LIMIT |UNPARTITIONED|
- project ([$$18])
+ project ([$$19])
-- STREAM_PROJECT |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$20(ASC), $$21(ASC) ] |PARTITIONED|
- project ([$$20, $$21, $$18])
+ -- SORT_MERGE_EXCHANGE [$$21(ASC), $$22(ASC) ] |PARTITIONED|
+ project ([$$21, $$22, $$19])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$18] <- [{"shipdate": substring($$c.getField(10), 0, 4), "suppkey": gt($$19, 0)}]
+ assign [$$19] <- [{"shipdate": substring($$c.getField(10), 0, 4), "suppkey": gt($$20, 0)}]
-- ASSIGN |PARTITIONED|
limit 5
-- STREAM_LIMIT |PARTITIONED|
- assign [$$19] <- [$$c.getField(2)]
+ assign [$$20] <- [$$c.getField(2)]
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$20, $$21, $$c] <- index-search("LineItem", 0, "test", "LineItem", FALSE, FALSE, 2, $$25, $$26, 2, $$25, $$26, TRUE, TRUE, TRUE) condition (lt($$c.getField(2), 150)) limit 5
+ unnest-map [$$21, $$22, $$c] <- index-search("LineItem", 0, "test", "LineItem", FALSE, FALSE, 2, $$26, $$27, 2, $$26, $$27, TRUE, TRUE, TRUE) condition (lt($$c.getField(2), 150)) limit 5
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$25) (ASC, $$26)
- -- STABLE_SORT [$$25(ASC), $$26(ASC)] |PARTITIONED|
+ order (ASC, $$26) (ASC, $$27)
+ -- STABLE_SORT [$$26(ASC), $$27(ASC)] |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$25, $$26])
+ project ([$$26, $$27])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$24, $$25, $$26] <- index-search("idx_LineItem_suppkey", 0, "test", "LineItem", FALSE, FALSE, 0, 1, $$23, TRUE, FALSE, FALSE)
+ unnest-map [$$25, $$26, $$27] <- index-search("idx_LineItem_suppkey", 0, "test", "LineItem", FALSE, FALSE, 0, 1, $$24, TRUE, FALSE, FALSE)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$23] <- [150]
+ assign [$$24] <- [150]
-- ASSIGN |PARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.adm
index 4aba1a7..d070b2b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.adm
@@ -7,28 +7,28 @@
project ([$$c])
-- STREAM_PROJECT |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$13(ASC), $$14(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$14(ASC), $$15(ASC) ] |PARTITIONED|
limit 10
-- STREAM_LIMIT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$13, $$14, $$c] <- index-search("LineItem", 0, "test", "LineItem", FALSE, FALSE, 2, $$18, $$19, 2, $$18, $$19, TRUE, TRUE, TRUE) condition (lt($$c.getField(2), 150)) limit 10
+ unnest-map [$$14, $$15, $$c] <- index-search("LineItem", 0, "test", "LineItem", FALSE, FALSE, 2, $$19, $$20, 2, $$19, $$20, TRUE, TRUE, TRUE) condition (lt($$c.getField(2), 150)) limit 10
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$18) (ASC, $$19)
- -- STABLE_SORT [$$18(ASC), $$19(ASC)] |PARTITIONED|
+ order (ASC, $$19) (ASC, $$20)
+ -- STABLE_SORT [$$19(ASC), $$20(ASC)] |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$18, $$19])
+ project ([$$19, $$20])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$17, $$18, $$19] <- index-search("idx_LineItem_suppkey", 0, "test", "LineItem", FALSE, FALSE, 0, 1, $$16, TRUE, FALSE, FALSE)
+ unnest-map [$$18, $$19, $$20] <- index-search("idx_LineItem_suppkey", 0, "test", "LineItem", FALSE, FALSE, 0, 1, $$17, TRUE, FALSE, FALSE)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$16] <- [150]
+ assign [$$17] <- [150]
-- ASSIGN |PARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.adm
index f611c2b..1e25eea 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.adm
@@ -7,28 +7,28 @@
project ([$$c])
-- STREAM_PROJECT |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$15(ASC), $$16(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$16(ASC), $$17(ASC) ] |PARTITIONED|
limit 10
-- STREAM_LIMIT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$15, $$16, $$c] <- index-search("LineItem", 0, "test", "LineItem", FALSE, FALSE, 2, $$20, $$21, 2, $$20, $$21, TRUE, TRUE, TRUE) condition (lt($$c.getField(2), 150)) limit 10
+ unnest-map [$$16, $$17, $$c] <- index-search("LineItem", 0, "test", "LineItem", FALSE, FALSE, 2, $$21, $$22, 2, $$21, $$22, TRUE, TRUE, TRUE) condition (lt($$c.getField(2), 150)) limit 10
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$20) (ASC, $$21)
- -- STABLE_SORT [$$20(ASC), $$21(ASC)] |PARTITIONED|
+ order (ASC, $$21) (ASC, $$22)
+ -- STABLE_SORT [$$21(ASC), $$22(ASC)] |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$20, $$21])
+ project ([$$21, $$22])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$19, $$20, $$21] <- index-search("idx_LineItem_suppkey", 0, "test", "LineItem", FALSE, FALSE, 0, 1, $$18, TRUE, FALSE, FALSE)
+ unnest-map [$$20, $$21, $$22] <- index-search("idx_LineItem_suppkey", 0, "test", "LineItem", FALSE, FALSE, 0, 1, $$19, TRUE, FALSE, FALSE)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$18] <- [150]
+ assign [$$19] <- [150]
-- ASSIGN |PARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.adm
index 82e42e8..a1f79bb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.adm
@@ -7,12 +7,12 @@
project ([$$paper])
-- STREAM_PROJECT |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$13(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$14(ASC) ] |PARTITIONED|
limit 10
-- STREAM_LIMIT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$13, $$paper] <- test.DBLP1 condition (contains($$paper.getField(1), "kimL89")) limit 10
+ data-scan []<-[$$14, $$paper] <- test.DBLP1 condition (contains($$paper.getField(1), "kimL89")) limit 10
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.adm
index 9fd4ea8..957c52b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.adm
@@ -1,4 +1,4 @@
-distribute result [$$33]
+distribute result [$$35]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
@@ -6,57 +6,57 @@
-- STREAM_LIMIT |UNPARTITIONED|
exchange
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- project ([$$33])
+ project ([$$35])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$33] <- [{"dblpid": $$34}]
+ assign [$$35] <- [{"dblpid": $$36}]
-- ASSIGN |PARTITIONED|
limit 2
-- STREAM_LIMIT |PARTITIONED|
- project ([$$34])
+ project ([$$36])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (eq($$34, $$37))
- -- HYBRID_HASH_JOIN [$$34][$$37] |PARTITIONED|
+ join (eq($$36, $$39))
+ -- HYBRID_HASH_JOIN [$$36][$$39] |PARTITIONED|
exchange
- -- HASH_PARTITION_EXCHANGE [$$34] |PARTITIONED|
- project ([$$34])
+ -- HASH_PARTITION_EXCHANGE [$$36] |PARTITIONED|
+ project ([$$36])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$34] <- [$$d.getField(1)]
+ assign [$$36] <- [$$d.getField(1)]
-- ASSIGN |PARTITIONED|
project ([$$d])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$35, $$d] <- test.DBLP1
+ data-scan []<-[$$37, $$d] <- test.DBLP1
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange
- -- HASH_PARTITION_EXCHANGE [$$37] |PARTITIONED|
- project ([$$37])
+ -- HASH_PARTITION_EXCHANGE [$$39] |PARTITIONED|
+ project ([$$39])
-- STREAM_PROJECT |UNPARTITIONED|
- assign [$$37] <- [get-item($$26, 0).getField(0).getField(1)]
+ assign [$$39] <- [get-item($$28, 0).getField(0).getField(1)]
-- ASSIGN |UNPARTITIONED|
- aggregate [$$26] <- [listify($$25)]
+ aggregate [$$28] <- [listify($$27)]
-- AGGREGATE |UNPARTITIONED|
limit 1
-- STREAM_LIMIT |UNPARTITIONED|
- project ([$$25])
+ project ([$$27])
-- STREAM_PROJECT |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$36(ASC) ] |PARTITIONED|
- project ([$$36, $$25])
+ -- SORT_MERGE_EXCHANGE [$$38(ASC) ] |PARTITIONED|
+ project ([$$38, $$27])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$25] <- [{"d": $$d}]
+ assign [$$27] <- [{"d": $$d}]
-- ASSIGN |PARTITIONED|
limit 1
-- STREAM_LIMIT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$36, $$d] <- test.DBLP1 condition (ends-with($$d.getField(1), "Blakeley95")) limit 1
+ data-scan []<-[$$38, $$d] <- test.DBLP1 condition (ends-with($$d.getField(1), "Blakeley95")) limit 1
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.adm
index 8ffb399..7509819 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.adm
@@ -1,26 +1,26 @@
-distribute result [$$17]
+distribute result [$$18]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
limit 1
-- STREAM_LIMIT |UNPARTITIONED|
- project ([$$17])
+ project ([$$18])
-- STREAM_PROJECT |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$19(ASC) ] |PARTITIONED|
- project ([$$19, $$17])
+ -- SORT_MERGE_EXCHANGE [$$20(ASC) ] |PARTITIONED|
+ project ([$$20, $$18])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$17] <- [{"$1": substring($$18, 0, 21)}]
+ assign [$$18] <- [{"$1": substring($$19, 0, 21)}]
-- ASSIGN |PARTITIONED|
limit 1
-- STREAM_LIMIT |PARTITIONED|
- project ([$$19, $$18])
+ project ([$$20, $$19])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$18] <- [$$DBLP1.getField(1)]
+ assign [$$19] <- [$$DBLP1.getField(1)]
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$19, $$DBLP1] <- test.DBLP1 condition (gt($$DBLP1.getField(1), "series")) limit 1
+ data-scan []<-[$$20, $$DBLP1] <- test.DBLP1 condition (gt($$DBLP1.getField(1), "series")) limit 1
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.adm
index bc86e3a..5b408ad 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.adm
@@ -1,26 +1,26 @@
-distribute result [$$20]
+distribute result [$$21]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
limit 2
-- STREAM_LIMIT |UNPARTITIONED|
- project ([$$20])
+ project ([$$21])
-- STREAM_PROJECT |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$23(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$24(ASC) ] |PARTITIONED|
limit 2
-- STREAM_LIMIT |PARTITIONED|
- project ([$$23, $$20])
+ project ([$$24, $$21])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$20] <- [$$24.getField("lang")]
+ assign [$$21] <- [$$25.getField("lang")]
-- ASSIGN |PARTITIONED|
- project ([$$23, $$24])
+ project ([$$24, $$25])
-- STREAM_PROJECT |PARTITIONED|
- assign [$$24] <- [$$t.getField("user")]
+ assign [$$25] <- [$$t.getField("user")]
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$23, $$t] <- test.TweetMessages condition (and(ge($$t.getField("user").getField("friends_count"), 0), le($$t.getField("user").getField("friends_count"), 150))) limit 2
+ data-scan []<-[$$24, $$t] <- test.TweetMessages condition (and(ge($$t.getField("user").getField("friends_count"), 0), le($$t.getField("user").getField("friends_count"), 150))) limit 2
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.3.adm
index a810489..ee3e565 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.3.adm
@@ -7,12 +7,12 @@
project ([$$paper])
-- STREAM_PROJECT |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$11(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$12(ASC) ] |PARTITIONED|
limit 10
-- STREAM_LIMIT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$11, $$paper] <- test.DBLP1 limit 10
+ data-scan []<-[$$12, $$paper] <- test.DBLP1 limit 10
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.5.adm
index 41880a5..939637d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.5.adm
@@ -7,12 +7,12 @@
project ([$$paper])
-- STREAM_PROJECT |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$13(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$14(ASC) ] |PARTITIONED|
limit 10
-- STREAM_LIMIT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$13, $$paper] <- test.DBLP1 limit 10
+ data-scan []<-[$$14, $$paper] <- test.DBLP1 limit 10
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/list/enforcing_item_type/enforcing_item_type.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/list/enforcing_item_type/enforcing_item_type.1.adm
index 81de56f..f0da628 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/list/enforcing_item_type/enforcing_item_type.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/list/enforcing_item_type/enforcing_item_type.1.adm
@@ -1,10 +1,10 @@
-distribute result [$$19]
+distribute result [$$20]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- project ([$$19])
+ project ([$$20])
-- STREAM_PROJECT |UNPARTITIONED|
- assign [$$19] <- [{"id": get-item($$t, 0), "v": get-item($$t, 1)}]
+ assign [$$20] <- [{"id": get-item($$t, 0), "v": get-item($$t, 1)}]
-- ASSIGN |UNPARTITIONED|
unnest $$t <- scan-collection(ordered-list-constructor(ordered-list-constructor(29, cast({ f1: "a", f2: 3 }))))
-- UNNEST |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/list/list-star_01/list-star_01.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/list/list-star_01/list-star_01.3.adm
new file mode 100644
index 0000000..7c99ec3
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/list/list-star_01/list-star_01.3.adm
@@ -0,0 +1 @@
+{ "t1": { "a": [ "a_val1", "a_val2", "a_val3" ], "b": [ "b_val1", "b_val2", "b_val3" ] }, "t2": { "compType": [ { "sth": 33 }, { "sth": 44 } ], "followers": [ null, [ { "a": "a_val1", "b": "b_val1" }, { "a": "a_val2", "b": "b_val2" }, { "a": "a_val3", "b": "b_val3" } ] ], "id": [ 1, 2 ] }, "t3": { "a": [ "a_val1", "a_val2", "a_val3" ], "b": [ "b_val1", "b_val2", "b_val3" ] }, "t4": { "a": [ "a_val1", null, "a_val3" ], "b": [ "b_val1", "b_val2", "b_val3" ] }, "t5": { "a": [ "a_val1", null, "a_val3" ], "b": [ "b_val1", "b_val2", "b_val3" ] }, "t6": { "a": [ "a_val1", null, "a_val3" ], "b": [ "b_val1", "b_val2", "b_val3" ], "c": [ null, null, "c_val3" ] }, "t7": { "a": [ 5, 3.2, "a_val3" ], "b": [ "b_val1", "b_val2", "b_val3" ], "c": [ null, null, "c_val3" ] }, "t8": { "a": [ "a_val1", null, "a_val3" ], "b": [ "b_val1", null, "b_val3" ] }, "t9": { "a": [ "a_val1", null, "a_val3" ], "b": [ "b_val1", null, "b_val3" ] }, "t10": { "a": [ "a_val1", null, "a_val3" ], "b": [ "b_val1", null, "b_val3" ] }, "t11": { "a": [ "a_val1", null, "a_val3" ], "b": [ "b_val1", null, "b_val3" ] }, "t12": { "a": [ "a_val1", null, null ], "b": [ "b_val1", null, null ] }, "t17": null, "t19": null, "t20": [ { }, { "$1": { "a": [ "a_val1", "a_val2", "a_val3" ], "b": [ "b_val1", "b_val2", "b_val3" ] } } ] }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.2.adm
new file mode 100644
index 0000000..4b1e4bc
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.2.adm
@@ -0,0 +1,4 @@
+true
+true
+true
+true
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.3.adm
new file mode 100644
index 0000000..aafd2d0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.3.adm
@@ -0,0 +1,18 @@
+distribute result [$$14]
+-- DISTRIBUTE_RESULT |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ assign [$$14] <- [TRUE]
+ -- ASSIGN |UNPARTITIONED|
+ project ([])
+ -- STREAM_PROJECT |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ order (ASC, $$x)
+ -- STABLE_SORT [$$x(ASC)] |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ unnest $$x <- range(1, 4)
+ -- UNNEST |UNPARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.4.adm
new file mode 100644
index 0000000..5d73c0d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.4.adm
@@ -0,0 +1,4 @@
+true
+true
+false
+false
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.5.adm
new file mode 100644
index 0000000..7209f96
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.5.adm
@@ -0,0 +1,18 @@
+distribute result [$$14]
+-- DISTRIBUTE_RESULT |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ project ([$$14])
+ -- STREAM_PROJECT |UNPARTITIONED|
+ assign [$$14] <- [le($$x, 2)]
+ -- ASSIGN |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ order (ASC, $$x)
+ -- STABLE_SORT [$$x(ASC)] |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ unnest $$x <- range(1, 4)
+ -- UNNEST |UNPARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.6.adm
new file mode 100644
index 0000000..351c8e5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.6.adm
@@ -0,0 +1,18 @@
+distribute result [$$14]
+-- DISTRIBUTE_RESULT |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ project ([$$14])
+ -- STREAM_PROJECT |UNPARTITIONED|
+ assign [$$14] <- [or(null, le($$x, 2))]
+ -- ASSIGN |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ order (ASC, $$x)
+ -- STABLE_SORT [$$x(ASC)] |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ unnest $$x <- range(1, 4)
+ -- UNNEST |UNPARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.7.adm
new file mode 100644
index 0000000..d2f3187
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.7.adm
@@ -0,0 +1,18 @@
+distribute result [$$16]
+-- DISTRIBUTE_RESULT |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ project ([$$16])
+ -- STREAM_PROJECT |UNPARTITIONED|
+ assign [$$16] <- [or(TRUE, lt(get-year(current-date()), $$x))]
+ -- ASSIGN |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ order (ASC, $$x)
+ -- STABLE_SORT [$$x(ASC)] |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ unnest $$x <- range(1, 4)
+ -- UNNEST |UNPARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/multipart-dataverse/special_chars_2/special_chars_2.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/multipart-dataverse/special_chars_2/special_chars_2.2.adm
new file mode 100644
index 0000000..9abda4f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/multipart-dataverse/special_chars_2/special_chars_2.2.adm
@@ -0,0 +1,6 @@
+{ "CanonicalName": "A", "DisplayName": "A", "NameParts": [ "A" ] }
+{ "CanonicalName": "B.C", "DisplayName": "B.C", "NameParts": [ "B", "C" ] }
+{ "CanonicalName": "C@.D@.E", "DisplayName": "`C.D.E`", "NameParts": [ "C.D.E" ] }
+{ "CanonicalName": "Default", "DisplayName": "Default", "NameParts": [ "Default" ] }
+{ "CanonicalName": "Metadata", "DisplayName": "Metadata", "NameParts": [ "Metadata" ] }
+{ "CanonicalName": "a-A.b_B.c$C.z@.Z", "DisplayName": "`a-A`.b_B.c$C.`z.Z`", "NameParts": [ "a-A", "b_B", "c$C", "z.Z" ] }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.13.adm
index 73492d27..e14f391 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.13.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.13.adm
@@ -5,28 +5,28 @@
project ([$$l])
-- STREAM_PROJECT |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$15(ASC), $$16(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$16(ASC), $$17(ASC) ] |PARTITIONED|
select (eq($$l.getField(10), "1994-01-20"))
-- STREAM_SELECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$15, $$16, $$l] <- index-search("LineItem", 0, "tpch", "LineItem", FALSE, FALSE, 2, $$23, $$24, 2, $$23, $$24, TRUE, TRUE, TRUE)
+ unnest-map [$$16, $$17, $$l] <- index-search("LineItem", 0, "tpch", "LineItem", FALSE, FALSE, 2, $$24, $$25, 2, $$24, $$25, TRUE, TRUE, TRUE)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$23) (ASC, $$24)
- -- STABLE_SORT [$$23(ASC), $$24(ASC)] |PARTITIONED|
+ order (ASC, $$24) (ASC, $$25)
+ -- STABLE_SORT [$$24(ASC), $$25(ASC)] |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$23, $$24])
+ project ([$$24, $$25])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$22, $$23, $$24] <- index-search("lineitem_shipdateIx", 0, "tpch", "LineItem", FALSE, FALSE, 1, $$20, 1, $$21, TRUE, TRUE, TRUE)
+ unnest-map [$$23, $$24, $$25] <- index-search("lineitem_shipdateIx", 0, "tpch", "LineItem", FALSE, FALSE, 1, $$21, 1, $$22, TRUE, TRUE, TRUE)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$20, $$21] <- ["1994-01-20", "1994-01-20"]
+ assign [$$21, $$22] <- ["1994-01-20", "1994-01-20"]
-- ASSIGN |PARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.8.adm
index 73492d27..e14f391 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.8.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.8.adm
@@ -5,28 +5,28 @@
project ([$$l])
-- STREAM_PROJECT |PARTITIONED|
exchange
- -- SORT_MERGE_EXCHANGE [$$15(ASC), $$16(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$16(ASC), $$17(ASC) ] |PARTITIONED|
select (eq($$l.getField(10), "1994-01-20"))
-- STREAM_SELECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$15, $$16, $$l] <- index-search("LineItem", 0, "tpch", "LineItem", FALSE, FALSE, 2, $$23, $$24, 2, $$23, $$24, TRUE, TRUE, TRUE)
+ unnest-map [$$16, $$17, $$l] <- index-search("LineItem", 0, "tpch", "LineItem", FALSE, FALSE, 2, $$24, $$25, 2, $$24, $$25, TRUE, TRUE, TRUE)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$23) (ASC, $$24)
- -- STABLE_SORT [$$23(ASC), $$24(ASC)] |PARTITIONED|
+ order (ASC, $$24) (ASC, $$25)
+ -- STABLE_SORT [$$24(ASC), $$25(ASC)] |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$23, $$24])
+ project ([$$24, $$25])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$22, $$23, $$24] <- index-search("lineitem_shipdateIx", 0, "tpch", "LineItem", FALSE, FALSE, 1, $$20, 1, $$21, TRUE, TRUE, TRUE)
+ unnest-map [$$23, $$24, $$25] <- index-search("lineitem_shipdateIx", 0, "tpch", "LineItem", FALSE, FALSE, 1, $$21, 1, $$22, TRUE, TRUE, TRUE)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- assign [$$20, $$21] <- ["1994-01-20", "1994-01-20"]
+ assign [$$21, $$22] <- ["1994-01-20", "1994-01-20"]
-- ASSIGN |PARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/statement-params/index_01/index_01.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/statement-params/index_01/index_01.3.adm
new file mode 100644
index 0000000..0881670
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/statement-params/index_01/index_01.3.adm
@@ -0,0 +1,8 @@
+{ "id": 299, "fname": "Julio", "lname": "Iorio", "age": 37 }
+{ "id": 514, "fname": "Julio", "lname": "Ruben", "age": 41 }
+{ "id": 671, "fname": "Julio", "lname": "Vanpatten", "age": 30 }
+{ "id": 741, "fname": "Julio", "lname": "Mattocks", "age": 38 }
+{ "id": 881, "fname": "Julio", "lname": "Isa", "age": 38 }
+{ "id": 1418, "fname": "Julio", "lname": "Damore", "age": 27 }
+{ "id": 1430, "fname": "Julio", "lname": "Barkett", "age": 39 }
+{ "id": 8338, "fname": "Julio", "lname": "Bosket", "age": 28 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/statement-params/index_01/index_01.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/statement-params/index_01/index_01.4.adm
new file mode 100644
index 0000000..87c7773
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/statement-params/index_01/index_01.4.adm
@@ -0,0 +1 @@
+{ "id": 881, "fname": "Julio", "lname": "Isa", "age": 38 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/length_multi_code_point_01/length_multi_code_point_01.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/length_multi_code_point_01/length_multi_code_point_01.1.adm
new file mode 100644
index 0000000..721a7e1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/length_multi_code_point_01/length_multi_code_point_01.1.adm
@@ -0,0 +1 @@
+[ 7, 9, 6 ]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/position/offset0/pos0_multi_code_point/pos0_multi_code_point.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/position/offset0/pos0_multi_code_point/pos0_multi_code_point.1.adm
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/position/offset0/pos0_multi_code_point/pos0_multi_code_point.1.adm
@@ -0,0 +1 @@
+7
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/position/offset1/pos1_multi_code_point/pos1_multi_code_point.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/position/offset1/pos1_multi_code_point/pos1_multi_code_point.1.adm
new file mode 100644
index 0000000..45a4fb7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/position/offset1/pos1_multi_code_point/pos1_multi_code_point.1.adm
@@ -0,0 +1 @@
+8
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/regexp_contains/regexp_contains/regexp_contains.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/regexp_contains/regexp_contains/regexp_contains.3.adm
index 3215658..5992661 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/regexp_contains/regexp_contains/regexp_contains.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/regexp_contains/regexp_contains/regexp_contains.3.adm
@@ -12,4 +12,5 @@
true
true
false
+true
true
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/reverse/reverse.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/reverse/reverse.1.adm
index a2b8b2c..d0669c4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/reverse/reverse.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/reverse/reverse.1.adm
@@ -1 +1 @@
-{ "t1": [ true, true ], "t2": "", "t3": "dcba", "t4": [ 98, 8457, 247, 8451, 215, 97 ], "t5": [ "ba", "cba", "dcba" ] }
\ No newline at end of file
+{ "t1": [ true, true ], "t2": "", "t3": "dcba", "t4": [ 98, 8457, 247, 8451, 215, 97 ], "t5": [ "ba", "cba", "dcba" ], "t6": "đłđ¨" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/string_to_codepoint_multi_codepoints_01/string_to_codepoint_multi_codepoints_01.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/string_to_codepoint_multi_codepoints_01/string_to_codepoint_multi_codepoints_01.1.adm
new file mode 100644
index 0000000..2e6f72f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/string_to_codepoint_multi_codepoints_01/string_to_codepoint_multi_codepoints_01.1.adm
@@ -0,0 +1 @@
+[ [ 128105, 8205, 128105, 8205, 128103, 8205, 128102 ], "đŠđŠđ§đŚ" ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substring_multi_codepoint_01/substring_multi_codepoint_01.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substring_multi_codepoint_01/substring_multi_codepoint_01.1.adm
new file mode 100644
index 0000000..5157e8a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/substring_multi_codepoint_01/substring_multi_codepoint_01.1.adm
@@ -0,0 +1 @@
+{ "2 people in a 4-people family": "đ¨đŚ", "Korean test 0": "áá
łáŻ", "Korean test 1": "áŤá" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/trim/trim.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/trim/trim.1.adm
index 410cb004..50ab5d0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/string/trim/trim.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/string/trim/trim.1.adm
@@ -1 +1 @@
-[ "", "", "abc", "abcd", null, null, "", "", "bc", "bc", null, null, null, null, null, null ]
+[ "", "", "abc", "abcd", null, null, "", "", "bc", "bc", null, null, null, null, null, null, "đ¸", "đŠđ§", "đŠđ§đŚ", "đ¨đŠđ§" ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.10.adm
new file mode 100644
index 0000000..c15304d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.10.adm
@@ -0,0 +1,3 @@
+{ "staff": "Zack", "student": "Karen" }
+{ "staff": "Zack", "student": "Steve" }
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.11.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.11.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.12.adm
new file mode 100644
index 0000000..c15304d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.12.adm
@@ -0,0 +1,3 @@
+{ "staff": "Zack", "student": "Karen" }
+{ "staff": "Zack", "student": "Steve" }
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.13.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.13.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.14.adm
new file mode 100644
index 0000000..c15304d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.14.adm
@@ -0,0 +1,3 @@
+{ "staff": "Zack", "student": "Karen" }
+{ "staff": "Zack", "student": "Steve" }
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.3.adm
index f38e40b..93c0eb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.3.adm
@@ -1,5 +1,9 @@
{ "staff": "Franklin", "student": "Olga" }
-{ "staff": "Maryann", "student": "Charles" }
-{ "staff": "Maryann", "student": "Frank" }
-{ "staff": "Maryann", "student": "Mary" }
-{ "staff": "Maryann", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.5.adm
index f38e40b..93c0eb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.5.adm
@@ -1,5 +1,9 @@
{ "staff": "Franklin", "student": "Olga" }
-{ "staff": "Maryann", "student": "Charles" }
-{ "staff": "Maryann", "student": "Frank" }
-{ "staff": "Maryann", "student": "Mary" }
-{ "staff": "Maryann", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.7.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.7.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.8.adm
new file mode 100644
index 0000000..c15304d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.8.adm
@@ -0,0 +1,3 @@
+{ "staff": "Zack", "student": "Karen" }
+{ "staff": "Zack", "student": "Steve" }
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.9.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_after/interval_after.9.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.10.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.10.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.11.adm
new file mode 100644
index 0000000..c15304d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.11.adm
@@ -0,0 +1,3 @@
+{ "staff": "Zack", "student": "Karen" }
+{ "staff": "Zack", "student": "Steve" }
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.12.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.12.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.13.adm
new file mode 100644
index 0000000..c15304d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.13.adm
@@ -0,0 +1,3 @@
+{ "staff": "Zack", "student": "Karen" }
+{ "staff": "Zack", "student": "Steve" }
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.14.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.14.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
index 509693a..c15304d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.3.adm
@@ -1,3 +1,3 @@
{ "staff": "Zack", "student": "Karen" }
{ "staff": "Zack", "student": "Steve" }
-{ "staff": "Zack", "student": "Tess" }
\ No newline at end of file
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.4.adm
index f38e40b..93c0eb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.4.adm
@@ -1,5 +1,9 @@
{ "staff": "Franklin", "student": "Olga" }
-{ "staff": "Maryann", "student": "Charles" }
-{ "staff": "Maryann", "student": "Frank" }
-{ "staff": "Maryann", "student": "Mary" }
-{ "staff": "Maryann", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.5.adm
index 509693a..c15304d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.5.adm
@@ -1,3 +1,3 @@
{ "staff": "Zack", "student": "Karen" }
{ "staff": "Zack", "student": "Steve" }
-{ "staff": "Zack", "student": "Tess" }
\ No newline at end of file
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.6.adm
index f38e40b..93c0eb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.6.adm
@@ -1,5 +1,9 @@
{ "staff": "Franklin", "student": "Olga" }
-{ "staff": "Maryann", "student": "Charles" }
-{ "staff": "Maryann", "student": "Frank" }
-{ "staff": "Maryann", "student": "Mary" }
-{ "staff": "Maryann", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.7.adm
new file mode 100644
index 0000000..c15304d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.7.adm
@@ -0,0 +1,3 @@
+{ "staff": "Zack", "student": "Karen" }
+{ "staff": "Zack", "student": "Steve" }
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.8.adm
new file mode 100644
index 0000000..93c0eb5
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.8.adm
@@ -0,0 +1,9 @@
+{ "staff": "Franklin", "student": "Olga" }
+{ "staff": "Jake", "student": "Charles" }
+{ "staff": "Jake", "student": "Frank" }
+{ "staff": "Jake", "student": "Mary" }
+{ "staff": "Jake", "student": "Olga" }
+{ "staff": "MaryAnn", "student": "Charles" }
+{ "staff": "MaryAnn", "student": "Frank" }
+{ "staff": "MaryAnn", "student": "Mary" }
+{ "staff": "MaryAnn", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.9.adm
new file mode 100644
index 0000000..c15304d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_before/interval_before.9.adm
@@ -0,0 +1,3 @@
+{ "staff": "Zack", "student": "Karen" }
+{ "staff": "Zack", "student": "Steve" }
+{ "staff": "Zack", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.10.adm
new file mode 100644
index 0000000..90e39d1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.10.adm
@@ -0,0 +1,15 @@
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.11.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.11.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.12.adm
new file mode 100644
index 0000000..90e39d1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.12.adm
@@ -0,0 +1,15 @@
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.13.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.13.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.14.adm
new file mode 100644
index 0000000..90e39d1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.14.adm
@@ -0,0 +1,15 @@
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.4.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.6.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.6.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.7.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.7.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.8.adm
new file mode 100644
index 0000000..90e39d1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.8.adm
@@ -0,0 +1,15 @@
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.9.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covered_by/interval_covered_by.9.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.10.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.10.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.11.adm
new file mode 100644
index 0000000..90e39d1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.11.adm
@@ -0,0 +1,15 @@
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.12.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.12.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.13.adm
new file mode 100644
index 0000000..90e39d1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.13.adm
@@ -0,0 +1,15 @@
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.14.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.14.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.3.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.3.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.5.adm
index 4e22101..90e39d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.5.adm
@@ -3,9 +3,9 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.7.adm
new file mode 100644
index 0000000..90e39d1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.7.adm
@@ -0,0 +1,15 @@
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.8.adm
new file mode 100644
index 0000000..1a67e10
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.8.adm
@@ -0,0 +1,4 @@
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.9.adm
new file mode 100644
index 0000000..90e39d1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_covers/interval_covers.9.adm
@@ -0,0 +1,15 @@
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.10.adm
new file mode 100644
index 0000000..1fc19e7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.10.adm
@@ -0,0 +1,7 @@
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.11.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.11.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.12.adm
new file mode 100644
index 0000000..1fc19e7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.12.adm
@@ -0,0 +1,7 @@
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.13.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.13.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.14.adm
new file mode 100644
index 0000000..1fc19e7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.14.adm
@@ -0,0 +1,7 @@
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.4.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.6.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.6.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.7.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.7.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.8.adm
new file mode 100644
index 0000000..1fc19e7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.8.adm
@@ -0,0 +1,7 @@
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.9.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ended_by/interval_ended_by.9.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.10.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.10.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.11.adm
new file mode 100644
index 0000000..1fc19e7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.11.adm
@@ -0,0 +1,7 @@
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.12.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.12.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.13.adm
new file mode 100644
index 0000000..1fc19e7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.13.adm
@@ -0,0 +1,7 @@
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.14.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.14.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.3.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.3.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.5.adm
index 5af9101..1fc19e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.5.adm
@@ -1,7 +1,7 @@
{ "staff": "Elisabeth", "student": "Steve" }
{ "staff": "Elisabeth", "student": "Tess" }
{ "staff": "Franklin", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Steve" }
{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.7.adm
new file mode 100644
index 0000000..1fc19e7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.7.adm
@@ -0,0 +1,7 @@
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.8.adm
new file mode 100644
index 0000000..5857139
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.8.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.9.adm
new file mode 100644
index 0000000..1fc19e7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_ends/interval_ends.9.adm
@@ -0,0 +1,7 @@
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.10.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.10.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.11.adm
new file mode 100644
index 0000000..8cafa72
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.11.adm
@@ -0,0 +1,3 @@
+{ "staff": "Alex", "student": "Tess" }
+{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.12.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.12.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.13.adm
new file mode 100644
index 0000000..8cafa72
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.13.adm
@@ -0,0 +1,3 @@
+{ "staff": "Alex", "student": "Tess" }
+{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.14.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.14.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.3.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.5.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.5.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.7.adm
new file mode 100644
index 0000000..8cafa72
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.7.adm
@@ -0,0 +1,3 @@
+{ "staff": "Alex", "student": "Tess" }
+{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.8.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.8.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.9.adm
new file mode 100644
index 0000000..8cafa72
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_meets/interval_meets.9.adm
@@ -0,0 +1,3 @@
+{ "staff": "Alex", "student": "Tess" }
+{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.10.adm
new file mode 100644
index 0000000..8cafa72
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.10.adm
@@ -0,0 +1,3 @@
+{ "staff": "Alex", "student": "Tess" }
+{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.11.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.11.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.12.adm
new file mode 100644
index 0000000..8cafa72
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.12.adm
@@ -0,0 +1,3 @@
+{ "staff": "Alex", "student": "Tess" }
+{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.13.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.13.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.14.adm
new file mode 100644
index 0000000..8cafa72
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.14.adm
@@ -0,0 +1,3 @@
+{ "staff": "Alex", "student": "Tess" }
+{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.4.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.4.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.6.adm
index 5568195..8cafa72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.6.adm
@@ -1,2 +1,3 @@
{ "staff": "Alex", "student": "Tess" }
{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.7.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.7.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.8.adm
new file mode 100644
index 0000000..8cafa72
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.8.adm
@@ -0,0 +1,3 @@
+{ "staff": "Alex", "student": "Tess" }
+{ "staff": "Henry", "student": "Tess" }
+{ "staff": "Jake", "student": "Tess" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.9.adm
new file mode 100644
index 0000000..cd4b3ba
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_met_by/interval_met_by.9.adm
@@ -0,0 +1,4 @@
+{ "staff": "Alex", "student": "Olga" }
+{ "staff": "Franklin", "student": "Charles" }
+{ "staff": "Franklin", "student": "Frank" }
+{ "staff": "Henry", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.10.adm
new file mode 100644
index 0000000..7ab4d4f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.10.adm
@@ -0,0 +1,8 @@
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.11.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.11.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.12.adm
new file mode 100644
index 0000000..7ab4d4f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.12.adm
@@ -0,0 +1,8 @@
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.13.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.13.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.14.adm
new file mode 100644
index 0000000..7ab4d4f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.14.adm
@@ -0,0 +1,8 @@
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.4.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.6.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.7.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.7.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.8.adm
new file mode 100644
index 0000000..7ab4d4f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.8.adm
@@ -0,0 +1,8 @@
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.9.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapped_by/interval_overlapped_by.9.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.10.adm
new file mode 100644
index 0000000..dc01c06
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.10.adm
@@ -0,0 +1,37 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Mary" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.11.adm
new file mode 100644
index 0000000..dc01c06
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.11.adm
@@ -0,0 +1,37 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Mary" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.12.adm
new file mode 100644
index 0000000..dc01c06
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.12.adm
@@ -0,0 +1,37 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Mary" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.13.adm
new file mode 100644
index 0000000..dc01c06
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.13.adm
@@ -0,0 +1,37 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Mary" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.14.adm
new file mode 100644
index 0000000..dc01c06
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.14.adm
@@ -0,0 +1,37 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Mary" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.3.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.4.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.4.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.4.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.5.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.5.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.6.adm
index 4ecd143..dc01c06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.6.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.6.adm
@@ -19,9 +19,11 @@
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Mary" }
{ "staff": "Henry", "student": "Steve" }
-{ "staff": "Maryann", "student": "Karen" }
-{ "staff": "Maryann", "student": "Steve" }
-{ "staff": "Maryann", "student": "Tess" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
{ "staff": "Vicky", "student": "Charles" }
{ "staff": "Vicky", "student": "Frank" }
{ "staff": "Vicky", "student": "Karen" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.7.adm
new file mode 100644
index 0000000..dc01c06
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.7.adm
@@ -0,0 +1,37 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Mary" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.8.adm
new file mode 100644
index 0000000..dc01c06
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.8.adm
@@ -0,0 +1,37 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Mary" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.9.adm
new file mode 100644
index 0000000..dc01c06
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlapping/interval_overlapping.9.adm
@@ -0,0 +1,37 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Karen" }
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Elisabeth", "student": "Steve" }
+{ "staff": "Elisabeth", "student": "Tess" }
+{ "staff": "Franklin", "student": "Karen" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Mary" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Karen" }
+{ "staff": "MaryAnn", "student": "Steve" }
+{ "staff": "MaryAnn", "student": "Tess" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Karen" }
+{ "staff": "Vicky", "student": "Mary" }
+{ "staff": "Vicky", "student": "Olga" }
+{ "staff": "Vicky", "student": "Steve" }
+{ "staff": "Vicky", "student": "Tess" }
+{ "staff": "Zack", "student": "Charles" }
+{ "staff": "Zack", "student": "Frank" }
+{ "staff": "Zack", "student": "Mary" }
+{ "staff": "Zack", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.10.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.10.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.11.adm
new file mode 100644
index 0000000..7ab4d4f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.11.adm
@@ -0,0 +1,8 @@
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.12.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.12.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.13.adm
new file mode 100644
index 0000000..7ab4d4f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.13.adm
@@ -0,0 +1,8 @@
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.14.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.14.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.3.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.5.adm
index 94ac56a..7ab4d4f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.5.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.5.adm
@@ -4,3 +4,5 @@
{ "staff": "Franklin", "student": "Tess" }
{ "staff": "Henry", "student": "Karen" }
{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.7.adm
new file mode 100644
index 0000000..7ab4d4f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.7.adm
@@ -0,0 +1,8 @@
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.8.adm
new file mode 100644
index 0000000..9e5549f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.8.adm
@@ -0,0 +1,10 @@
+{ "staff": "Alex", "student": "Charles" }
+{ "staff": "Alex", "student": "Frank" }
+{ "staff": "Alex", "student": "Mary" }
+{ "staff": "Elisabeth", "student": "Charles" }
+{ "staff": "Elisabeth", "student": "Frank" }
+{ "staff": "Elisabeth", "student": "Olga" }
+{ "staff": "Franklin", "student": "Mary" }
+{ "staff": "Henry", "student": "Charles" }
+{ "staff": "Henry", "student": "Frank" }
+{ "staff": "Henry", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.9.adm
new file mode 100644
index 0000000..7ab4d4f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_overlaps/interval_overlaps.9.adm
@@ -0,0 +1,8 @@
+{ "staff": "Alex", "student": "Karen" }
+{ "staff": "Alex", "student": "Steve" }
+{ "staff": "Franklin", "student": "Steve" }
+{ "staff": "Franklin", "student": "Tess" }
+{ "staff": "Henry", "student": "Karen" }
+{ "staff": "Henry", "student": "Steve" }
+{ "staff": "Jake", "student": "Karen" }
+{ "staff": "Jake", "student": "Steve" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.10.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.10.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.11.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.11.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.12.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.12.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.13.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.13.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.14.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.14.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.7.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.7.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.8.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.8.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.9.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_started_by/interval_started_by.9.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.10.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.10.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.11.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.11.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.12.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.12.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.13.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.13.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.14.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.14.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.7.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.7.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.8.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.8.adm
new file mode 100644
index 0000000..6cd921a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.8.adm
@@ -0,0 +1,4 @@
+{ "staff": "Elisabeth", "student": "Mary" }
+{ "staff": "Vicky", "student": "Charles" }
+{ "staff": "Vicky", "student": "Frank" }
+{ "staff": "Vicky", "student": "Olga" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.9.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.9.adm
new file mode 100644
index 0000000..54ab54e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins/interval_starts/interval_starts.9.adm
@@ -0,0 +1 @@
+{ "staff": "Zack", "student": "Mary" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_after/interval_after.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_after/interval_after.3.adm
new file mode 100644
index 0000000..393d858
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_after/interval_after.3.adm
@@ -0,0 +1 @@
+{ "$1": 4753 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_before/interval_before.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_before/interval_before.3.adm
new file mode 100644
index 0000000..c114617
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_before/interval_before.3.adm
@@ -0,0 +1 @@
+{ "$1": 4656 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_covered_by/interval_covered_by.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_covered_by/interval_covered_by.3.adm
new file mode 100644
index 0000000..b3d2794
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_covered_by/interval_covered_by.3.adm
@@ -0,0 +1 @@
+{ "$1": 1728 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_covers/interval_covers.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_covers/interval_covers.3.adm
new file mode 100644
index 0000000..81026fe
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_covers/interval_covers.3.adm
@@ -0,0 +1 @@
+{ "$1": 1710 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_overlapped_by/interval_overlapped_by.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_overlapped_by/interval_overlapped_by.3.adm
new file mode 100644
index 0000000..81026fe
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_overlapped_by/interval_overlapped_by.3.adm
@@ -0,0 +1 @@
+{ "$1": 1710 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_overlapping/interval_overlapping.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_overlapping/interval_overlapping.3.adm
new file mode 100644
index 0000000..5e118ee
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_overlapping/interval_overlapping.3.adm
@@ -0,0 +1 @@
+{ "$1": 1800 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_overlaps/interval_overlaps.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_overlaps/interval_overlaps.3.adm
new file mode 100644
index 0000000..2dfe912
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/temporal/interval_joins_spilling/interval_overlaps/interval_overlaps.3.adm
@@ -0,0 +1 @@
+{ "$1": 1691 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.4.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.4.adm
new file mode 100644
index 0000000..638ab59
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.4.adm
@@ -0,0 +1,4 @@
+{ "unique1": 98, "unique2": 0, "unique3": 0 }
+{ "unique1": 98, "unique2": 12, "unique3": 98 }
+{ "unique1": 99, "unique2": 25, "unique3": 25 }
+{ "unique1": 99, "unique2": 97, "unique3": 99 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.5.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.5.adm
new file mode 100644
index 0000000..638ab59
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.5.adm
@@ -0,0 +1,4 @@
+{ "unique1": 98, "unique2": 0, "unique3": 0 }
+{ "unique1": 98, "unique2": 12, "unique3": 98 }
+{ "unique1": 99, "unique2": 25, "unique3": 25 }
+{ "unique1": 99, "unique2": 97, "unique3": 99 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.6.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.6.adm
new file mode 100644
index 0000000..355836b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.6.adm
@@ -0,0 +1,6 @@
+{ "alias": "Von", "name": "VonKemble" }
+{ "alias": "Von", "name": "VonKemble" }
+{ "alias": "Willis", "name": "WillisWynne" }
+{ "alias": "Willis", "name": "WillisWynne" }
+{ "alias": "Woodrow", "name": "WoodrowNehling" }
+{ "alias": "Woodrow", "name": "WoodrowNehling" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.7.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.7.adm
new file mode 100644
index 0000000..355836b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.7.adm
@@ -0,0 +1,6 @@
+{ "alias": "Von", "name": "VonKemble" }
+{ "alias": "Von", "name": "VonKemble" }
+{ "alias": "Willis", "name": "WillisWynne" }
+{ "alias": "Willis", "name": "WillisWynne" }
+{ "alias": "Woodrow", "name": "WoodrowNehling" }
+{ "alias": "Woodrow", "name": "WoodrowNehling" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.2.adm
new file mode 100644
index 0000000..e57f576
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.2.adm
@@ -0,0 +1 @@
+{ "f1": 3, "f2": 10 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.3.adm
new file mode 100644
index 0000000..63617d3
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/create-or-replace-function-1/create-or-replace-function-1.3.adm
@@ -0,0 +1,2 @@
+{ "Name": "f1", "Definition": "a - b" }
+{ "Name": "f2", "Definition": "a * b" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/drop-function-1/drop-function-1.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/drop-function-1/drop-function-1.2.adm
new file mode 100644
index 0000000..7813681
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/drop-function-1/drop-function-1.2.adm
@@ -0,0 +1 @@
+5
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/single-line-definition/single-line-definition.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/single-line-definition/single-line-definition.1.adm
index 10c6384..abd3c72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/single-line-definition/single-line-definition.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/single-line-definition/single-line-definition.1.adm
@@ -1 +1 @@
-{ "DataverseName": "test", "Name": "printName", "Arity": "0", "ReturnType": "any", "Definition": "'AsterixDB Shared nothing parallel BDMS'" }
\ No newline at end of file
+{ "DataverseName": "test", "Name": "printName", "Arity": "0", "ReturnType": "", "Definition": "'AsterixDB Shared nothing parallel BDMS'" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf28/udf28.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf28/udf28.1.adm
index 07e4942..eb1d4d6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf28/udf28.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf28/udf28.1.adm
@@ -1 +1 @@
-{ "DataverseName": "test", "Name": "f1", "Arity": "0", "ReturnType": "any", "Definition": "100" }
\ No newline at end of file
+{ "DataverseName": "test", "Name": "f1", "Arity": "0", "ReturnType": "", "Definition": "100" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf32_metadata/udf32_metadata.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf32_metadata/udf32_metadata.2.adm
index 07f3289..7cf89ce 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf32_metadata/udf32_metadata.2.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf32_metadata/udf32_metadata.2.adm
@@ -1,3 +1,3 @@
-{ "fn": { "DataverseName": "test", "Name": "myfn001", "Arity": "0", "Params": [ ], "ReturnType": "any", "Definition": "42", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ ] } }
-{ "fn": { "DataverseName": "test", "Name": "myfn002", "Arity": "1", "Params": [ "a" ], "ReturnType": "any", "Definition": "a", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "any" } ] } }
-{ "fn": { "DataverseName": "test", "Name": "myfn003", "Arity": "2", "Params": [ "a", "b" ], "ReturnType": "any", "Definition": "a + b", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ], "ParamTypes": [ { "Type": "any" }, { "Type": "any" } ] } }
+{ "fn": { "DataverseName": "test", "Name": "myfn001", "Arity": "0", "Params": [ ], "ReturnType": "", "Definition": "42", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ] } }
+{ "fn": { "DataverseName": "test", "Name": "myfn002", "Arity": "1", "Params": [ "a" ], "ReturnType": "", "Definition": "a", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ] } }
+{ "fn": { "DataverseName": "test", "Name": "myfn003", "Arity": "2", "Params": [ "a", "b" ], "ReturnType": "", "Definition": "a + b", "Language": "SQLPP", "Kind": "SCALAR", "Dependencies": [ [ ], [ ], [ ] ] } }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf33_overloading/udf33_overloading.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf33_overloading/udf33_overloading.2.adm
new file mode 100644
index 0000000..8024624
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf33_overloading/udf33_overloading.2.adm
@@ -0,0 +1 @@
+{ "myfn_1": 2, "myfn_2": 5 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf34/udf34.2.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf34/udf34.2.adm
new file mode 100644
index 0000000..c55eb7a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/user-defined-functions/udf34/udf34.2.adm
@@ -0,0 +1,3 @@
+0
+1
+2
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_number/agg_number.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_number/agg_number.3.ast
index 64386d6..e256cca 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_number/agg_number.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/agg_number/agg_number.3.ast
@@ -5,10 +5,10 @@
:
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -21,10 +21,10 @@
:
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -37,10 +37,10 @@
:
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -53,10 +53,10 @@
:
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -69,10 +69,10 @@
:
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -85,10 +85,10 @@
:
FunctionCall asterix.sql-stddev_samp@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -101,10 +101,10 @@
:
FunctionCall asterix.sql-stddev_pop@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -117,10 +117,10 @@
:
FunctionCall asterix.sql-var_samp@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -133,10 +133,10 @@
:
FunctionCall asterix.sql-var_pop@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -149,10 +149,10 @@
:
FunctionCall asterix.sql-skewness@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -165,10 +165,10 @@
:
FunctionCall asterix.sql-kurtosis@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -181,10 +181,10 @@
:
FunctionCall asterix.sql-count@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -197,10 +197,10 @@
:
FunctionCall asterix.sql-avg@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -213,10 +213,10 @@
:
FunctionCall asterix.sql-sum@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -229,10 +229,10 @@
:
FunctionCall asterix.sql-min@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -245,10 +245,10 @@
:
FunctionCall asterix.sql-max@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -261,10 +261,10 @@
:
FunctionCall asterix.sql-stddev_samp@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -277,10 +277,10 @@
:
FunctionCall asterix.sql-stddev_pop@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -293,10 +293,10 @@
:
FunctionCall asterix.sql-var_samp@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -309,10 +309,10 @@
:
FunctionCall asterix.sql-var_pop@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -325,10 +325,10 @@
:
FunctionCall asterix.sql-skewness@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -341,10 +341,10 @@
:
FunctionCall asterix.sql-kurtosis@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_double/avg_double.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_double/avg_double.4.ast
index 6ed2da5..225a169 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_double/avg_double.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_double/avg_double.4.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.array_avg@1[
+WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -18,6 +18,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_double_null/avg_double_null.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_double_null/avg_double_null.4.ast
index b7ab21d..4f65985 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_double_null/avg_double_null.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_double_null/avg_double_null.4.ast
@@ -6,7 +6,7 @@
:
(
SELECT ELEMENT [
- WINDOW test.array_avg@1[
+ WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_empty_01/avg_empty_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_empty_01/avg_empty_01.3.ast
index c2f543d..f03e0ad 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_empty_01/avg_empty_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_empty_01/avg_empty_01.3.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.array_avg@1[
+WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -30,6 +30,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_float/avg_float.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_float/avg_float.4.ast
index 3351633..e0f92fd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_float/avg_float.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_float/avg_float.4.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.array_avg@1[
+WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -18,6 +18,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_float_null/avg_float_null.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_float_null/avg_float_null.4.ast
index f8904be..8e5e508 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_float_null/avg_float_null.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_float_null/avg_float_null.4.ast
@@ -6,7 +6,7 @@
:
(
SELECT ELEMENT [
- WINDOW test.array_avg@1[
+ WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int16/avg_int16.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int16/avg_int16.4.ast
index 09b14c2..977ece3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int16/avg_int16.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int16/avg_int16.4.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.array_avg@1[
+WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -18,6 +18,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int16_null/avg_int16_null.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int16_null/avg_int16_null.4.ast
index 39ec752..c583e53 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int16_null/avg_int16_null.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int16_null/avg_int16_null.4.ast
@@ -6,7 +6,7 @@
:
(
SELECT ELEMENT [
- WINDOW test.array_avg@1[
+ WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int32/avg_int32.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int32/avg_int32.4.ast
index 08e7eef..b488440 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int32/avg_int32.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int32/avg_int32.4.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.array_avg@1[
+WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -18,6 +18,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int32_null/avg_int32_null.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int32_null/avg_int32_null.4.ast
index 1143883..93783dc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int32_null/avg_int32_null.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int32_null/avg_int32_null.4.ast
@@ -6,7 +6,7 @@
:
(
SELECT ELEMENT [
- WINDOW test.array_avg@1[
+ WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int64/avg_int64.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int64/avg_int64.4.ast
index f156a1b..95c1de1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int64/avg_int64.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int64/avg_int64.4.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.array_avg@1[
+WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -18,6 +18,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int64_null/avg_int64_null.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int64_null/avg_int64_null.4.ast
index 35979d4..ec53307 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int64_null/avg_int64_null.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int64_null/avg_int64_null.4.ast
@@ -6,7 +6,7 @@
:
(
SELECT ELEMENT [
- WINDOW test.array_avg@1[
+ WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int8/avg_int8.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int8/avg_int8.4.ast
index 29133cb..3d5fe2b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int8/avg_int8.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int8/avg_int8.4.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.array_avg@1[
+WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -18,6 +18,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int8_null/avg_int8_null.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int8_null/avg_int8_null.4.ast
index 14ceeb5..51422fa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int8_null/avg_int8_null.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_int8_null/avg_int8_null.4.ast
@@ -6,7 +6,7 @@
:
(
SELECT ELEMENT [
- WINDOW test.array_avg@1[
+ WINDOW asterix.sql-avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_mixed/avg_mixed.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_mixed/avg_mixed.3.ast
index 7fac994..2c42fc1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_mixed/avg_mixed.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/avg_mixed/avg_mixed.3.ast
@@ -6,12 +6,12 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
LiteralExpr [STRING] [hello world]
LiteralExpr [LONG] [10]
- FunctionCall null.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-01-01]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/min_mixed/min_mixed.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/min_mixed/min_mixed.3.ast
index 27e0619..30fc192 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/min_mixed/min_mixed.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/min_mixed/min_mixed.3.ast
@@ -6,12 +6,12 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
LiteralExpr [STRING] [hello world]
LiteralExpr [LONG] [93847382783847382]
- FunctionCall null.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-01-01]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_avg/scalar_avg.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_avg/scalar_avg.3.ast
index 46f9fd5..a866be7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_avg/scalar_avg.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_avg/scalar_avg.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
@@ -19,13 +19,13 @@
:=
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
@@ -34,13 +34,13 @@
:=
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
@@ -49,13 +49,13 @@
:=
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
@@ -64,13 +64,13 @@
:=
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
]
@@ -79,13 +79,13 @@
:=
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_avg_null/scalar_avg_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_avg_null/scalar_avg_null.3.ast
index a06070c..906ae0f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_avg_null/scalar_avg_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_avg_null/scalar_avg_null.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -20,13 +20,13 @@
:=
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -36,13 +36,13 @@
:=
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -52,13 +52,13 @@
:=
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -68,13 +68,13 @@
:=
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -84,13 +84,13 @@
:=
FunctionCall asterix.sql-avg@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_count/scalar_count.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_count/scalar_count.3.ast
index f1abf16..559f7cf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_count/scalar_count.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_count/scalar_count.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
@@ -19,13 +19,13 @@
:=
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
@@ -34,13 +34,13 @@
:=
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
@@ -49,13 +49,13 @@
:=
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
@@ -64,13 +64,13 @@
:=
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
]
@@ -79,13 +79,13 @@
:=
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_count_null/scalar_count_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_count_null/scalar_count_null.3.ast
index 12d3e6f..ca7769c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_count_null/scalar_count_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_count_null/scalar_count_null.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -20,13 +20,13 @@
:=
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -36,13 +36,13 @@
:=
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -52,13 +52,13 @@
:=
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -68,13 +68,13 @@
:=
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -84,13 +84,13 @@
:=
FunctionCall asterix.sql-count@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_max/scalar_max.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_max/scalar_max.3.ast
index c75afa6..9815748 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_max/scalar_max.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_max/scalar_max.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
@@ -19,13 +19,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
@@ -34,13 +34,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
@@ -49,13 +49,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
@@ -64,13 +64,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
]
@@ -79,13 +79,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
]
@@ -103,13 +103,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-03-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-01-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-02-01T00:00:00Z]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_max_null/scalar_max_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_max_null/scalar_max_null.3.ast
index eb42b80..dcde0e5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_max_null/scalar_max_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_max_null/scalar_max_null.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -20,13 +20,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -36,13 +36,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -52,13 +52,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -68,13 +68,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -84,13 +84,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -110,13 +110,13 @@
:=
FunctionCall asterix.sql-max@1[
OrderedListConstructor [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-03-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-01-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-02-01T00:00:00Z]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_min/scalar_min.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_min/scalar_min.3.ast
index 2827888..c7c7c18 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_min/scalar_min.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_min/scalar_min.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
@@ -19,13 +19,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
@@ -34,13 +34,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
@@ -49,13 +49,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
@@ -64,13 +64,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
]
@@ -79,13 +79,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
]
@@ -103,13 +103,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-03-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-01-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-02-01T00:00:00Z]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_min_null/scalar_min_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_min_null/scalar_min_null.3.ast
index 6237a07..eec5aaa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_min_null/scalar_min_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_min_null/scalar_min_null.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -20,13 +20,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -36,13 +36,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -52,13 +52,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -68,13 +68,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -84,13 +84,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -110,13 +110,13 @@
:=
FunctionCall asterix.sql-min@1[
OrderedListConstructor [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-03-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-01-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-02-01T00:00:00Z]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_sum/scalar_sum.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_sum/scalar_sum.3.ast
index 812e172..bac6515 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_sum/scalar_sum.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_sum/scalar_sum.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
@@ -19,13 +19,13 @@
:=
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
@@ -34,13 +34,13 @@
:=
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
@@ -49,13 +49,13 @@
:=
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
@@ -64,13 +64,13 @@
:=
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
]
@@ -79,13 +79,13 @@
:=
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_sum_null/scalar_sum_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_sum_null/scalar_sum_null.3.ast
index 94722a4..cecce51 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_sum_null/scalar_sum_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/scalar_sum_null/scalar_sum_null.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -20,13 +20,13 @@
:=
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -36,13 +36,13 @@
:=
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -52,13 +52,13 @@
:=
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -68,13 +68,13 @@
:=
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -84,13 +84,13 @@
:=
FunctionCall asterix.sql-sum@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_float/sum_float.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_float/sum_float.3.ast
index c21fa1c..d2c2e8a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_float/sum_float.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_float/sum_float.3.ast
@@ -7,13 +7,13 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int16/sum_int16.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int16/sum_int16.3.ast
index 62fc04f..3fd8df5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int16/sum_int16.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int16/sum_int16.3.ast
@@ -7,13 +7,13 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int32/sum_int32.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int32/sum_int32.3.ast
index 402f257..9b6a747 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int32/sum_int32.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int32/sum_int32.3.ast
@@ -7,13 +7,13 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int64/sum_int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int64/sum_int64.3.ast
index 1e4a755..77f5a7e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int64/sum_int64.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int64/sum_int64.3.ast
@@ -7,13 +7,13 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int8/sum_int8.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int8/sum_int8.3.ast
index cd32941..3058d30 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int8/sum_int8.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_int8/sum_int8.3.ast
@@ -7,13 +7,13 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [100]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [100]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [100]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_mixed/sum_mixed.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_mixed/sum_mixed.3.ast
index eb44b3a..70ab82b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_mixed/sum_mixed.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-sql/sum_mixed/sum_mixed.3.ast
@@ -6,12 +6,12 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
LiteralExpr [STRING] [hello world]
LiteralExpr [LONG] [93847382783847382]
- FunctionCall null.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-01-01]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-subclause/agg_filter_01/agg_filter_1.05.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-subclause/agg_filter_01/agg_filter_1.05.ast
index 28919af..5c4635c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-subclause/agg_filter_01/agg_filter_1.05.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-subclause/agg_filter_01/agg_filter_1.05.ast
@@ -1,83 +1,163 @@
DataverseUse test
Query:
-SELECT [
-Variable [ Name=$two ]
-two
-FunctionCall asterix.sql-count@1[
- (
- SELECT ELEMENT [
- LiteralExpr [LONG] [1]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#2 ]
- ]
- Where
- OperatorExpr [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#2 ]
- Field=tenk
- ]
- Field=four
- ]
- >
- LiteralExpr [LONG] [0]
- ]
- )
+SELECT ELEMENT [
+Variable [ Name=#2 ]
]
-cnt
-FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
- ]
- Field=four
- ]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
- ]
- Where
- OperatorExpr [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
- ]
- Field=four
- ]
- >
- LiteralExpr [LONG] [0]
- ]
- )
-]
-sm
-]
-FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.tenk]
- ]
- AS Variable [ Name=$tenk ]
-]
-Groupby
- GROUPING SET (
+FROM [ (
+ SELECT [
Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
+ two
+ FunctionCall asterix.sql-count@1[
+ (
+ SELECT ELEMENT [
+ LiteralExpr [LONG] [1]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ Where
+ OperatorExpr [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=tenk
+ ]
+ Field=four
+ ]
+ >
+ LiteralExpr [LONG] [0]
+ ]
+ )
]
- )
- GROUPING SET (
- ),
- GROUP AS Variable [ Name=#1 ]
- (
- tenk:=Variable [ Name=$tenk ]
- )
+ cnt
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=four
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ Where
+ OperatorExpr [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=four
+ ]
+ >
+ LiteralExpr [LONG] [0]
+ ]
+ )
+ ]
+ sm
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ FunctionCall asterix.sql-count@1[
+ (
+ SELECT ELEMENT [
+ LiteralExpr [LONG] [1]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ Where
+ OperatorExpr [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=four
+ ]
+ >
+ LiteralExpr [LONG] [0]
+ ]
+ )
+ ]
+ cnt
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=four
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ Where
+ OperatorExpr [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=four
+ ]
+ >
+ LiteralExpr [LONG] [0]
+ ]
+ )
+ ]
+ sm
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ )
+ AS Variable [ Name=#2 ]
+]
Orderby
- Variable [ Name=$two ]
+ FieldAccessor [
+ Variable [ Name=#2 ]
+ Field=two
+ ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-subclause/agg_filter_01/agg_filter_1.06.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-subclause/agg_filter_01/agg_filter_1.06.ast
index 60815f4..d01f24b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-subclause/agg_filter_01/agg_filter_1.06.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-subclause/agg_filter_01/agg_filter_1.06.ast
@@ -16,9 +16,28 @@
Field=tenthous
]
tenthous
-WINDOW test.count@1[
- Variable [ Name=$tenthous ]
+WINDOW asterix.sql-count@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#7 ]
+ Field=tenk
+ ]
+ Field=tenthous
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#7 ]
+ ]
+ )
]
+ AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ #4:=Variable [ Name=#4 ]
+ #6:=Variable [ Name=#6 ]
+ )
OVER (
ORDER BY
FieldAccessor [
@@ -28,9 +47,28 @@
ASC
)
cnt
-WINDOW test.sum@1[
- Variable [ Name=$tenthous ]
+WINDOW asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#8 ]
+ Field=tenk
+ ]
+ Field=tenthous
+ ]
+ ]
+ FROM [ Variable [ Name=#2 ]
+ AS Variable [ Name=#8 ]
+ ]
+ )
]
+ AS Variable [ Name=#2 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ #4:=Variable [ Name=#4 ]
+ #6:=Variable [ Name=#6 ]
+ )
OVER (
ORDER BY
FieldAccessor [
@@ -40,15 +78,32 @@
ASC
)
sm
-WINDOW test.count@1[
- Variable [ Name=$tenthous ]
-]
- FILTER (WHERE
- OperatorExpr [
- Variable [ Name=$twothous ]
- =
- LiteralExpr [LONG] [0]
+WINDOW asterix.sql-count@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#9 ]
+ Field=tenk
+ ]
+ Field=tenthous
]
+ ]
+ FROM [ Variable [ Name=#3 ]
+ AS Variable [ Name=#9 ]
+ ]
+ Where
+ FieldAccessor [
+ Variable [ Name=#9 ]
+ Field=#4
+ ]
+ )
+]
+ AS Variable [ Name=#3 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ #4:=Variable [ Name=#4 ]
+ #6:=Variable [ Name=#6 ]
)
OVER (
ORDER BY
@@ -59,15 +114,32 @@
ASC
)
cnt_filter
-WINDOW test.sum@1[
- Variable [ Name=$tenthous ]
-]
- FILTER (WHERE
- OperatorExpr [
- Variable [ Name=$twothous ]
- =
- LiteralExpr [LONG] [0]
+WINDOW asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#10 ]
+ Field=tenk
+ ]
+ Field=tenthous
]
+ ]
+ FROM [ Variable [ Name=#5 ]
+ AS Variable [ Name=#10 ]
+ ]
+ Where
+ FieldAccessor [
+ Variable [ Name=#10 ]
+ Field=#6
+ ]
+ )
+]
+ AS Variable [ Name=#5 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ #4:=Variable [ Name=#4 ]
+ #6:=Variable [ Name=#6 ]
)
OVER (
ORDER BY
@@ -93,6 +165,26 @@
=
LiteralExpr [LONG] [0]
]
+Let Variable [ Name=#4 ]
+ :=
+ OperatorExpr [
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twothous
+ ]
+ =
+ LiteralExpr [LONG] [0]
+ ]
+Let Variable [ Name=#6 ]
+ :=
+ OperatorExpr [
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twothous
+ ]
+ =
+ LiteralExpr [LONG] [0]
+ ]
Orderby
FieldAccessor [
Variable [ Name=$tenk ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-subclause/agg_filter_01/agg_filter_1.07.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-subclause/agg_filter_01/agg_filter_1.07.ast
index 48f5c9d..06abed9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-subclause/agg_filter_01/agg_filter_1.07.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate-subclause/agg_filter_01/agg_filter_1.07.ast
@@ -8,66 +8,74 @@
SELECT ELEMENT [
FieldAccessor [
FieldAccessor [
- Variable [ Name=#2 ]
+ Variable [ Name=#14 ]
Field=tenk
]
Field=ten
]
]
FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#2 ]
+ AS Variable [ Name=#14 ]
]
)
]
sm
-WINDOW test.sum@1[
- FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
- ]
- Field=ten
- ]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
- ]
- )
- ]
+WINDOW asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=#15 ]
+ Field=#3
+ ]
+ ]
+ FROM [ Variable [ Name=#2 ]
+ AS Variable [ Name=#15 ]
+ ]
+ )
]
+ AS Variable [ Name=#2 ]
+ (
+ twenty:=Variable [ Name=$twenty ]
+ #1:=Variable [ Name=#1 ]
+ #3:=Variable [ Name=#3 ]
+ #5:=Variable [ Name=#5 ]
+ #6:=Variable [ Name=#6 ]
+ #8:=Variable [ Name=#8 ]
+ #9:=Variable [ Name=#9 ]
+ )
OVER (
ORDER BY
Variable [ Name=$twenty ]
ASC
)
sm_sm
-WINDOW test.sum@1[
- FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#4 ]
- Field=tenk
- ]
- Field=ten
- ]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#4 ]
- ]
- )
- ]
-]
- FILTER (WHERE
- OperatorExpr [
- Variable [ Name=$twenty ]
- <
- LiteralExpr [LONG] [10]
+WINDOW asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=#16 ]
+ Field=#6
]
+ ]
+ FROM [ Variable [ Name=#4 ]
+ AS Variable [ Name=#16 ]
+ ]
+ Where
+ FieldAccessor [
+ Variable [ Name=#16 ]
+ Field=#5
+ ]
+ )
+]
+ AS Variable [ Name=#4 ]
+ (
+ twenty:=Variable [ Name=$twenty ]
+ #1:=Variable [ Name=#1 ]
+ #3:=Variable [ Name=#3 ]
+ #5:=Variable [ Name=#5 ]
+ #6:=Variable [ Name=#6 ]
+ #8:=Variable [ Name=#8 ]
+ #9:=Variable [ Name=#9 ]
)
OVER (
ORDER BY
@@ -75,45 +83,33 @@
ASC
)
sm_sm_where_twenty_lt_10
-WINDOW test.sum@1[
- FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#5 ]
- Field=tenk
- ]
- Field=ten
- ]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#5 ]
- ]
- )
- ]
-]
- FILTER (WHERE
- OperatorExpr [
- FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#6 ]
- Field=tenk
- ]
- Field=ten
- ]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#6 ]
- ]
- )
- ]
- <
- LiteralExpr [LONG] [3000]
+WINDOW asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=#17 ]
+ Field=#9
]
+ ]
+ FROM [ Variable [ Name=#7 ]
+ AS Variable [ Name=#17 ]
+ ]
+ Where
+ FieldAccessor [
+ Variable [ Name=#17 ]
+ Field=#8
+ ]
+ )
+]
+ AS Variable [ Name=#7 ]
+ (
+ twenty:=Variable [ Name=$twenty ]
+ #1:=Variable [ Name=#1 ]
+ #3:=Variable [ Name=#3 ]
+ #5:=Variable [ Name=#5 ]
+ #6:=Variable [ Name=#6 ]
+ #8:=Variable [ Name=#8 ]
+ #9:=Variable [ Name=#9 ]
)
OVER (
ORDER BY
@@ -139,6 +135,89 @@
tenk:=Variable [ Name=$tenk ]
)
+Let Variable [ Name=#3 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#10 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#10 ]
+ ]
+ )
+ ]
+Let Variable [ Name=#5 ]
+ :=
+ OperatorExpr [
+ Variable [ Name=$twenty ]
+ <
+ LiteralExpr [LONG] [10]
+ ]
+Let Variable [ Name=#6 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#11 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#11 ]
+ ]
+ )
+ ]
+Let Variable [ Name=#8 ]
+ :=
+ OperatorExpr [
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#12 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#12 ]
+ ]
+ )
+ ]
+ <
+ LiteralExpr [LONG] [3000]
+ ]
+Let Variable [ Name=#9 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#13 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#13 ]
+ ]
+ )
+ ]
Orderby
Variable [ Name=$twenty ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_number/agg_number.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_number/agg_number.3.ast
index 21cab5a..97164dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_number/agg_number.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/agg_number/agg_number.3.ast
@@ -5,10 +5,10 @@
:
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -21,10 +21,10 @@
:
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -37,10 +37,10 @@
:
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -53,10 +53,10 @@
:
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -69,10 +69,10 @@
:
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -85,10 +85,10 @@
:
FunctionCall asterix.stddev_samp@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -101,10 +101,10 @@
:
FunctionCall asterix.stddev_pop@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -117,10 +117,10 @@
:
FunctionCall asterix.var_samp@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -133,10 +133,10 @@
:
FunctionCall asterix.var_pop@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -149,10 +149,10 @@
:
FunctionCall asterix.skewness@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -165,10 +165,10 @@
:
FunctionCall asterix.kurtosis@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -181,10 +181,10 @@
:
FunctionCall asterix.count@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -197,10 +197,10 @@
:
FunctionCall asterix.avg@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -213,10 +213,10 @@
:
FunctionCall asterix.sum@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -229,10 +229,10 @@
:
FunctionCall asterix.min@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -245,10 +245,10 @@
:
FunctionCall asterix.max@1[
UnorderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -261,10 +261,10 @@
:
FunctionCall asterix.stddev_samp@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -277,10 +277,10 @@
:
FunctionCall asterix.stddev_pop@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -293,10 +293,10 @@
:
FunctionCall asterix.var_samp@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -309,10 +309,10 @@
:
FunctionCall asterix.var_pop@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -325,10 +325,10 @@
:
FunctionCall asterix.skewness@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
@@ -341,10 +341,10 @@
:
FunctionCall asterix.kurtosis@1[
OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.0]
]
LiteralExpr [LONG] [93847382783847382]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_double/avg_double.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_double/avg_double.4.ast
index c6e5f00..486f5ca 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_double/avg_double.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_double/avg_double.4.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.strict_avg@1[
+WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -18,6 +18,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_double_null/avg_double_null.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_double_null/avg_double_null.4.ast
index b5910c3..c35af94 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_double_null/avg_double_null.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_double_null/avg_double_null.4.ast
@@ -6,7 +6,7 @@
:
(
SELECT ELEMENT [
- WINDOW test.strict_avg@1[
+ WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_empty_01/avg_empty_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_empty_01/avg_empty_01.3.ast
index be4e9f4..c8a1c1e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_empty_01/avg_empty_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_empty_01/avg_empty_01.3.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.strict_avg@1[
+WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -30,6 +30,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_float/avg_float.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_float/avg_float.4.ast
index e388212..227a847 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_float/avg_float.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_float/avg_float.4.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.strict_avg@1[
+WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -18,6 +18,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_float_null/avg_float_null.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_float_null/avg_float_null.4.ast
index a27474e..d87565d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_float_null/avg_float_null.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_float_null/avg_float_null.4.ast
@@ -6,7 +6,7 @@
:
(
SELECT ELEMENT [
- WINDOW test.strict_avg@1[
+ WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int16/avg_int16.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int16/avg_int16.4.ast
index 93ac851..cfaf11d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int16/avg_int16.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int16/avg_int16.4.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.strict_avg@1[
+WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -18,6 +18,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int16_null/avg_int16_null.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int16_null/avg_int16_null.4.ast
index a8eeec5..96d8472 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int16_null/avg_int16_null.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int16_null/avg_int16_null.4.ast
@@ -6,7 +6,7 @@
:
(
SELECT ELEMENT [
- WINDOW test.strict_avg@1[
+ WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int32/avg_int32.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int32/avg_int32.4.ast
index 305ef7b..0d6873c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int32/avg_int32.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int32/avg_int32.4.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.strict_avg@1[
+WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -18,6 +18,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int32_null/avg_int32_null.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int32_null/avg_int32_null.4.ast
index 342ef66..59cdebd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int32_null/avg_int32_null.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int32_null/avg_int32_null.4.ast
@@ -6,7 +6,7 @@
:
(
SELECT ELEMENT [
- WINDOW test.strict_avg@1[
+ WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int64/avg_int64.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int64/avg_int64.4.ast
index d81470b..cd1ca5f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int64/avg_int64.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int64/avg_int64.4.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.strict_avg@1[
+WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -18,6 +18,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int64_null/avg_int64_null.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int64_null/avg_int64_null.4.ast
index f6e324a..c6a4275 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int64_null/avg_int64_null.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int64_null/avg_int64_null.4.ast
@@ -6,7 +6,7 @@
:
(
SELECT ELEMENT [
- WINDOW test.strict_avg@1[
+ WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int8/avg_int8.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int8/avg_int8.4.ast
index a42531f..9645d36 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int8/avg_int8.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int8/avg_int8.4.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-WINDOW test.strict_avg@1[
+WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -18,6 +18,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int8_null/avg_int8_null.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int8_null/avg_int8_null.4.ast
index d39b019..1b61a4b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int8_null/avg_int8_null.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_int8_null/avg_int8_null.4.ast
@@ -6,7 +6,7 @@
:
(
SELECT ELEMENT [
- WINDOW test.strict_avg@1[
+ WINDOW asterix.avg@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_mixed/avg_mixed.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_mixed/avg_mixed.3.ast
index 750ac9b..73c7ade 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_mixed/avg_mixed.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/avg_mixed/avg_mixed.3.ast
@@ -6,12 +6,12 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
LiteralExpr [STRING] [hello world]
LiteralExpr [LONG] [93847382783847382]
- FunctionCall null.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-01-01]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/min_mixed/min_mixed.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/min_mixed/min_mixed.3.ast
index 802040d..e472793 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/min_mixed/min_mixed.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/min_mixed/min_mixed.3.ast
@@ -6,12 +6,12 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
LiteralExpr [STRING] [hello world]
LiteralExpr [LONG] [93847382783847382]
- FunctionCall null.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-01-01]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_avg/scalar_avg.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_avg/scalar_avg.3.ast
index 1049f33..187e742 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_avg/scalar_avg.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_avg/scalar_avg.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
@@ -19,13 +19,13 @@
:=
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
@@ -34,13 +34,13 @@
:=
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
@@ -49,13 +49,13 @@
:=
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
@@ -64,13 +64,13 @@
:=
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
]
@@ -79,13 +79,13 @@
:=
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_avg_null/scalar_avg_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_avg_null/scalar_avg_null.3.ast
index 7e062bb..0e200eb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_avg_null/scalar_avg_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_avg_null/scalar_avg_null.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -20,13 +20,13 @@
:=
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -36,13 +36,13 @@
:=
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -52,13 +52,13 @@
:=
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -68,13 +68,13 @@
:=
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -84,13 +84,13 @@
:=
FunctionCall asterix.avg@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_count/scalar_count.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_count/scalar_count.3.ast
index bbd01a0..0721a90 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_count/scalar_count.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_count/scalar_count.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
@@ -19,13 +19,13 @@
:=
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
@@ -34,13 +34,13 @@
:=
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
@@ -49,13 +49,13 @@
:=
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
@@ -64,13 +64,13 @@
:=
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
]
@@ -79,13 +79,13 @@
:=
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_count_null/scalar_count_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_count_null/scalar_count_null.3.ast
index 56e6061..395e913 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_count_null/scalar_count_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_count_null/scalar_count_null.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -20,13 +20,13 @@
:=
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -36,13 +36,13 @@
:=
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -52,13 +52,13 @@
:=
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -68,13 +68,13 @@
:=
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -84,13 +84,13 @@
:=
FunctionCall asterix.count@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_max/scalar_max.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_max/scalar_max.3.ast
index ccc7579..1643023 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_max/scalar_max.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_max/scalar_max.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
@@ -19,13 +19,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
@@ -34,13 +34,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
@@ -49,13 +49,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
@@ -64,13 +64,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
]
@@ -79,13 +79,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
]
@@ -103,13 +103,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-03-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-01-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-02-01T00:00:00Z]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_max_null/scalar_max_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_max_null/scalar_max_null.3.ast
index de3f4ca..ce0ddd7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_max_null/scalar_max_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_max_null/scalar_max_null.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -20,13 +20,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -36,13 +36,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -52,13 +52,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -68,13 +68,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -84,13 +84,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -110,13 +110,13 @@
:=
FunctionCall asterix.max@1[
OrderedListConstructor [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-03-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-01-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-02-01T00:00:00Z]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_min/scalar_min.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_min/scalar_min.3.ast
index 0aa087f..e0baf2a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_min/scalar_min.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_min/scalar_min.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
@@ -19,13 +19,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
@@ -34,13 +34,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
@@ -49,13 +49,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
@@ -64,13 +64,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
]
@@ -79,13 +79,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
]
@@ -103,13 +103,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-03-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-01-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-02-01T00:00:00Z]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_min_null/scalar_min_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_min_null/scalar_min_null.3.ast
index 3346789..c2e2783 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_min_null/scalar_min_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_min_null/scalar_min_null.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -20,13 +20,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -36,13 +36,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -52,13 +52,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -68,13 +68,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -84,13 +84,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -110,13 +110,13 @@
:=
FunctionCall asterix.min@1[
OrderedListConstructor [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-03-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-01-01T00:00:00Z]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-02-01T00:00:00Z]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_sum/scalar_sum.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_sum/scalar_sum.3.ast
index 58bb3ca..defe2fa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_sum/scalar_sum.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_sum/scalar_sum.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
@@ -19,13 +19,13 @@
:=
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
@@ -34,13 +34,13 @@
:=
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
@@ -49,13 +49,13 @@
:=
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
@@ -64,13 +64,13 @@
:=
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
]
@@ -79,13 +79,13 @@
:=
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_sum_null/scalar_sum_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_sum_null/scalar_sum_null.3.ast
index 30cccae..87d6e04 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_sum_null/scalar_sum_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/scalar_sum_null/scalar_sum_null.3.ast
@@ -4,13 +4,13 @@
:=
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -20,13 +20,13 @@
:=
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -36,13 +36,13 @@
:=
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -52,13 +52,13 @@
:=
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -68,13 +68,13 @@
:=
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
@@ -84,13 +84,13 @@
:=
FunctionCall asterix.sum@1[
OrderedListConstructor [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_float/sum_float.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_float/sum_float.3.ast
index f391452..8ca6b1b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_float/sum_float.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_float/sum_float.3.ast
@@ -7,13 +7,13 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int16/sum_int16.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int16/sum_int16.3.ast
index 18be6bb..789e221 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int16/sum_int16.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int16/sum_int16.3.ast
@@ -7,13 +7,13 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int32/sum_int32.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int32/sum_int32.3.ast
index df28ba6..7677d97 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int32/sum_int32.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int32/sum_int32.3.ast
@@ -7,13 +7,13 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int64/sum_int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int64/sum_int64.3.ast
index c9652ea..fba72d3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int64/sum_int64.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int64/sum_int64.3.ast
@@ -7,13 +7,13 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2]
]
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int8/sum_int8.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int8/sum_int8.3.ast
index 8cd57a7..121702c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int8/sum_int8.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_int8/sum_int8.3.ast
@@ -7,13 +7,13 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [100]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [100]
]
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [100]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_mixed/sum_mixed.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_mixed/sum_mixed.3.ast
index e849c4e..471fbe0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_mixed/sum_mixed.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/aggregate/sum_mixed/sum_mixed.3.ast
@@ -6,12 +6,12 @@
Variable [ Name=$x ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2.0]
]
LiteralExpr [STRING] [hello world]
LiteralExpr [LONG] [93847382783847382]
- FunctionCall null.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-01-01]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_groupby-2/big_object_groupby.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_groupby-2/big_object_groupby.3.ast
index 7ec7ccb..894dcb7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_groupby-2/big_object_groupby.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_groupby-2/big_object_groupby.3.ast
@@ -10,7 +10,7 @@
(
LiteralExpr [STRING] [length]
:
- FunctionCall test.string-length@1[
+ FunctionCall asterix.string-length@1[
Variable [ Name=$comment ]
]
)
@@ -47,7 +47,7 @@
Orderby
Variable [ Name=$id ]
ASC
- FunctionCall test.string-length@1[
+ FunctionCall asterix.string-length@1[
Variable [ Name=$comment ]
]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_join/big_object_join.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_join/big_object_join.3.ast
index 1fa4750..483250c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_join/big_object_join.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_join/big_object_join.3.ast
@@ -21,7 +21,7 @@
(
LiteralExpr [STRING] [len_c_comment]
:
- FunctionCall test.string-length@1[
+ FunctionCall asterix.string-length@1[
FieldAccessor [
Variable [ Name=$c ]
Field=c_comment
@@ -31,7 +31,7 @@
(
LiteralExpr [STRING] [len_o_comment]
:
- FunctionCall test.string-length@1[
+ FunctionCall asterix.string-length@1[
FieldAccessor [
Variable [ Name=$o ]
Field=o_comment
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_sort/big_object_sort.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_sort/big_object_sort.3.ast
index 8ef1dc5..31b8b5b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_sort/big_object_sort.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/big-object/big_object_sort/big_object_sort.3.ast
@@ -21,7 +21,7 @@
(
LiteralExpr [STRING] [len-comment]
:
- FunctionCall test.string-length@1[
+ FunctionCall asterix.string-length@1[
FieldAccessor [
Variable [ Name=$o ]
Field=o_comment
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/concat/concat_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/concat/concat_01.3.ast
index b481603..2bd7c50 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/concat/concat_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/concat/concat_01.3.ast
@@ -2,65 +2,65 @@
Query:
OrderedListConstructor [
OperatorExpr [
- FunctionCall test.binary-concat@1[
+ FunctionCall asterix.binary-concat@1[
OrderedListConstructor [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aa]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [259911]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [bb]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [31]
]
]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [AA259911bb31]
]
]
OperatorExpr [
- FunctionCall test.binary-concat@1[
+ FunctionCall asterix.binary-concat@1[
OrderedListConstructor [
]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] []
]
]
- FunctionCall test.binary-concat@1[
+ FunctionCall asterix.binary-concat@1[
OrderedListConstructor [
LiteralExpr [NULL]
]
]
- FunctionCall test.binary-concat@1[
+ FunctionCall asterix.binary-concat@1[
OrderedListConstructor [
LiteralExpr [NULL]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [55]
]
]
]
- FunctionCall test.binary-concat@1[
+ FunctionCall asterix.binary-concat@1[
OrderedListConstructor [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aa]
]
LiteralExpr [NULL]
]
]
- FunctionCall test.binary-concat@1[
+ FunctionCall asterix.binary-concat@1[
OrderedListConstructor [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aa]
]
LiteralExpr [NULL]
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [asdf]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/find/find.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/find/find.3.ast
index 813591c..c24ad58 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/find/find.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/find/find.3.ast
@@ -2,11 +2,11 @@
Query:
OrderedListConstructor [
OperatorExpr [
- FunctionCall test.find-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.find-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccddaa]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] []
]
]
@@ -14,11 +14,11 @@
LiteralExpr [LONG] [0]
]
OperatorExpr [
- FunctionCall test.find-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.find-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccddaa]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aa]
]
]
@@ -26,11 +26,11 @@
LiteralExpr [LONG] [0]
]
OperatorExpr [
- FunctionCall test.find-binary@3[
- FunctionCall test.hex@1[
+ FunctionCall asterix.find-binary@3[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccddaa]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aa]
]
LiteralExpr [LONG] [1]
@@ -39,31 +39,31 @@
LiteralExpr [LONG] [4]
]
OperatorExpr [
- FunctionCall test.find-binary@3[
- FunctionCall test.hex@1[
+ FunctionCall asterix.find-binary@3[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccddaa]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabb]
]
- LiteralExpr [LONG] [1]
]
=
- FunctionCall test.find-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.find-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccddaa]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabb]
]
]
]
OperatorExpr [
- FunctionCall test.find-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.find-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccddaa]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [11]
]
]
@@ -71,11 +71,11 @@
- LiteralExpr [LONG] [1]
]
OperatorExpr [
- FunctionCall test.find-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.find-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccddaa]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [ccddaa]
]
]
@@ -83,30 +83,30 @@
LiteralExpr [LONG] [2]
]
OperatorExpr [
- FunctionCall test.find-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.find-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccddaa]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [ccddaabb]
]
]
=
- LiteralExpr [LONG] [1]
]
- FunctionCall test.find-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.find-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccddaa]
]
LiteralExpr [NULL]
]
- FunctionCall test.find-binary@2[
+ FunctionCall asterix.find-binary@2[
LiteralExpr [NULL]
LiteralExpr [NULL]
]
- FunctionCall test.find-binary@2[
+ FunctionCall asterix.find-binary@2[
LiteralExpr [NULL]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccddaa]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/length/length.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/length/length.3.ast
index 8942f96..c8d1db6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/length/length.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/length/length.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.binary-length@1[
- FunctionCall test.hex@1[
+ FunctionCall asterix.binary-length@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [00AA]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [result2]
:
- FunctionCall test.binary-length@1[
- FunctionCall test.hex@1[
+ FunctionCall asterix.binary-length@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] []
]
]
@@ -22,7 +22,7 @@
(
LiteralExpr [STRING] [result3]
:
- FunctionCall test.binary-length@1[
+ FunctionCall asterix.binary-length@1[
LiteralExpr [NULL]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/parse/parse.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/parse/parse.3.ast
index 5613753..99ffffd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/parse/parse.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/parse/parse.3.ast
@@ -1,43 +1,43 @@
DataverseUse test
Query:
OrderedListConstructor [
- FunctionCall test.parse-binary@2[
+ FunctionCall asterix.parse-binary@2[
LiteralExpr [STRING] [ABCDEF0123456789]
LiteralExpr [STRING] [hex]
]
- FunctionCall test.parse-binary@2[
+ FunctionCall asterix.parse-binary@2[
LiteralExpr [STRING] [abcdef0123456789]
LiteralExpr [STRING] [HEX]
]
- FunctionCall test.parse-binary@2[
+ FunctionCall asterix.parse-binary@2[
LiteralExpr [STRING] [0A0B0C0D0E0F]
LiteralExpr [STRING] [hEx]
]
- FunctionCall test.parse-binary@2[
+ FunctionCall asterix.parse-binary@2[
LiteralExpr [STRING] [01020304050607080900]
LiteralExpr [STRING] [hex]
]
- FunctionCall test.parse-binary@2[
+ FunctionCall asterix.parse-binary@2[
LiteralExpr [STRING] []
LiteralExpr [STRING] [hex]
]
- FunctionCall test.parse-binary@2[
+ FunctionCall asterix.parse-binary@2[
LiteralExpr [STRING] [0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM+/]
LiteralExpr [STRING] [base64]
]
- FunctionCall test.parse-binary@2[
+ FunctionCall asterix.parse-binary@2[
LiteralExpr [STRING] []
LiteralExpr [STRING] [base64]
]
- FunctionCall test.parse-binary@2[
+ FunctionCall asterix.parse-binary@2[
LiteralExpr [STRING] [QXN0ZXJpeA==]
LiteralExpr [STRING] [BASE64]
]
- FunctionCall test.parse-binary@2[
+ FunctionCall asterix.parse-binary@2[
LiteralExpr [STRING] [QXN0ZXJpeAE=]
LiteralExpr [STRING] [baSE64]
]
- FunctionCall test.parse-binary@2[
+ FunctionCall asterix.parse-binary@2[
LiteralExpr [STRING] [QXN0ZXJpeAE8]
LiteralExpr [STRING] [base64]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/print/print.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/print/print.3.ast
index 91609e5..e42bb37 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/print/print.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/print/print.3.ast
@@ -7,8 +7,8 @@
(
SELECT ELEMENT [
OperatorExpr [
- FunctionCall test.print-binary@2[
- FunctionCall test.parse-binary@2[
+ FunctionCall asterix.print-binary@2[
+ FunctionCall asterix.parse-binary@2[
Variable [ Name=$i ]
LiteralExpr [STRING] [hex]
]
@@ -34,8 +34,8 @@
(
SELECT ELEMENT [
OperatorExpr [
- FunctionCall test.print-binary@2[
- FunctionCall test.parse-binary@2[
+ FunctionCall asterix.print-binary@2[
+ FunctionCall asterix.parse-binary@2[
Variable [ Name=$j ]
LiteralExpr [STRING] [base64]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/subbinary/subbinary_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/subbinary/subbinary_01.3.ast
index 5a232ae..4c52f44 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/subbinary/subbinary_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/binary/subbinary/subbinary_01.3.ast
@@ -2,182 +2,182 @@
Query:
OrderedListConstructor [
OperatorExpr [
- FunctionCall test.sub-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] []
]
LiteralExpr [LONG] [0]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] []
]
]
OperatorExpr [
- FunctionCall test.sub-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] []
]
LiteralExpr [LONG] [1]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] []
]
]
OperatorExpr [
- FunctionCall test.sub-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] []
]
- LiteralExpr [LONG] [1]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] []
]
]
OperatorExpr [
- FunctionCall test.sub-binary@3[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@3[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
LiteralExpr [LONG] [0]
- FunctionCall test.binary-length@1[
- FunctionCall test.hex@1[
+ FunctionCall asterix.binary-length@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
]
OperatorExpr [
- FunctionCall test.sub-binary@3[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@3[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [1]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [bb]
]
]
OperatorExpr [
- FunctionCall test.sub-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
LiteralExpr [LONG] [1]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [bbccdd]
]
]
OperatorExpr [
- FunctionCall test.sub-binary@3[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@3[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
LiteralExpr [LONG] [4]
LiteralExpr [LONG] [0]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] []
]
]
OperatorExpr [
- FunctionCall test.sub-binary@3[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@3[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
LiteralExpr [LONG] [3]
LiteralExpr [LONG] [1]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [dd]
]
]
OperatorExpr [
- FunctionCall test.sub-binary@3[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@3[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [bbcc]
]
]
OperatorExpr [
- FunctionCall test.sub-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
LiteralExpr [LONG] [0]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
]
OperatorExpr [
- FunctionCall test.sub-binary@2[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@2[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
- LiteralExpr [LONG] [1]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
]
OperatorExpr [
- FunctionCall test.sub-binary@3[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@3[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
LiteralExpr [LONG] [0]
LiteralExpr [LONG] [256]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
]
OperatorExpr [
- FunctionCall test.sub-binary@3[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@3[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [256]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [bbccdd]
]
]
OperatorExpr [
- FunctionCall test.sub-binary@3[
- FunctionCall test.hex@1[
+ FunctionCall asterix.sub-binary@3[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [aabbccdd]
]
LiteralExpr [LONG] [1]
- LiteralExpr [LONG] [1]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] []
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/boolean/and_01/and_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/boolean/and_01/and_01.3.ast
index 85aa549..04666b2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/boolean/and_01/and_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/boolean/and_01/and_01.3.ast
@@ -1,11 +1,11 @@
DataverseUse test
Query:
OperatorExpr [
- FunctionCall test.boolean@1[
+ FunctionCall asterix.boolean@1[
LiteralExpr [STRING] [true]
]
and
- FunctionCall test.boolean@1[
+ FunctionCall asterix.boolean@1[
LiteralExpr [STRING] [false]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary/binary.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary/binary.3.ast
index 854f0ba..ba2bef5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary/binary.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary/binary.3.ast
@@ -2,146 +2,146 @@
Query:
OrderedListConstructor [
OperatorExpr [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0A0A]
]
>
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0B]
]
]
OperatorExpr [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0A0A]
]
>=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0B]
]
]
OperatorExpr [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0A0A]
]
<
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0B]
]
]
OperatorExpr [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0A0A]
]
<=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0B]
]
]
OperatorExpr [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0A0A]
]
=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0B]
]
]
OperatorExpr [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0A0A]
]
!=
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0B]
]
]
OperatorExpr [
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cgo=]
]
>
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cw==]
]
]
OperatorExpr [
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cgo=]
]
>=
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cw==]
]
]
OperatorExpr [
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cgo=]
]
<
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cw==]
]
]
OperatorExpr [
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cgo=]
]
<=
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cw==]
]
]
OperatorExpr [
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cgo=]
]
=
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cw==]
]
]
OperatorExpr [
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cgo=]
]
!=
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cw==]
]
]
OperatorExpr [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0A0A]
]
=
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cgo=]
]
]
OperatorExpr [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0B]
]
=
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cw==]
]
]
OperatorExpr [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0A0A]
]
=
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cw==]
]
]
OperatorExpr [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0B]
]
=
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [Cgo=]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary_null/binary_null.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary_null/binary_null.1.ast
index ee79f0c..03c8b0d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary_null/binary_null.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/binary_null/binary_null.1.ast
@@ -4,7 +4,7 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [AA]
]
>
@@ -17,7 +17,7 @@
OperatorExpr [
LiteralExpr [NULL]
>=
- FunctionCall null.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [AA]
]
]
@@ -26,7 +26,7 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [AA]
]
<
@@ -39,7 +39,7 @@
OperatorExpr [
LiteralExpr [NULL]
<=
- FunctionCall null.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [AA]
]
]
@@ -48,7 +48,7 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [AA]
]
=
@@ -61,7 +61,7 @@
OperatorExpr [
LiteralExpr [NULL]
!=
- FunctionCall null.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [AA]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/datetime_order/datetime_order.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/datetime_order/datetime_order.3.ast
index 491637d..8cf70af 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/datetime_order/datetime_order.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/datetime_order/datetime_order.3.ast
@@ -2,57 +2,57 @@
Query:
Let Variable [ Name=$dt1 ]
:=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2011-12-31T14:00:00-10:00]
]
Let Variable [ Name=$dt2 ]
:=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-01-01T00:00:00Z]
]
Let Variable [ Name=$dt3 ]
:=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2005-01-01T00:00:00+04:00]
]
Let Variable [ Name=$dt4 ]
:=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2011-12-31T13:00:00-11:00]
]
Let Variable [ Name=$dt5 ]
:=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-04-06T00:00:00Z]
]
Let Variable [ Name=$dt6 ]
:=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1937-07-07T23:00:00+08:00]
]
Let Variable [ Name=$dt7 ]
:=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1600-03-01T00:00:00.384+06:00]
]
Let Variable [ Name=$dt8 ]
:=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1600-02-29T23:59:59.999Z]
]
Let Variable [ Name=$dt9 ]
:=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-02-29T23:59:59.999Z]
]
Let Variable [ Name=$dt10 ]
:=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-03-01T01:59:59.999+07:00]
]
Let Variable [ Name=$dt11 ]
:=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1600-03-01T00:00:00.384-06:00]
]
SELECT ELEMENT [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/datetime_range/datetime_range.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/datetime_range/datetime_range.3.ast
index f9148b3..fdce3c7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/datetime_range/datetime_range.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/datetime_range/datetime_range.3.ast
@@ -25,7 +25,7 @@
Field=time
]
>
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2011-05-15T16:00:00Z]
]
]
@@ -36,7 +36,7 @@
Field=time
]
<
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2011-05-15T21:59:59Z]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/datetime_tzeq/datetime_tzeq.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/datetime_tzeq/datetime_tzeq.3.ast
index 2cef895..2431972 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/datetime_tzeq/datetime_tzeq.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/datetime_tzeq/datetime_tzeq.3.ast
@@ -5,11 +5,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2011-12-31T14:00:00-10:00]
]
=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-01-01T00:00:00Z]
]
]
@@ -18,11 +18,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-03-01T02:00:00+04:00]
]
=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-02-29T22:00:00Z]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/double/double.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/double/double.3.ast
index 2cea57c..fae7ef1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/double/double.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/double/double.3.ast
@@ -5,11 +5,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
>
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -18,11 +18,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
>=
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -31,11 +31,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
<
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -44,11 +44,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
<=
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -57,11 +57,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
=
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -70,11 +70,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
!=
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/double_null/double_null.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/double_null/double_null.1.ast
index 4b99024..922f419 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/double_null/double_null.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/double_null/double_null.1.ast
@@ -4,7 +4,7 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
>
@@ -17,7 +17,7 @@
OperatorExpr [
LiteralExpr [NULL]
>=
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -26,7 +26,7 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
<
@@ -39,7 +39,7 @@
OperatorExpr [
LiteralExpr [NULL]
<=
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -48,7 +48,7 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
=
@@ -61,7 +61,7 @@
OperatorExpr [
LiteralExpr [NULL]
!=
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/float/float.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/float/float.3.ast
index 4e4c32a..5193a2d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/float/float.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/float/float.3.ast
@@ -5,11 +5,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
>
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -18,11 +18,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
>=
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -31,11 +31,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
<
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -44,11 +44,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
<=
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -57,11 +57,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
=
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -70,11 +70,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
!=
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/float_null/float_null.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/float_null/float_null.1.ast
index 42c1496..c200a75 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/float_null/float_null.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/float_null/float_null.1.ast
@@ -4,7 +4,7 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-6.5d]
]
>
@@ -17,7 +17,7 @@
OperatorExpr [
LiteralExpr [NULL]
>=
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -26,7 +26,7 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-6.5d]
]
<
@@ -39,7 +39,7 @@
OperatorExpr [
LiteralExpr [NULL]
<=
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -48,7 +48,7 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-6.5d]
]
=
@@ -61,7 +61,7 @@
OperatorExpr [
LiteralExpr [NULL]
!=
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-6.5d]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16/int16.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16/int16.3.ast
index d13d5f5..d995083 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16/int16.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16/int16.3.ast
@@ -5,11 +5,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
>
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -18,11 +18,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
>=
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -31,11 +31,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
<
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -44,11 +44,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
<=
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -57,11 +57,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
=
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -70,11 +70,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
!=
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16_null/int16_null.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16_null/int16_null.1.ast
index 5573145..21428e8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16_null/int16_null.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int16_null/int16_null.1.ast
@@ -4,7 +4,7 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
>
@@ -17,7 +17,7 @@
OperatorExpr [
LiteralExpr [NULL]
>=
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
@@ -26,7 +26,7 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
<
@@ -39,7 +39,7 @@
OperatorExpr [
LiteralExpr [NULL]
<=
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
@@ -48,7 +48,7 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
=
@@ -61,7 +61,7 @@
OperatorExpr [
LiteralExpr [NULL]
!=
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int32/int32.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int32/int32.3.ast
index 5be4493..07c6a1d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int32/int32.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int32/int32.3.ast
@@ -5,11 +5,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
>
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -18,11 +18,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
>=
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -31,11 +31,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
<
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -44,11 +44,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
<=
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -57,11 +57,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
=
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -70,11 +70,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
!=
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int32_null/int32_null.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int32_null/int32_null.1.ast
index c73d562..23bb974 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int32_null/int32_null.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int32_null/int32_null.1.ast
@@ -4,7 +4,7 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
>
@@ -17,7 +17,7 @@
OperatorExpr [
LiteralExpr [NULL]
>=
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
@@ -26,7 +26,7 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
<
@@ -39,7 +39,7 @@
OperatorExpr [
LiteralExpr [NULL]
<=
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
@@ -48,7 +48,7 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
=
@@ -61,7 +61,7 @@
OperatorExpr [
LiteralExpr [NULL]
!=
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int64/int64.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int64/int64.3.ast
index d6bf81b..08cb2be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int64/int64.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int64/int64.3.ast
@@ -5,11 +5,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
>
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -18,11 +18,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
>=
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -31,11 +31,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
<=
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -44,11 +44,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -57,11 +57,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
=
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -70,11 +70,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
!=
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int64_null/int64_null.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int64_null/int64_null.1.ast
index 0866ec0..822579c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int64_null/int64_null.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int64_null/int64_null.1.ast
@@ -4,7 +4,7 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
>
@@ -17,7 +17,7 @@
OperatorExpr [
LiteralExpr [NULL]
>=
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
@@ -26,7 +26,7 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
<
@@ -39,7 +39,7 @@
OperatorExpr [
LiteralExpr [NULL]
<=
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
@@ -48,7 +48,7 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
=
@@ -61,7 +61,7 @@
OperatorExpr [
LiteralExpr [NULL]
!=
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int8/int8.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int8/int8.3.ast
index 1580aee..c98865f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int8/int8.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int8/int8.3.ast
@@ -5,11 +5,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
>
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -18,11 +18,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
>=
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -31,11 +31,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
<
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -44,11 +44,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
<=
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -57,11 +57,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
=
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -70,11 +70,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
!=
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int8_null/int8_null.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int8_null/int8_null.1.ast
index 82e3aae..e4d4e38 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int8_null/int8_null.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/int8_null/int8_null.1.ast
@@ -4,7 +4,7 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
>
@@ -17,7 +17,7 @@
OperatorExpr [
LiteralExpr [NULL]
>=
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
@@ -26,7 +26,7 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
<
@@ -39,7 +39,7 @@
OperatorExpr [
LiteralExpr [NULL]
<=
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
@@ -48,7 +48,7 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
=
@@ -61,7 +61,7 @@
OperatorExpr [
LiteralExpr [NULL]
!=
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast
index 5bf9603..edbbefb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_equality/issue363_equality.3.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [duration]
:
OperatorExpr [
- FunctionCall null.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y6M3DT9H5M2.348S]
]
=
- FunctionCall null.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y6M3DT9H5M2.348S]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [year-month-duration]
:
OperatorExpr [
- FunctionCall null.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P3Y6M]
]
=
- FunctionCall null.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P3Y6M]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [day-time-duration]
:
OperatorExpr [
- FunctionCall null.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [P3DT9H5M2.348S]
]
=
- FunctionCall null.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [P3DT9H5M2.348S]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [point]
:
OperatorExpr [
- FunctionCall null.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [47.44,80.65]
]
=
- FunctionCall null.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [47.44,80.65]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [line]
:
OperatorExpr [
- FunctionCall null.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2,-11.22]
]
=
- FunctionCall null.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2,-11.22]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [polygon]
:
OperatorExpr [
- FunctionCall null.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
=
- FunctionCall null.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
]
@@ -82,11 +82,11 @@
LiteralExpr [STRING] [circle]
:
OperatorExpr [
- FunctionCall null.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 +10.5E-2]
]
=
- FunctionCall null.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 +10.5E-2]
]
]
@@ -95,11 +95,11 @@
LiteralExpr [STRING] [rectangle]
:
OperatorExpr [
- FunctionCall null.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 5.5487,0.48765]
]
=
- FunctionCall null.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 5.5487,0.48765]
]
]
@@ -108,20 +108,20 @@
LiteralExpr [STRING] [interval]
:
OperatorExpr [
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
=
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
@@ -131,11 +131,11 @@
LiteralExpr [STRING] [duration2]
:
OperatorExpr [
- FunctionCall null.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y6M3DT9H5M2.348S]
]
!=
- FunctionCall null.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P4Y6M3DT9H5M2.348S]
]
]
@@ -144,11 +144,11 @@
LiteralExpr [STRING] [year-month-duration2]
:
OperatorExpr [
- FunctionCall null.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P3Y6M]
]
!=
- FunctionCall null.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P3Y7M]
]
]
@@ -157,11 +157,11 @@
LiteralExpr [STRING] [day-time-duration2]
:
OperatorExpr [
- FunctionCall null.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [P3DT9H5M2.348S]
]
!=
- FunctionCall null.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [P3DT1H5M2.348S]
]
]
@@ -170,11 +170,11 @@
LiteralExpr [STRING] [point2]
:
OperatorExpr [
- FunctionCall null.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [47.44,80.65]
]
!=
- FunctionCall null.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [47.4444,80.65]
]
]
@@ -183,11 +183,11 @@
LiteralExpr [STRING] [line2]
:
OperatorExpr [
- FunctionCall null.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2,-11.22]
]
!=
- FunctionCall null.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.5678,11.1e-1 +10.2E-2,-11.22]
]
]
@@ -196,11 +196,11 @@
LiteralExpr [STRING] [polygon2]
:
OperatorExpr [
- FunctionCall null.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
!=
- FunctionCall null.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.19E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
]
@@ -209,11 +209,11 @@
LiteralExpr [STRING] [circle2]
:
OperatorExpr [
- FunctionCall null.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 +10.5E-2]
]
!=
- FunctionCall null.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.5678,-1.00e-10 +10.5E-2]
]
]
@@ -222,11 +222,11 @@
LiteralExpr [STRING] [rectangle2]
:
OperatorExpr [
- FunctionCall null.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 5.5487,0.48765]
]
!=
- FunctionCall null.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.5678,-1.00e-10 5.5487,0.48765]
]
]
@@ -235,20 +235,20 @@
LiteralExpr [STRING] [interval2]
:
OperatorExpr [
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
!=
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_circle/issue363_inequality_circle.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_circle/issue363_inequality_circle.3.ast
index 968e627..4134cc4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_circle/issue363_inequality_circle.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_circle/issue363_inequality_circle.3.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [circle0]
:
OperatorExpr [
- FunctionCall null.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 +10.5E-2]
]
>
- FunctionCall null.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.5678,-1.00e-10 +10.5E-2]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [circle1]
:
OperatorExpr [
- FunctionCall null.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.5678,-1.00e-10 +10.5E-2]
]
<
- FunctionCall null.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 +10.5E-2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [circle2]
:
OperatorExpr [
- FunctionCall null.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 +10.5E-2]
]
>=
- FunctionCall null.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.5678,-1.00e-10 +10.5E-2]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [circle3]
:
OperatorExpr [
- FunctionCall null.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.5678,-1.00e-10 +10.5E-2]
]
<=
- FunctionCall null.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 +10.5E-2]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_duration/issue363_inequality_duration.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_duration/issue363_inequality_duration.3.ast
index 49251c6..b306672 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_duration/issue363_inequality_duration.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_duration/issue363_inequality_duration.3.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [duration0]
:
OperatorExpr [
- FunctionCall null.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P300Y6M3DT9H5M2.348S]
]
>
- FunctionCall null.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y6M3DT9H5M2.348S]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [duration1]
:
OperatorExpr [
- FunctionCall null.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y6M3DT9H5M2.348S]
]
<
- FunctionCall null.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P300Y6M3DT9H5M2.348S]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [duration2]
:
OperatorExpr [
- FunctionCall null.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P300Y6M3DT9H5M2.348S]
]
>=
- FunctionCall null.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y6M3DT9H5M2.348S]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [duration3]
:
OperatorExpr [
- FunctionCall null.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y6M3DT9H5M2.348S]
]
<=
- FunctionCall null.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P300Y6M3DT9H5M2.348S]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast
index e59b50f..8b99251 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_interval/issue363_inequality_interval.3.ast
@@ -4,20 +4,20 @@
LiteralExpr [STRING] [interval0]
:
OperatorExpr [
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
>
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
@@ -27,20 +27,20 @@
LiteralExpr [STRING] [interval1]
:
OperatorExpr [
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
<
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
@@ -50,20 +50,20 @@
LiteralExpr [STRING] [interval2]
:
OperatorExpr [
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
>=
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
@@ -73,20 +73,20 @@
LiteralExpr [STRING] [interval3]
:
OperatorExpr [
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1983-11-19T02:43:57.938+08:00]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
<=
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_line/issue363_inequality_line.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_line/issue363_inequality_line.3.ast
index 12ca8bd..8a41c81 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_line/issue363_inequality_line.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_line/issue363_inequality_line.3.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [line0]
:
OperatorExpr [
- FunctionCall null.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2,-11.22]
]
>
- FunctionCall null.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2,-11.22]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [line1]
:
OperatorExpr [
- FunctionCall null.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2,-11.22]
]
<
- FunctionCall null.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2,-11.22]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [line2]
:
OperatorExpr [
- FunctionCall null.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2,-11.22]
]
>=
- FunctionCall null.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2,-11.22]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [line3]
:
OperatorExpr [
- FunctionCall null.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2,-11.22]
]
<=
- FunctionCall null.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2,-11.22]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_point/issue363_inequality_point.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_point/issue363_inequality_point.3.ast
index 23b6cbc..fc8dace 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_point/issue363_inequality_point.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_point/issue363_inequality_point.3.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [point0]
:
OperatorExpr [
- FunctionCall null.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [47.44,80.65]
]
>
- FunctionCall null.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [47.4444,80.65]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [point1]
:
OperatorExpr [
- FunctionCall null.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [47.4444,80.65]
]
<
- FunctionCall null.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [47.44,80.65]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [point2]
:
OperatorExpr [
- FunctionCall null.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [47.44,80.65]
]
>=
- FunctionCall null.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [47.4444,80.65]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [point3]
:
OperatorExpr [
- FunctionCall null.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [47.4444,80.65]
]
<=
- FunctionCall null.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [47.44,80.65]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_polygon/issue363_inequality_polygon.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_polygon/issue363_inequality_polygon.3.ast
index 6bf50b5..f4f1cb9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_polygon/issue363_inequality_polygon.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_polygon/issue363_inequality_polygon.3.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [polygon0]
:
OperatorExpr [
- FunctionCall null.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
>
- FunctionCall null.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.19E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [polygon1]
:
OperatorExpr [
- FunctionCall null.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.19E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
<
- FunctionCall null.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [polygon2]
:
OperatorExpr [
- FunctionCall null.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
>=
- FunctionCall null.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.19E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [polygon3]
:
OperatorExpr [
- FunctionCall null.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.19E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
<=
- FunctionCall null.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_rectangle/issue363_inequality_rectangle.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_rectangle/issue363_inequality_rectangle.3.ast
index ba93efa..241edf6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_rectangle/issue363_inequality_rectangle.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/issue363_inequality_rectangle/issue363_inequality_rectangle.3.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [rectangle0]
:
OperatorExpr [
- FunctionCall null.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 5.5487,0.48765]
]
>
- FunctionCall null.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.5678,-1.00e-10 5.5487,0.48765]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [rectangle1]
:
OperatorExpr [
- FunctionCall null.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.5678,-1.00e-10 5.5487,0.48765]
]
<
- FunctionCall null.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 5.5487,0.48765]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [rectangle2]
:
OperatorExpr [
- FunctionCall null.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 5.5487,0.48765]
]
>=
- FunctionCall null.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.5678,-1.00e-10 5.5487,0.48765]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [rectangle3]
:
OperatorExpr [
- FunctionCall null.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.5678,-1.00e-10 5.5487,0.48765]
]
<=
- FunctionCall null.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 5.5487,0.48765]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/year_month_duration_order/year_month_duration_order.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/year_month_duration_order/year_month_duration_order.3.ast
index 3d1f63c..955c22c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/year_month_duration_order/year_month_duration_order.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/comparison/year_month_duration_order/year_month_duration_order.3.ast
@@ -2,22 +2,22 @@
Query:
Let Variable [ Name=$dr1 ]
:=
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P439Y]
]
Let Variable [ Name=$dr2 ]
:=
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [-P328M]
]
Let Variable [ Name=$dr3 ]
:=
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [-P48Y12M]
]
Let Variable [ Name=$dr4 ]
:=
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P12M]
]
SELECT ELEMENT [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/binary_01/binary_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/binary_01/binary_01.3.ast
index f099319..a4d112a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/binary_01/binary_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/binary_01/binary_01.3.ast
@@ -1,43 +1,43 @@
DataverseUse test
Query:
OrderedListConstructor [
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [ABCDEF0123456789]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [abcdef0123456789]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [0A0B0C0D0E0F]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [01020304050607080900]
]
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] []
]
- FunctionCall test.hex@1[
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [ABCDEF0123456789]
]
]
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM+/]
]
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] []
]
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [QXN0ZXJpeA==]
]
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [QXN0ZXJpeAE=]
]
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [QXN0ZXJpeAE8]
]
- FunctionCall test.base64@1[
- FunctionCall test.base64@1[
+ FunctionCall asterix.base64@1[
+ FunctionCall asterix.base64@1[
LiteralExpr [STRING] [QXN0ZXJpeAE8]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/boolean_01/boolean_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/boolean_01/boolean_01.3.ast
index f247b92..f2b6571 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/boolean_01/boolean_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/boolean_01/boolean_01.3.ast
@@ -4,22 +4,22 @@
(
LiteralExpr [STRING] [boolean1]
:
- FunctionCall test.boolean@1[
+ FunctionCall asterix.boolean@1[
LiteralExpr [STRING] [true]
]
)
(
LiteralExpr [STRING] [boolean2]
:
- FunctionCall test.boolean@1[
+ FunctionCall asterix.boolean@1[
LiteralExpr [STRING] [false]
]
)
(
LiteralExpr [STRING] [boolean3]
:
- FunctionCall test.boolean@1[
- FunctionCall test.boolean@1[
+ FunctionCall asterix.boolean@1[
+ FunctionCall asterix.boolean@1[
LiteralExpr [STRING] [false]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/circle_01/circle_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/circle_01/circle_01.3.ast
index f8be79e..66f3752 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/circle_01/circle_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/circle_01/circle_01.3.ast
@@ -4,22 +4,22 @@
(
LiteralExpr [STRING] [circle1]
:
- FunctionCall test.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2]
]
)
(
LiteralExpr [STRING] [circle2]
:
- FunctionCall test.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 +10.5E-2]
]
)
(
LiteralExpr [STRING] [circle3]
:
- FunctionCall test.circle@1[
- FunctionCall test.circle@1[
+ FunctionCall asterix.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 +10.5E-2]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/date_01/date_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/date_01/date_01.3.ast
index b54c957..93eda8c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/date_01/date_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/date_01/date_01.3.ast
@@ -4,78 +4,78 @@
(
LiteralExpr [STRING] [date1]
:
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
)
(
LiteralExpr [STRING] [date2]
:
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1987-11-19]
]
)
(
LiteralExpr [STRING] [date3]
:
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1987-11-19]
]
)
(
LiteralExpr [STRING] [date4]
:
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [0001-12-27]
]
)
(
LiteralExpr [STRING] [date5]
:
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1951-12-27]
]
)
(
LiteralExpr [STRING] [date6]
:
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-2043-11-19]
]
)
(
LiteralExpr [STRING] [date7]
:
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-19280329]
]
)
(
LiteralExpr [STRING] [date8]
:
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [19280329]
]
)
(
LiteralExpr [STRING] [date9]
:
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [19000228]
]
)
(
LiteralExpr [STRING] [date10]
:
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [20000229]
]
)
(
LiteralExpr [STRING] [date11]
:
- FunctionCall test.date@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [20000229]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/datetime_01/datetime_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/datetime_01/datetime_01.3.ast
index 7b80fb1..cbe87ec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/datetime_01/datetime_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/datetime_01/datetime_01.3.ast
@@ -4,106 +4,106 @@
(
LiteralExpr [STRING] [datetime1]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2010-10-30T10:50:56.999+05:45]
]
)
(
LiteralExpr [STRING] [datetime2]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2010-10-30T10:30:56.250-10:00]
]
)
(
LiteralExpr [STRING] [datetime3]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T09:20:00.200Z]
]
)
(
LiteralExpr [STRING] [datetime4]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T10:50:56Z]
]
)
(
LiteralExpr [STRING] [datetime5]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1987-11-19T10:50:56.099-05:30]
]
)
(
LiteralExpr [STRING] [datetime6]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-0001-11-19T10:50:56.719Z]
]
)
(
LiteralExpr [STRING] [datetime7]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1951-12-27T12:20:15Z]
]
)
(
LiteralExpr [STRING] [datetime8]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2043-11-19T10:50:56.719Z]
]
)
(
LiteralExpr [STRING] [datetime9]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-19280329T174937374-0630]
]
)
(
LiteralExpr [STRING] [datetime10]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-19280329T174937374+0630]
]
)
(
LiteralExpr [STRING] [datetime11]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-19280329T174937374]
]
)
(
LiteralExpr [STRING] [datetime12]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-19280329T174937374+0630]
]
)
(
LiteralExpr [STRING] [datetime13]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-19280329T17493737+0630]
]
)
(
LiteralExpr [STRING] [datetime14]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-19280301T05493737+0630]
]
)
(
LiteralExpr [STRING] [datetime15]
:
- FunctionCall test.datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-19280301T05493737+0630]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/double_01/double_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/double_01/double_01.3.ast
index 903775c..ef36c04 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/double_01/double_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/double_01/double_01.3.ast
@@ -4,50 +4,50 @@
(
LiteralExpr [STRING] [double1]
:
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [NaN]
]
)
(
LiteralExpr [STRING] [double2]
:
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [INF]
]
)
(
LiteralExpr [STRING] [double3]
:
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-INF]
]
)
(
LiteralExpr [STRING] [double4]
:
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-80.20d]
]
)
(
LiteralExpr [STRING] [double5]
:
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-20.56e-30]
]
)
(
LiteralExpr [STRING] [double6]
:
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-20.56e-300]
]
)
(
LiteralExpr [STRING] [double7]
:
- FunctionCall test.double@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-20.56e-300]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/duration_01/duration_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/duration_01/duration_01.3.ast
index 566d8d2..d65e33c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/duration_01/duration_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/duration_01/duration_01.3.ast
@@ -4,92 +4,92 @@
(
LiteralExpr [STRING] [duration1]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P30Y10M25DT13H12M50S]
]
)
(
LiteralExpr [STRING] [duration2]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P25DT13H12M50S]
]
)
(
LiteralExpr [STRING] [duration3]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [PT13H12M50S]
]
)
(
LiteralExpr [STRING] [duration4]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P30YT12MS]
]
)
(
LiteralExpr [STRING] [duration5]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [PT13H]
]
)
(
LiteralExpr [STRING] [duration6]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P30Y10M25DT13H12M50S]
]
)
(
LiteralExpr [STRING] [duration7]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P25DT13H12M50S]
]
)
(
LiteralExpr [STRING] [duration8]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-PT13H50S]
]
)
(
LiteralExpr [STRING] [duration9]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P120D]
]
)
(
LiteralExpr [STRING] [duration10]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P28M]
]
)
(
LiteralExpr [STRING] [duration11]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [PT29M90.937S]
]
)
(
LiteralExpr [STRING] [duration12]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P300Y15M60DT300H98M482.435S]
]
)
(
LiteralExpr [STRING] [duration13]
:
- FunctionCall test.duration@1[
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P300Y15M60DT300H98M482.435S]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/duration_02/duration_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/duration_02/duration_02.3.ast
index 5ef3343..e615b56 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/duration_02/duration_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/duration_02/duration_02.3.ast
@@ -4,92 +4,92 @@
(
LiteralExpr [STRING] [duration1]
:
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P30Y10M]
]
)
(
LiteralExpr [STRING] [duration2]
:
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [P25DT13H12M50S]
]
)
(
LiteralExpr [STRING] [duration3]
:
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT13H12M50S]
]
)
(
LiteralExpr [STRING] [duration4]
:
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P30Y]
]
)
(
LiteralExpr [STRING] [duration5]
:
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT13H]
]
)
(
LiteralExpr [STRING] [duration6]
:
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [-P30Y10M]
]
)
(
LiteralExpr [STRING] [duration7]
:
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [-P25DT13H12M50S]
]
)
(
LiteralExpr [STRING] [duration8]
:
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [-PT13H50S]
]
)
(
LiteralExpr [STRING] [duration9]
:
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [P120D]
]
)
(
LiteralExpr [STRING] [duration10]
:
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [-P28M]
]
)
(
LiteralExpr [STRING] [duration11]
:
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT29M90.937S]
]
)
(
LiteralExpr [STRING] [duration12]
:
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P300Y15M]
]
)
(
LiteralExpr [STRING] [duration13]
:
- FunctionCall test.year-month-duration@1[
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P300Y15M]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/float_01/float_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/float_01/float_01.3.ast
index caf9745..6a8e42b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/float_01/float_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/float_01/float_01.3.ast
@@ -4,43 +4,43 @@
(
LiteralExpr [STRING] [float1]
:
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [NaN]
]
)
(
LiteralExpr [STRING] [float2]
:
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [INF]
]
)
(
LiteralExpr [STRING] [float3]
:
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-INF]
]
)
(
LiteralExpr [STRING] [float4]
:
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-80.20]
]
)
(
LiteralExpr [STRING] [float5]
:
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-20.56e-30]
]
)
(
LiteralExpr [STRING] [float6]
:
- FunctionCall test.float@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-20.56e-30]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/int_01/int_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/int_01/int_01.3.ast
index 1ee39a1..e346cec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/int_01/int_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/int_01/int_01.3.ast
@@ -4,71 +4,71 @@
(
LiteralExpr [STRING] [int8]
:
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+80i8]
]
)
(
LiteralExpr [STRING] [int16]
:
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [160]
]
)
(
LiteralExpr [STRING] [int32]
:
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+320i32]
]
)
(
LiteralExpr [STRING] [int64]
:
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [640]
]
)
(
LiteralExpr [STRING] [int8_2]
:
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-80]
]
)
(
LiteralExpr [STRING] [int16_2]
:
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-160i16]
]
)
(
LiteralExpr [STRING] [int32_2]
:
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-320]
]
)
(
LiteralExpr [STRING] [int64_2]
:
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-640i64]
]
)
(
LiteralExpr [STRING] [int64_min]
:
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-9223372036854775808]
]
)
(
LiteralExpr [STRING] [int8_3]
:
- FunctionCall test.int8@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+80i8]
]
]
@@ -76,8 +76,8 @@
(
LiteralExpr [STRING] [int16_3]
:
- FunctionCall test.int16@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [160]
]
]
@@ -85,8 +85,8 @@
(
LiteralExpr [STRING] [int32_3]
:
- FunctionCall test.int32@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+320i32]
]
]
@@ -94,8 +94,8 @@
(
LiteralExpr [STRING] [int64_3]
:
- FunctionCall test.int64@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [640]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast
index c993fe1..600bdee 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/interval/interval.3.ast
@@ -4,11 +4,11 @@
(
LiteralExpr [STRING] [interval41]
:
- FunctionCall test.interval-start-from-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval-start-from-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [0001-12-27]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y394DT48H398.483S]
]
]
@@ -16,9 +16,9 @@
(
LiteralExpr [STRING] [interval42]
:
- FunctionCall test.interval-start-from-date@2[
+ FunctionCall asterix.interval-start-from-date@2[
LiteralExpr [STRING] [0001-12-27]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y394DT48H398.483S]
]
]
@@ -26,8 +26,8 @@
(
LiteralExpr [STRING] [interval43]
:
- FunctionCall test.interval-start-from-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval-start-from-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [0001-12-27]
]
LiteralExpr [STRING] [P3Y394DT48H398.483S]
@@ -36,7 +36,7 @@
(
LiteralExpr [STRING] [interval44]
:
- FunctionCall test.interval-start-from-date@2[
+ FunctionCall asterix.interval-start-from-date@2[
LiteralExpr [STRING] [0001-12-27]
LiteralExpr [STRING] [P3Y394DT48H398.483S]
]
@@ -44,9 +44,9 @@
(
LiteralExpr [STRING] [interval45]
:
- FunctionCall test.interval-start-from-date@2[
+ FunctionCall asterix.interval-start-from-date@2[
LiteralExpr [NULL]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y394DT48H398.483S]
]
]
@@ -54,8 +54,8 @@
(
LiteralExpr [STRING] [interval46]
:
- FunctionCall test.interval-start-from-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval-start-from-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [0001-12-27]
]
LiteralExpr [NULL]
@@ -64,11 +64,11 @@
(
LiteralExpr [STRING] [interval51]
:
- FunctionCall test.interval-start-from-time@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.interval-start-from-time@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [20:03:20.948]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P60DT48M389.938S]
]
]
@@ -76,9 +76,9 @@
(
LiteralExpr [STRING] [interval52]
:
- FunctionCall test.interval-start-from-time@2[
+ FunctionCall asterix.interval-start-from-time@2[
LiteralExpr [STRING] [20:03:20.948]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P60DT48M389.938S]
]
]
@@ -86,8 +86,8 @@
(
LiteralExpr [STRING] [interval53]
:
- FunctionCall test.interval-start-from-time@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.interval-start-from-time@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [20:03:20.948]
]
LiteralExpr [STRING] [P60DT48M389.938S]
@@ -96,7 +96,7 @@
(
LiteralExpr [STRING] [interval54]
:
- FunctionCall test.interval-start-from-time@2[
+ FunctionCall asterix.interval-start-from-time@2[
LiteralExpr [STRING] [20:03:20.948]
LiteralExpr [STRING] [P60DT48M389.938S]
]
@@ -104,9 +104,9 @@
(
LiteralExpr [STRING] [interval55]
:
- FunctionCall test.interval-start-from-time@2[
+ FunctionCall asterix.interval-start-from-time@2[
LiteralExpr [NULL]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P60DT48M389.938S]
]
]
@@ -114,8 +114,8 @@
(
LiteralExpr [STRING] [interval56]
:
- FunctionCall test.interval-start-from-time@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.interval-start-from-time@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [20:03:20.948]
]
LiteralExpr [NULL]
@@ -124,11 +124,11 @@
(
LiteralExpr [STRING] [interval61]
:
- FunctionCall test.interval-start-from-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval-start-from-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-2043-11-19T15:32:39.293]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P439Y3M20DT20H39M58.949S]
]
]
@@ -136,9 +136,9 @@
(
LiteralExpr [STRING] [interval62]
:
- FunctionCall test.interval-start-from-datetime@2[
+ FunctionCall asterix.interval-start-from-datetime@2[
LiteralExpr [STRING] [-2043-11-19T15:32:39.293]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P439Y3M20DT20H39M58.949S]
]
]
@@ -146,8 +146,8 @@
(
LiteralExpr [STRING] [interval63]
:
- FunctionCall test.interval-start-from-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval-start-from-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-2043-11-19T15:32:39.293]
]
LiteralExpr [STRING] [P439Y3M20DT20H39M58.949S]
@@ -156,7 +156,7 @@
(
LiteralExpr [STRING] [interval64]
:
- FunctionCall test.interval-start-from-datetime@2[
+ FunctionCall asterix.interval-start-from-datetime@2[
LiteralExpr [STRING] [-2043-11-19T15:32:39.293]
LiteralExpr [STRING] [P439Y3M20DT20H39M58.949S]
]
@@ -164,9 +164,9 @@
(
LiteralExpr [STRING] [interval65]
:
- FunctionCall test.interval-start-from-datetime@2[
+ FunctionCall asterix.interval-start-from-datetime@2[
LiteralExpr [NULL]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P439Y3M20DT20H39M58.949S]
]
]
@@ -174,8 +174,8 @@
(
LiteralExpr [STRING] [interval66]
:
- FunctionCall test.interval-start-from-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval-start-from-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-2043-11-19T15:32:39.293]
]
LiteralExpr [NULL]
@@ -184,11 +184,11 @@
(
LiteralExpr [STRING] [interval71]
:
- FunctionCall test.interval@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2012-10-21]
]
]
@@ -196,9 +196,9 @@
(
LiteralExpr [STRING] [interval72]
:
- FunctionCall test.interval@2[
+ FunctionCall asterix.interval@2[
LiteralExpr [NULL]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2012-10-21]
]
]
@@ -206,8 +206,8 @@
(
LiteralExpr [STRING] [interval73]
:
- FunctionCall test.interval@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
LiteralExpr [NULL]
@@ -216,11 +216,11 @@
(
LiteralExpr [STRING] [interval74]
:
- FunctionCall test.interval@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [03:04:05.678-11:00]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [232425267+0200]
]
]
@@ -228,9 +228,9 @@
(
LiteralExpr [STRING] [interval75]
:
- FunctionCall test.interval@2[
+ FunctionCall asterix.interval@2[
LiteralExpr [NULL]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [232425267+0200]
]
]
@@ -238,8 +238,8 @@
(
LiteralExpr [STRING] [interval76]
:
- FunctionCall test.interval@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [03:04:05.678-11:00]
]
LiteralExpr [NULL]
@@ -248,11 +248,11 @@
(
LiteralExpr [STRING] [interval77]
:
- FunctionCall test.interval@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
@@ -260,9 +260,9 @@
(
LiteralExpr [STRING] [interval78]
:
- FunctionCall test.interval@2[
+ FunctionCall asterix.interval@2[
LiteralExpr [NULL]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19991112T124935948-0700]
]
]
@@ -270,8 +270,8 @@
(
LiteralExpr [STRING] [interval79]
:
- FunctionCall test.interval@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1987-11-19T02:43:57.938+08:00]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/line_01/line_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/line_01/line_01.3.ast
index a9bcd9f..4ac56e3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/line_01/line_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/line_01/line_01.3.ast
@@ -4,22 +4,22 @@
(
LiteralExpr [STRING] [line1]
:
- FunctionCall test.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1234,11.1e-1 +10.2E-2,-11.22]
]
)
(
LiteralExpr [STRING] [line2]
:
- FunctionCall test.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 +10.5E-2,-01.02]
]
)
(
LiteralExpr [STRING] [line3]
:
- FunctionCall test.line@1[
- FunctionCall test.line@1[
+ FunctionCall asterix.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 +10.5E-2,-01.02]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/point_01/point_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/point_01/point_01.3.ast
index cf0faa2..ae93fc2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/point_01/point_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/point_01/point_01.3.ast
@@ -4,36 +4,36 @@
(
LiteralExpr [STRING] [point1]
:
- FunctionCall test.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [80.10d, -10E5]
]
)
(
LiteralExpr [STRING] [point3d1]
:
- FunctionCall test.point3d@1[
+ FunctionCall asterix.point3d@1[
LiteralExpr [STRING] [5e2, -10E+5, +10.5e-10d]
]
)
(
LiteralExpr [STRING] [point2]
:
- FunctionCall test.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [5.10E-10d, -10E5]
]
)
(
LiteralExpr [STRING] [point3d2]
:
- FunctionCall test.point3d@1[
+ FunctionCall asterix.point3d@1[
LiteralExpr [STRING] [0.5e+2d, -10.0E+5d, +10.05e-10]
]
)
(
LiteralExpr [STRING] [point3]
:
- FunctionCall test.point@1[
- FunctionCall test.point@1[
+ FunctionCall asterix.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [5.10E-10d, -10E5]
]
]
@@ -41,8 +41,8 @@
(
LiteralExpr [STRING] [point3d3]
:
- FunctionCall test.point3d@1[
- FunctionCall test.point3d@1[
+ FunctionCall asterix.point3d@1[
+ FunctionCall asterix.point3d@1[
LiteralExpr [STRING] [0.5e+2d, -10.0E+5d, +10.05e-10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/polygon_01/polygon_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/polygon_01/polygon_01.3.ast
index ece41d9..22456e3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/polygon_01/polygon_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/polygon_01/polygon_01.3.ast
@@ -4,22 +4,22 @@
(
LiteralExpr [STRING] [polygon1]
:
- FunctionCall test.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.2,+1.3e2 -2.14E+5,2.15 -3.5e+2,03.6 -4.6E-3,+4.81]
]
)
(
LiteralExpr [STRING] [polygon2]
:
- FunctionCall test.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.0,+10.5e2 -02.15E+50,2.5 -1.0,+3.3e3 -2.50E+05,20.15 +3.5e+2,03.6 -4.60E-3,+4.75 -2,+1.0e2 -2.00E+5,20.10 30.5,03.25 -4.33E-3,+4.75]
]
)
(
LiteralExpr [STRING] [polygon3]
:
- FunctionCall test.polygon@1[
- FunctionCall test.polygon@1[
+ FunctionCall asterix.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [-1.2,+1.3e2 -2.14E+5,2.15 -3.5e+2,03.6 -4.6E-3,+4.81]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-01/primitive-01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-01/primitive-01.3.ast
index db232e1..34bca75 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-01/primitive-01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-01/primitive-01.3.ast
@@ -3,35 +3,35 @@
(
LiteralExpr [STRING] [$a]
:
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-127]
]
)
(
LiteralExpr [STRING] [$b]
:
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [127]
]
)
(
LiteralExpr [STRING] [$c]
:
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [0]
]
)
(
LiteralExpr [STRING] [$d]
:
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
)
(
LiteralExpr [STRING] [$e]
:
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-1]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-02/primitive-02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-02/primitive-02.3.ast
index 24e3507..5a662a0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-02/primitive-02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-02/primitive-02.3.ast
@@ -3,49 +3,49 @@
(
LiteralExpr [STRING] [$a]
:
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-32767]
]
)
(
LiteralExpr [STRING] [$b]
:
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [32767]
]
)
(
LiteralExpr [STRING] [$c]
:
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [0]
]
)
(
LiteralExpr [STRING] [$d]
:
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
)
(
LiteralExpr [STRING] [$e]
:
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-1]
]
)
(
LiteralExpr [STRING] [$f]
:
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [16383]
]
)
(
LiteralExpr [STRING] [$g]
:
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-16383]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-03/primitive-03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-03/primitive-03.3.ast
index c46f250..b07b99a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-03/primitive-03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-03/primitive-03.3.ast
@@ -3,49 +3,49 @@
(
LiteralExpr [STRING] [$a]
:
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-2147483647]
]
)
(
LiteralExpr [STRING] [$b]
:
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2147483647]
]
)
(
LiteralExpr [STRING] [$c]
:
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [0]
]
)
(
LiteralExpr [STRING] [$d]
:
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
)
(
LiteralExpr [STRING] [$e]
:
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-1]
]
)
(
LiteralExpr [STRING] [$f]
:
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1073741828]
]
)
(
LiteralExpr [STRING] [$g]
:
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-1073741828]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-04/primitive-04.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-04/primitive-04.3.ast
index e2136d4..0cae729 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-04/primitive-04.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/primitive-04/primitive-04.3.ast
@@ -3,49 +3,49 @@
(
LiteralExpr [STRING] [$a]
:
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [9222872036854775809]
]
)
(
LiteralExpr [STRING] [$b]
:
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-9222872036854775809]
]
)
(
LiteralExpr [STRING] [$c]
:
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [0]
]
)
(
LiteralExpr [STRING] [$d]
:
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
)
(
LiteralExpr [STRING] [$e]
:
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-1]
]
)
(
LiteralExpr [STRING] [$f]
:
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [4611436018427387904]
]
)
(
LiteralExpr [STRING] [$g]
:
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4611436018427387904]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/rectangle_01/rectangle_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/rectangle_01/rectangle_01.3.ast
index 9632ac0..55c1122 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/rectangle_01/rectangle_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/rectangle_01/rectangle_01.3.ast
@@ -4,22 +4,22 @@
(
LiteralExpr [STRING] [rectangle1]
:
- FunctionCall test.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [5.1,11.8 87.6,15.6548]
]
)
(
LiteralExpr [STRING] [rectangle2]
:
- FunctionCall test.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [0.1234,-1.00e-10 5.5487,0.48765]
]
)
(
LiteralExpr [STRING] [rectangle3]
:
- FunctionCall test.rectangle@1[
- FunctionCall test.rectangle@1[
+ FunctionCall asterix.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [5.1,11.8 87.6,15.6548]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/string_01/string_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/string_01/string_01.3.ast
index 5d4de90..2696db5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/string_01/string_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/string_01/string_01.3.ast
@@ -4,22 +4,22 @@
(
LiteralExpr [STRING] [string1]
:
- FunctionCall test.string@1[
+ FunctionCall asterix.string@1[
LiteralExpr [STRING] [true]
]
)
(
LiteralExpr [STRING] [string2]
:
- FunctionCall test.string@1[
+ FunctionCall asterix.string@1[
LiteralExpr [STRING] [false"]
]
)
(
LiteralExpr [STRING] [string3]
:
- FunctionCall test.string@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.string@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [8]
]
]
@@ -27,8 +27,8 @@
(
LiteralExpr [STRING] [string4]
:
- FunctionCall test.string@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.string@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [16]
]
]
@@ -36,8 +36,8 @@
(
LiteralExpr [STRING] [string5]
:
- FunctionCall test.string@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.string@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [32]
]
]
@@ -45,8 +45,8 @@
(
LiteralExpr [STRING] [string6]
:
- FunctionCall test.string@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.string@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [64]
]
]
@@ -54,8 +54,8 @@
(
LiteralExpr [STRING] [string7]
:
- FunctionCall test.string@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.string@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1.25]
]
]
@@ -63,8 +63,8 @@
(
LiteralExpr [STRING] [string8]
:
- FunctionCall test.string@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.string@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2.5]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/time_01/time_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/time_01/time_01.3.ast
index 6be78b1..6c688cb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/time_01/time_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/time_01/time_01.3.ast
@@ -4,85 +4,85 @@
(
LiteralExpr [STRING] [time1]
:
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [10:50:56.200+05:00]
]
)
(
LiteralExpr [STRING] [time2]
:
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [10:50:56.200-10:15]
]
)
(
LiteralExpr [STRING] [time3]
:
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [10:50:56]
]
)
(
LiteralExpr [STRING] [time4]
:
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [10:50:56.200Z]
]
)
(
LiteralExpr [STRING] [time5]
:
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [23:59:59.999-13:30]
]
)
(
LiteralExpr [STRING] [time6]
:
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [00:00:00.000+14:45]
]
)
(
LiteralExpr [STRING] [time7]
:
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:59:00.019-01:00]
]
)
(
LiteralExpr [STRING] [time8]
:
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:59:00.01-01:00]
]
)
(
LiteralExpr [STRING] [time9]
:
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:59:00.019-01:00]
]
)
(
LiteralExpr [STRING] [time10]
:
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12590001-0100]
]
)
(
LiteralExpr [STRING] [time11]
:
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [125900019+0100]
]
)
(
LiteralExpr [STRING] [time12]
:
- FunctionCall test.time@1[
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [125900019+0100]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/uuid_01/uuid_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/uuid_01/uuid_01.3.ast
index 9b2f4e0..addc784 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/uuid_01/uuid_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/uuid_01/uuid_01.3.ast
@@ -4,22 +4,22 @@
(
LiteralExpr [STRING] [uuid1]
:
- FunctionCall test.uuid@1[
+ FunctionCall asterix.uuid@1[
LiteralExpr [STRING] [02a199ca-bf58-412e-bd9f-60a0c975a8ac]
]
)
(
LiteralExpr [STRING] [uuid2]
:
- FunctionCall test.uuid@1[
+ FunctionCall asterix.uuid@1[
LiteralExpr [STRING] [8cea25ab-55f8-467e-929d-94888f754832]
]
)
(
LiteralExpr [STRING] [uuid3]
:
- FunctionCall test.uuid@1[
- FunctionCall test.uuid@1[
+ FunctionCall asterix.uuid@1[
+ FunctionCall asterix.uuid@1[
LiteralExpr [STRING] [8cea25ab-55f8-467e-929d-94888f754832]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/csv/basic-types/basic-types.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/csv/basic-types/basic-types.2.ast
index ea4d950..0f6da51 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/csv/basic-types/basic-types.2.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/csv/basic-types/basic-types.2.ast
@@ -11,7 +11,7 @@
(
LiteralExpr [STRING] [string]
:
- FunctionCall test.string@1[
+ FunctionCall asterix.string@1[
LiteralExpr [STRING] [Nancy]
]
)
@@ -23,7 +23,7 @@
(
LiteralExpr [STRING] [double]
:
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-2013.5938237483274]
]
)
@@ -35,112 +35,112 @@
(
LiteralExpr [STRING] [int8]
:
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [125]
]
)
(
LiteralExpr [STRING] [int16]
:
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [32765]
]
)
(
LiteralExpr [STRING] [int32]
:
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [294967295]
]
)
(
LiteralExpr [STRING] [int64]
:
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1700000000000000000]
]
)
(
LiteralExpr [STRING] [date]
:
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-2011-01-27]
]
)
(
LiteralExpr [STRING] [time]
:
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:20:30Z]
]
)
(
LiteralExpr [STRING] [datetime]
:
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1951-12-27T12:20:30]
]
)
(
LiteralExpr [STRING] [duration]
:
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P10Y11M12DT10H50M30S]
]
)
(
LiteralExpr [STRING] [point]
:
- FunctionCall test.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [41.00,44.00]
]
)
(
LiteralExpr [STRING] [point3d]
:
- FunctionCall test.point3d@1[
+ FunctionCall asterix.point3d@1[
LiteralExpr [STRING] [44.00,13.00,41.00]
]
)
(
LiteralExpr [STRING] [line]
:
- FunctionCall test.line@1[
+ FunctionCall asterix.line@1[
LiteralExpr [STRING] [10.1,11.1 10.2,11.2]
]
)
(
LiteralExpr [STRING] [rectangle]
:
- FunctionCall test.rectangle@1[
+ FunctionCall asterix.rectangle@1[
LiteralExpr [STRING] [5.1,11.8 87.6,15.6548]
]
)
(
LiteralExpr [STRING] [polygon]
:
- FunctionCall test.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [1.2,1.3 2.1,2.5 3.5,3.6 4.6,4.8]
]
)
(
LiteralExpr [STRING] [circle]
:
- FunctionCall test.circle@1[
+ FunctionCall asterix.circle@1[
LiteralExpr [STRING] [10.1,11.1 10.2]
]
)
(
LiteralExpr [STRING] [binary]
:
- FunctionCall test.hex@1[
+ FunctionCall asterix.hex@1[
LiteralExpr [STRING] [ABCDEF0123456789]
]
)
(
LiteralExpr [STRING] [uuid]
:
- FunctionCall test.uuid@1[
+ FunctionCall asterix.uuid@1[
LiteralExpr [STRING] [5c848e5c-6b6a-498f-8452-8847a2957421]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/custord/customer_q_03/customer_q_03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/custord/customer_q_03/customer_q_03.3.ast
index a32db1d..742435a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/custord/customer_q_03/customer_q_03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/custord/customer_q_03/customer_q_03.3.ast
@@ -92,7 +92,7 @@
Field=cid
]
>=
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/custord/customer_q_04/customer_q_04.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/custord/customer_q_04/customer_q_04.3.ast
index ed79556..1c3212c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/custord/customer_q_04/customer_q_04.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/custord/customer_q_04/customer_q_04.3.ast
@@ -113,7 +113,7 @@
Field=cid
]
>=
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/custord/customer_q_05/customer_q_05.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/custord/customer_q_05/customer_q_05.3.ast
index 8c758d6..5196d91 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/custord/customer_q_05/customer_q_05.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/custord/customer_q_05/customer_q_05.3.ast
@@ -105,7 +105,7 @@
Field=cid
]
>=
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [3]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/insert-with-autogenerated-pk_adm_01/insert-with-autogenerated-pk_adm_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/insert-with-autogenerated-pk_adm_01/insert-with-autogenerated-pk_adm_01.3.ast
index 9e739f4..69ad67d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/insert-with-autogenerated-pk_adm_01/insert-with-autogenerated-pk_adm_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/insert-with-autogenerated-pk_adm_01/insert-with-autogenerated-pk_adm_01.3.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/insert-with-autogenerated-pk_adm_02/insert-with-autogenerated-pk_adm_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/insert-with-autogenerated-pk_adm_02/insert-with-autogenerated-pk_adm_02.3.ast
index 9e739f4..69ad67d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/insert-with-autogenerated-pk_adm_02/insert-with-autogenerated-pk_adm_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/insert-with-autogenerated-pk_adm_02/insert-with-autogenerated-pk_adm_02.3.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/insert-with-autogenerated-pk_adm_03/insert-with-autogenerated-pk_adm_03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/insert-with-autogenerated-pk_adm_03/insert-with-autogenerated-pk_adm_03.3.ast
index 9fbfba8..a224f37 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/insert-with-autogenerated-pk_adm_03/insert-with-autogenerated-pk_adm_03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/insert-with-autogenerated-pk_adm_03/insert-with-autogenerated-pk_adm_03.3.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_01/load-with-autogenerated-pk_adm_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_01/load-with-autogenerated-pk_adm_01.3.ast
index 30d57a3..5ce110a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_01/load-with-autogenerated-pk_adm_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_01/load-with-autogenerated-pk_adm_01.3.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_02/load-with-autogenerated-pk_adm_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_02/load-with-autogenerated-pk_adm_01.3.ast
index 30d57a3..5ce110a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_02/load-with-autogenerated-pk_adm_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_02/load-with-autogenerated-pk_adm_01.3.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_03/load-with-autogenerated-pk_adm_03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_03/load-with-autogenerated-pk_adm_03.3.ast
index 30d57a3..5ce110a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_03/load-with-autogenerated-pk_adm_03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_03/load-with-autogenerated-pk_adm_03.3.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_04/load-with-autogenerated-pk_adm_04.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_04/load-with-autogenerated-pk_adm_04.3.ast
index 30d57a3..5ce110a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_04/load-with-autogenerated-pk_adm_04.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_adm_04/load-with-autogenerated-pk_adm_04.3.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_csv_01/load-with-autogenerated-pk_csv_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_csv_01/load-with-autogenerated-pk_csv_01.3.ast
index 30d57a3..5ce110a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_csv_01/load-with-autogenerated-pk_csv_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_csv_01/load-with-autogenerated-pk_csv_01.3.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_csv_02/load-with-autogenerated-pk_csv_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_csv_02/load-with-autogenerated-pk_csv_02.3.ast
index 30d57a3..5ce110a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_csv_02/load-with-autogenerated-pk_csv_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_csv_02/load-with-autogenerated-pk_csv_02.3.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_txt_01/load-with-autogenerated-pk_txt_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_txt_01/load-with-autogenerated-pk_txt_01.3.ast
index 0efb991..7a2ea92 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_txt_01/load-with-autogenerated-pk_txt_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-autogenerated-pk_txt_01/load-with-autogenerated-pk_txt_01.3.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-ngram-index-open/load-with-ngram-index-open.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-ngram-index-open/load-with-ngram-index-open.3.ast
index 6ddcba2..57a17cd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-ngram-index-open/load-with-ngram-index-open.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-ngram-index-open/load-with-ngram-index-open.3.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-ngram-index/load-with-ngram-index.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-ngram-index/load-with-ngram-index.3.ast
index 0e4c541..21e29aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-ngram-index/load-with-ngram-index.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-ngram-index/load-with-ngram-index.3.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-rtree-index-open/load-with-rtree-index-open.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-rtree-index-open/load-with-rtree-index-open.3.ast
index 1485b5e..3fc95da 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-rtree-index-open/load-with-rtree-index-open.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-rtree-index-open/load-with-rtree-index-open.3.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-rtree-index/load-with-rtree-index.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-rtree-index/load-with-rtree-index.3.ast
index ded6d72..6c1a91e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-rtree-index/load-with-rtree-index.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-rtree-index/load-with-rtree-index.3.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-word-index-open/load-with-word-index-open.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-word-index-open/load-with-word-index-open.3.ast
index 3b02994..39fd3c2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-word-index-open/load-with-word-index-open.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-word-index-open/load-with-word-index-open.3.ast
@@ -10,14 +10,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-word-index/load-with-word-index.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-word-index/load-with-word-index.3.ast
index a9e83dd..f00a084 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-word-index/load-with-word-index.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/load-with-word-index/load-with-word-index.3.ast
@@ -10,14 +10,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-nullable/scan-delete-inverted-index-ngram-secondary-index-nullable.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-nullable/scan-delete-inverted-index-ngram-secondary-index-nullable.5.ast
index 0e4c541..21e29aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-nullable/scan-delete-inverted-index-ngram-secondary-index-nullable.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-nullable/scan-delete-inverted-index-ngram-secondary-index-nullable.5.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-open/scan-delete-inverted-index-ngram-secondary-index-open.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-open/scan-delete-inverted-index-ngram-secondary-index-open.5.ast
index 6ddcba2..57a17cd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-open/scan-delete-inverted-index-ngram-secondary-index-open.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index-open/scan-delete-inverted-index-ngram-secondary-index-open.5.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index/scan-delete-inverted-index-ngram-secondary-index.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index/scan-delete-inverted-index-ngram-secondary-index.5.ast
index 0e4c541..21e29aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index/scan-delete-inverted-index-ngram-secondary-index.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-ngram-secondary-index/scan-delete-inverted-index-ngram-secondary-index.5.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-word-secondary-index-nullable/scan-delete-inverted-index-word-secondary-index-nullable.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-word-secondary-index-nullable/scan-delete-inverted-index-word-secondary-index-nullable.5.ast
index a9e83dd..f00a084 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-word-secondary-index-nullable/scan-delete-inverted-index-word-secondary-index-nullable.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-word-secondary-index-nullable/scan-delete-inverted-index-word-secondary-index-nullable.5.ast
@@ -10,14 +10,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-word-secondary-index-open/scan-delete-inverted-index-word-secondary-index-open.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-word-secondary-index-open/scan-delete-inverted-index-word-secondary-index-open.5.ast
index 3b02994..39fd3c2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-word-secondary-index-open/scan-delete-inverted-index-word-secondary-index-open.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-word-secondary-index-open/scan-delete-inverted-index-word-secondary-index-open.5.ast
@@ -10,14 +10,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-word-secondary-index/scan-delete-inverted-index-word-secondary-index.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-word-secondary-index/scan-delete-inverted-index-word-secondary-index.5.ast
index a9e83dd..f00a084 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-word-secondary-index/scan-delete-inverted-index-word-secondary-index.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-inverted-index-word-secondary-index/scan-delete-inverted-index-word-secondary-index.5.ast
@@ -10,14 +10,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-rtree-secondary-index-nullable/scan-delete-rtree-secondary-index-nullable.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-rtree-secondary-index-nullable/scan-delete-rtree-secondary-index-nullable.5.ast
index ded6d72..6c1a91e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-rtree-secondary-index-nullable/scan-delete-rtree-secondary-index-nullable.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-rtree-secondary-index-nullable/scan-delete-rtree-secondary-index-nullable.5.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-rtree-secondary-index-open/scan-delete-rtree-secondary-index-open.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-rtree-secondary-index-open/scan-delete-rtree-secondary-index-open.5.ast
index 1485b5e..3fc95da 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-rtree-secondary-index-open/scan-delete-rtree-secondary-index-open.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-rtree-secondary-index-open/scan-delete-rtree-secondary-index-open.5.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-rtree-secondary-index/scan-delete-rtree-secondary-index.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-rtree-secondary-index/scan-delete-rtree-secondary-index.5.ast
index ded6d72..6c1a91e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-rtree-secondary-index/scan-delete-rtree-secondary-index.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-delete-rtree-secondary-index/scan-delete-rtree-secondary-index.5.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable/scan-insert-inverted-index-ngram-secondary-index-nullable.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable/scan-insert-inverted-index-ngram-secondary-index-nullable.5.ast
index 8e5ec0b..89ced26 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable/scan-insert-inverted-index-ngram-secondary-index-nullable.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-nullable/scan-insert-inverted-index-ngram-secondary-index-nullable.5.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-open/scan-insert-inverted-index-ngram-secondary-index-open.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-open/scan-insert-inverted-index-ngram-secondary-index-open.5.ast
index 6ddcba2..57a17cd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-open/scan-insert-inverted-index-ngram-secondary-index-open.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index-open/scan-insert-inverted-index-ngram-secondary-index-open.5.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index/scan-insert-inverted-index-ngram-secondary-index.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index/scan-insert-inverted-index-ngram-secondary-index.5.ast
index 8e5ec0b..89ced26 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index/scan-insert-inverted-index-ngram-secondary-index.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-ngram-secondary-index/scan-insert-inverted-index-ngram-secondary-index.5.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable/scan-insert-inverted-index-word-secondary-index-nullable.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable/scan-insert-inverted-index-word-secondary-index-nullable.5.ast
index 2a11645..807fb94 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable/scan-insert-inverted-index-word-secondary-index-nullable.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-nullable/scan-insert-inverted-index-word-secondary-index-nullable.5.ast
@@ -10,14 +10,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-open/scan-insert-inverted-index-word-secondary-index-open.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-open/scan-insert-inverted-index-word-secondary-index-open.5.ast
index 3b02994..39fd3c2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-open/scan-insert-inverted-index-word-secondary-index-open.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-word-secondary-index-open/scan-insert-inverted-index-word-secondary-index-open.5.ast
@@ -10,14 +10,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-word-secondary-index/scan-insert-inverted-index-word-secondary-index.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-word-secondary-index/scan-insert-inverted-index-word-secondary-index.5.ast
index 2a11645..807fb94 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-word-secondary-index/scan-insert-inverted-index-word-secondary-index.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-inverted-index-word-secondary-index/scan-insert-inverted-index-word-secondary-index.5.ast
@@ -10,14 +10,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-rtree-secondary-index-nullable/scan-insert-rtree-secondary-index-nullable.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-rtree-secondary-index-nullable/scan-insert-rtree-secondary-index-nullable.5.ast
index a3863e7..cf52de3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-rtree-secondary-index-nullable/scan-insert-rtree-secondary-index-nullable.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-rtree-secondary-index-nullable/scan-insert-rtree-secondary-index-nullable.5.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-rtree-secondary-index-open/scan-insert-rtree-secondary-index-open.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-rtree-secondary-index-open/scan-insert-rtree-secondary-index-open.5.ast
index a3ab36b..85604e3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-rtree-secondary-index-open/scan-insert-rtree-secondary-index-open.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-rtree-secondary-index-open/scan-insert-rtree-secondary-index-open.5.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-rtree-secondary-index/scan-insert-rtree-secondary-index.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-rtree-secondary-index/scan-insert-rtree-secondary-index.5.ast
index a3863e7..cf52de3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-rtree-secondary-index/scan-insert-rtree-secondary-index.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/dml/scan-insert-rtree-secondary-index/scan-insert-rtree-secondary-index.5.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast
index 5d4c69d..8dfee3d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast
@@ -48,7 +48,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$t2 ]
Field=sender-location
@@ -73,7 +73,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=sender-location
@@ -87,7 +87,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/external-indexing/leftouterjoin/leftouterjoin.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/external-indexing/leftouterjoin/leftouterjoin.3.ast
index caf47d3..204a6a4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/external-indexing/leftouterjoin/leftouterjoin.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/external-indexing/leftouterjoin/leftouterjoin.3.ast
@@ -82,7 +82,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/external-indexing/rtree-index/rtree-index.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/external-indexing/rtree-index/rtree-index.3.ast
index 2f985dc..0345c25 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/external-indexing/rtree-index/rtree-index.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/external-indexing/rtree-index/rtree-index.3.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/equality-predicate/equality-predicate.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/equality-predicate/equality-predicate.5.ast
index e0501fd..a648bff 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/equality-predicate/equality-predicate.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/equality-predicate/equality-predicate.5.ast
@@ -15,7 +15,7 @@
Field=send-time
]
=
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2014-01-20T10:10:00]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-btree/insert-with-secondary-btree.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-btree/insert-with-secondary-btree.5.ast
index 8bc514e..1b75ed4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-btree/insert-with-secondary-btree.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-btree/insert-with-secondary-btree.5.ast
@@ -25,7 +25,7 @@
Field=send-time
]
>
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-08-20T10:10:00]
]
]
@@ -36,7 +36,7 @@
Field=send-time
]
<
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-11-20T10:10:00]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-inverted-ngram/insert-with-secondary-inverted-ngram.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-inverted-ngram/insert-with-secondary-inverted-ngram.5.ast
index 8257da4..1823b12 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-inverted-ngram/insert-with-secondary-inverted-ngram.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-inverted-ngram/insert-with-secondary-inverted-ngram.5.ast
@@ -10,7 +10,7 @@
]
Where
OperatorExpr [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$m ]
Field=message
@@ -24,7 +24,7 @@
Field=send-time
]
<
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-12-20T10:10:00]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-inverted-word/insert-with-secondary-inverted-word.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-inverted-word/insert-with-secondary-inverted-word.5.ast
index e60853f..75f6e3e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-inverted-word/insert-with-secondary-inverted-word.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-inverted-word/insert-with-secondary-inverted-word.5.ast
@@ -11,14 +11,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$m ]
Field=message
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [love sprint at&t verizon]
]
]
@@ -32,7 +32,7 @@
Field=send-time
]
<
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-12-20T10:10:00]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-rtree/insert-with-secondary-rtree.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-rtree/insert-with-secondary-rtree.5.ast
index 71e9ac4..8ae6bda1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-rtree/insert-with-secondary-rtree.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert-with-secondary-rtree/insert-with-secondary-rtree.5.ast
@@ -10,12 +10,12 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$m ]
Field=sender-location
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [40.0]
LiteralExpr [DOUBLE] [79.87]
@@ -35,7 +35,7 @@
Field=send-time
]
<
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-11-20T10:10:00.000Z]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert/insert.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert/insert.5.ast
index 18f08db..60fb2af 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert/insert.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/insert/insert.5.ast
@@ -15,7 +15,7 @@
Field=send-time
]
>
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-08-20T10:10:00]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-btree/load-with-secondary-btree.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-btree/load-with-secondary-btree.5.ast
index 5b83358..7571b85 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-btree/load-with-secondary-btree.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-btree/load-with-secondary-btree.5.ast
@@ -25,7 +25,7 @@
Field=send-time
]
>
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-08-20T10:10:00]
]
]
@@ -36,7 +36,7 @@
Field=send-time
]
<
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-11-20T10:10:00]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-inverted-ngram/load-with-secondary-inverted-ngram.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-inverted-ngram/load-with-secondary-inverted-ngram.5.ast
index 8257da4..1823b12 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-inverted-ngram/load-with-secondary-inverted-ngram.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-inverted-ngram/load-with-secondary-inverted-ngram.5.ast
@@ -10,7 +10,7 @@
]
Where
OperatorExpr [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$m ]
Field=message
@@ -24,7 +24,7 @@
Field=send-time
]
<
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-12-20T10:10:00]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-inverted-word/load-with-secondary-inverted-word.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-inverted-word/load-with-secondary-inverted-word.5.ast
index e60853f..75f6e3e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-inverted-word/load-with-secondary-inverted-word.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-inverted-word/load-with-secondary-inverted-word.5.ast
@@ -11,14 +11,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$m ]
Field=message
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [love sprint at&t verizon]
]
]
@@ -32,7 +32,7 @@
Field=send-time
]
<
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-12-20T10:10:00]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-rtree/load-with-secondary-rtree.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-rtree/load-with-secondary-rtree.5.ast
index 71e9ac4..8ae6bda1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-rtree/load-with-secondary-rtree.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-rtree/load-with-secondary-rtree.5.ast
@@ -10,12 +10,12 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$m ]
Field=sender-location
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [40.0]
LiteralExpr [DOUBLE] [79.87]
@@ -35,7 +35,7 @@
Field=send-time
]
<
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-11-20T10:10:00.000Z]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-rtree/load-with-secondary-rtree.6.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-rtree/load-with-secondary-rtree.6.ast
index af827a6..af46972 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-rtree/load-with-secondary-rtree.6.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load-with-secondary-rtree/load-with-secondary-rtree.6.ast
@@ -10,12 +10,12 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$m ]
Field=sender-location
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [40.0]
LiteralExpr [DOUBLE] [79.87]
@@ -35,7 +35,7 @@
Field=send-time
]
>
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-11-20T10:10:00.000Z]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load/load.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load/load.5.ast
index 2c74e63..a536843 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load/load.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/filters/load/load.5.ast
@@ -15,7 +15,7 @@
Field=send-time
]
>
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-08-20T10:10:00]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at03/at03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at03/at03.3.ast
index 79623e5..c412e91 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at03/at03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/at03/at03.3.ast
@@ -72,7 +72,7 @@
Groupby
Variable [ Name=$fus ]
:=
- FunctionCall test.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
Variable [ Name=$i ]
Field=user-since
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/query-issue550/query-issue550.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/query-issue550/query-issue550.3.ast
index 41a157e..c184468 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/query-issue550/query-issue550.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/flwor/query-issue550/query-issue550.3.ast
@@ -16,7 +16,7 @@
(
LiteralExpr [STRING] [t]
:
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-01-01T01:00:00]
]
)
@@ -40,7 +40,7 @@
(
LiteralExpr [STRING] [t]
:
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-01-01T01:01:00]
]
)
@@ -64,7 +64,7 @@
(
LiteralExpr [STRING] [t]
:
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-01-01T01:02:00]
]
)
@@ -88,7 +88,7 @@
(
LiteralExpr [STRING] [t]
:
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-01-01T01:03:00]
]
)
@@ -112,7 +112,7 @@
(
LiteralExpr [STRING] [t]
:
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-01-01T01:04:00]
]
)
@@ -136,7 +136,7 @@
(
LiteralExpr [STRING] [t]
:
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-01-01T01:05:00]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_1/dblp-1_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_1/dblp-1_1.3.ast
index 6a37de6..f29f0ee 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_1/dblp-1_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_1/dblp-1_1.3.ast
@@ -9,7 +9,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_2.1.1/dblp-1_2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_2.1.1/dblp-1_2.3.ast
index 95fc8fb..5bd5b5c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_2.1.1/dblp-1_2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_2.1.1/dblp-1_2.3.ast
@@ -9,7 +9,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_2.1/dblp-1_2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_2.1/dblp-1_2.3.ast
index 95fc8fb..5bd5b5c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_2.1/dblp-1_2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_2.1/dblp-1_2.3.ast
@@ -9,7 +9,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_2/dblp-1_2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_2/dblp-1_2.3.ast
index 934a36e..7e77424 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_2/dblp-1_2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-1_2/dblp-1_2.3.ast
@@ -9,7 +9,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2.1_5.3.1/dblp-2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2.1_5.3.1/dblp-2.3.ast
index 63c83d4..6c2bfbe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2.1_5.3.1/dblp-2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2.1_5.3.1/dblp-2.3.ast
@@ -25,12 +25,12 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.lenDBLP]
]
@@ -47,7 +47,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -55,7 +55,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -76,7 +76,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2.2/dblp-2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2.2/dblp-2.3.ast
index a3f4e26..a4fa5aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2.2/dblp-2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2.2/dblp-2.3.ast
@@ -25,13 +25,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -49,7 +49,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -57,7 +57,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_1/dblp-2_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_1/dblp-2_1.3.ast
index 9a6bf41..1984c2c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_1/dblp-2_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_1/dblp-2_1.3.ast
@@ -29,7 +29,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -46,7 +46,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_2/dblp-2_2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_2/dblp-2_2.3.ast
index 464b8aa..07c041b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_2/dblp-2_2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_2/dblp-2_2.3.ast
@@ -29,7 +29,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -46,7 +46,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_3/dblp-2_3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_3/dblp-2_3.3.ast
index 1e7cafa..95e5d58 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_3/dblp-2_3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_3/dblp-2_3.3.ast
@@ -32,7 +32,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -49,7 +49,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_4/dblp-2_4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_4/dblp-2_4.3.ast
index 1689261..4fe1dc4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_4/dblp-2_4.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_4/dblp-2_4.3.ast
@@ -28,7 +28,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -52,7 +52,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.1/dblp-2_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.1/dblp-2_5.3.ast
index a2babd9..7b3c9be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.1/dblp-2_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.1/dblp-2_5.3.ast
@@ -33,7 +33,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -41,7 +41,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -62,7 +62,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.2/dblp-2_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.2/dblp-2_5.3.ast
index a2babd9..7b3c9be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.2/dblp-2_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.2/dblp-2_5.3.ast
@@ -33,7 +33,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -41,7 +41,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -62,7 +62,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.3.1/dblp-2_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.3.1/dblp-2_5.3.ast
index a2babd9..7b3c9be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.3.1/dblp-2_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.3.1/dblp-2_5.3.ast
@@ -33,7 +33,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -41,7 +41,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -62,7 +62,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.3/dblp-2_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.3/dblp-2_5.3.ast
index a2babd9..7b3c9be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.3/dblp-2_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5.3/dblp-2_5.3.ast
@@ -33,7 +33,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -41,7 +41,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -62,7 +62,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5/dblp-2_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5/dblp-2_5.3.ast
index 6304774..0a6b044 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5/dblp-2_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-2_5/dblp-2_5.3.ast
@@ -33,7 +33,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -41,7 +41,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -62,7 +62,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-3_1.1/dblp-3_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-3_1.1/dblp-3_1.3.ast
index 959f69a..5601840 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-3_1.1/dblp-3_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-3_1.1/dblp-3_1.3.ast
@@ -51,12 +51,12 @@
]
AS Variable [ Name=$paperLeft ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensLeft]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.lenLeft]
]
@@ -70,12 +70,12 @@
]
AS Variable [ Name=$paperRight ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensRight]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.lenRight]
]
@@ -86,8 +86,8 @@
]
Let Variable [ Name=$lenLeft ]
:=
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperLeft ]
Field=title
@@ -100,7 +100,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperLeft ]
Field=title
@@ -117,7 +117,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -171,8 +171,8 @@
)
Let Variable [ Name=$lenRight ]
:=
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperRight ]
Field=title
@@ -185,7 +185,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperRight ]
Field=title
@@ -202,7 +202,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -256,7 +256,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenLeft ]
Variable [ Name=$tokensLeft ]
Variable [ Name=$lenRight ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-3_1.2/dblp-3_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-3_1.2/dblp-3_1.3.ast
index 959f69a..5601840 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-3_1.2/dblp-3_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-3_1.2/dblp-3_1.3.ast
@@ -51,12 +51,12 @@
]
AS Variable [ Name=$paperLeft ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensLeft]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.lenLeft]
]
@@ -70,12 +70,12 @@
]
AS Variable [ Name=$paperRight ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensRight]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.lenRight]
]
@@ -86,8 +86,8 @@
]
Let Variable [ Name=$lenLeft ]
:=
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperLeft ]
Field=title
@@ -100,7 +100,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperLeft ]
Field=title
@@ -117,7 +117,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -171,8 +171,8 @@
)
Let Variable [ Name=$lenRight ]
:=
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperRight ]
Field=title
@@ -185,7 +185,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperRight ]
Field=title
@@ -202,7 +202,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -256,7 +256,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenLeft ]
Variable [ Name=$tokensLeft ]
Variable [ Name=$lenRight ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-3_1/dblp-3_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-3_1/dblp-3_1.3.ast
index ba90fec..2ff3d69 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-3_1/dblp-3_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-3_1/dblp-3_1.3.ast
@@ -61,12 +61,12 @@
]
AS Variable [ Name=$paperLeft ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensLeft]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.lenLeft]
]
@@ -80,12 +80,12 @@
]
AS Variable [ Name=$paperRight ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensRight]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.lenRight]
]
@@ -96,8 +96,8 @@
]
Let Variable [ Name=$lenLeft ]
:=
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperLeft ]
Field=title
@@ -110,7 +110,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperLeft ]
Field=title
@@ -127,7 +127,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -181,8 +181,8 @@
)
Let Variable [ Name=$lenRight ]
:=
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperRight ]
Field=title
@@ -195,7 +195,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperRight ]
Field=title
@@ -212,7 +212,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -266,7 +266,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenLeft ]
Variable [ Name=$tokensLeft ]
Variable [ Name=$lenRight ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-aqlplus_1/dblp-aqlplus_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-aqlplus_1/dblp-aqlplus_1.3.ast
index 4c1fd0e..35c13be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-aqlplus_1/dblp-aqlplus_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-aqlplus_1/dblp-aqlplus_1.3.ast
@@ -28,14 +28,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall fuzzyjoin.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$dblp ]
Field=title
]
]
~=
- FunctionCall fuzzyjoin.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$dblp2 ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_1/dblp-csx-2_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_1/dblp-csx-2_1.3.ast
index 201405b..6b0e231 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_1/dblp-csx-2_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_1/dblp-csx-2_1.3.ast
@@ -28,13 +28,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -49,13 +49,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -71,7 +71,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -88,7 +88,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -146,7 +146,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -163,7 +163,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -217,9 +217,9 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -227,8 +227,8 @@
]
]
Variable [ Name=$tokensDBLP ]
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_2/dblp-csx-2_2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_2/dblp-csx-2_2.3.ast
index bc3e7bd..4e7e104 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_2/dblp-csx-2_2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_2/dblp-csx-2_2.3.ast
@@ -28,13 +28,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -49,13 +49,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -71,7 +71,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -88,7 +88,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -153,7 +153,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -170,7 +170,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -231,9 +231,9 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -241,8 +241,8 @@
]
]
Variable [ Name=$tokensDBLP ]
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_3/dblp-csx-2_3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_3/dblp-csx-2_3.3.ast
index 9820085..f6ac967 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_3/dblp-csx-2_3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_3/dblp-csx-2_3.3.ast
@@ -28,13 +28,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -49,13 +49,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -77,7 +77,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -94,7 +94,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -165,7 +165,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -182,7 +182,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -243,9 +243,9 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -253,8 +253,8 @@
]
]
Variable [ Name=$tokensDBLP ]
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_4/dblp-csx-2_4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_4/dblp-csx-2_4.3.ast
index b426df7..be9f563 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_4/dblp-csx-2_4.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_4/dblp-csx-2_4.3.ast
@@ -28,13 +28,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -49,13 +49,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -73,7 +73,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -97,7 +97,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -164,7 +164,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -188,7 +188,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -249,12 +249,12 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Variable [ Name=$tokensDBLP ]
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Variable [ Name=$tokensCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.1/dblp-csx-2_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.1/dblp-csx-2_5.3.ast
index 2fcb5cd..1cd1fb8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.1/dblp-csx-2_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.1/dblp-csx-2_5.3.ast
@@ -28,13 +28,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -49,13 +49,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -73,7 +73,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -81,7 +81,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -102,7 +102,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -169,7 +169,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -177,7 +177,7 @@
]
Let Variable [ Name=$lenCSX ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Let Variable [ Name=$tokensCSX ]
@@ -198,7 +198,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -259,7 +259,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenDBLP ]
Variable [ Name=$tokensDBLP ]
Variable [ Name=$lenCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.2/dblp-csx-2_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.2/dblp-csx-2_5.3.ast
index 2fcb5cd..1cd1fb8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.2/dblp-csx-2_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.2/dblp-csx-2_5.3.ast
@@ -28,13 +28,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -49,13 +49,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -73,7 +73,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -81,7 +81,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -102,7 +102,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -169,7 +169,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -177,7 +177,7 @@
]
Let Variable [ Name=$lenCSX ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Let Variable [ Name=$tokensCSX ]
@@ -198,7 +198,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -259,7 +259,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenDBLP ]
Variable [ Name=$tokensDBLP ]
Variable [ Name=$lenCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.3.1/dblp-csx-2_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.3.1/dblp-csx-2_5.3.ast
index 8aa7d18..bfd2029 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.3.1/dblp-csx-2_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.3.1/dblp-csx-2_5.3.ast
@@ -28,13 +28,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -49,13 +49,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -73,7 +73,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -81,7 +81,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -102,7 +102,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -169,7 +169,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -177,7 +177,7 @@
]
Let Variable [ Name=$lenCSX ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Let Variable [ Name=$tokensCSX ]
@@ -198,7 +198,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -259,7 +259,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenDBLP ]
Variable [ Name=$tokensDBLP ]
Variable [ Name=$lenCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.3/dblp-csx-2_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.3/dblp-csx-2_5.3.ast
index 2fcb5cd..1cd1fb8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.3/dblp-csx-2_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5.3/dblp-csx-2_5.3.ast
@@ -28,13 +28,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -49,13 +49,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -73,7 +73,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -81,7 +81,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -102,7 +102,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -169,7 +169,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -177,7 +177,7 @@
]
Let Variable [ Name=$lenCSX ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Let Variable [ Name=$tokensCSX ]
@@ -198,7 +198,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -259,7 +259,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenDBLP ]
Variable [ Name=$tokensDBLP ]
Variable [ Name=$lenCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5/dblp-csx-2_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5/dblp-csx-2_5.3.ast
index 8aa7d18..bfd2029 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5/dblp-csx-2_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-2_5/dblp-csx-2_5.3.ast
@@ -28,13 +28,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -49,13 +49,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -73,7 +73,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -81,7 +81,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -102,7 +102,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -169,7 +169,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -177,7 +177,7 @@
]
Let Variable [ Name=$lenCSX ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Let Variable [ Name=$tokensCSX ]
@@ -198,7 +198,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -259,7 +259,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenDBLP ]
Variable [ Name=$tokensDBLP ]
Variable [ Name=$lenCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_1/dblp-csx-3_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_1/dblp-csx-3_1.3.ast
index 38fff8c..fddeacb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_1/dblp-csx-3_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_1/dblp-csx-3_1.3.ast
@@ -51,13 +51,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -72,13 +72,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -94,7 +94,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -111,7 +111,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -169,7 +169,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -186,7 +186,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -240,9 +240,9 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -250,8 +250,8 @@
]
]
Variable [ Name=$tokensDBLP ]
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_2/dblp-csx-3_2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_2/dblp-csx-3_2.3.ast
index 49eedfd..c53c4fa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_2/dblp-csx-3_2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_2/dblp-csx-3_2.3.ast
@@ -51,13 +51,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -72,13 +72,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -94,7 +94,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -111,7 +111,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -176,7 +176,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -193,7 +193,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -254,9 +254,9 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -264,8 +264,8 @@
]
]
Variable [ Name=$tokensDBLP ]
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_3/dblp-csx-3_3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_3/dblp-csx-3_3.3.ast
index 22069a1..2aeeb40 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_3/dblp-csx-3_3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_3/dblp-csx-3_3.3.ast
@@ -51,13 +51,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -72,13 +72,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -100,7 +100,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -117,7 +117,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -188,7 +188,7 @@
SELECT ELEMENT [
Variable [ Name=$i ]
]
- FROM [ FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FROM [ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -205,7 +205,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -266,9 +266,9 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -276,8 +276,8 @@
]
]
Variable [ Name=$tokensDBLP ]
- FunctionCall fuzzyjoin.len@1[
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.len@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_4/dblp-csx-3_4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_4/dblp-csx-3_4.3.ast
index 7d61632..2e6fc16 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_4/dblp-csx-3_4.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_4/dblp-csx-3_4.3.ast
@@ -51,13 +51,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -72,13 +72,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -96,7 +96,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -120,7 +120,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -187,7 +187,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -211,7 +211,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -272,12 +272,12 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Variable [ Name=$tokensDBLP ]
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Variable [ Name=$tokensCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.1/dblp-csx-3_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.1/dblp-csx-3_5.3.ast
index 99ef2b7..8e8f750 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.1/dblp-csx-3_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.1/dblp-csx-3_5.3.ast
@@ -51,13 +51,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -72,13 +72,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -96,7 +96,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -104,7 +104,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -125,7 +125,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -192,7 +192,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -200,7 +200,7 @@
]
Let Variable [ Name=$lenCSX ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Let Variable [ Name=$tokensCSX ]
@@ -221,7 +221,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -282,7 +282,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenDBLP ]
Variable [ Name=$tokensDBLP ]
Variable [ Name=$lenCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.2/dblp-csx-3_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.2/dblp-csx-3_5.3.ast
index 99ef2b7..8e8f750 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.2/dblp-csx-3_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.2/dblp-csx-3_5.3.ast
@@ -51,13 +51,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -72,13 +72,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -96,7 +96,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -104,7 +104,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -125,7 +125,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -192,7 +192,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -200,7 +200,7 @@
]
Let Variable [ Name=$lenCSX ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Let Variable [ Name=$tokensCSX ]
@@ -221,7 +221,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -282,7 +282,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenDBLP ]
Variable [ Name=$tokensDBLP ]
Variable [ Name=$lenCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.3.1/dblp-csx-3_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.3.1/dblp-csx-3_5.3.ast
index 99ef2b7..8e8f750 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.3.1/dblp-csx-3_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.3.1/dblp-csx-3_5.3.ast
@@ -51,13 +51,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -72,13 +72,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -96,7 +96,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -104,7 +104,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -125,7 +125,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -192,7 +192,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -200,7 +200,7 @@
]
Let Variable [ Name=$lenCSX ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Let Variable [ Name=$tokensCSX ]
@@ -221,7 +221,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -282,7 +282,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenDBLP ]
Variable [ Name=$tokensDBLP ]
Variable [ Name=$lenCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.3/dblp-csx-3_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.3/dblp-csx-3_5.3.ast
index 99399d76..1d7411d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.3/dblp-csx-3_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.3/dblp-csx-3_5.3.ast
@@ -51,13 +51,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -72,13 +72,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -96,7 +96,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -104,7 +104,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -125,7 +125,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -192,7 +192,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -200,7 +200,7 @@
]
Let Variable [ Name=$lenCSX ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Let Variable [ Name=$tokensCSX ]
@@ -221,7 +221,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -282,7 +282,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenDBLP ]
Variable [ Name=$tokensDBLP ]
Variable [ Name=$lenCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.4.1/dblp-csx-3_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.4.1/dblp-csx-3_5.3.ast
index 606edd0..ce31b00 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.4.1/dblp-csx-3_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.4.1/dblp-csx-3_5.3.ast
@@ -98,13 +98,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -119,13 +119,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -143,7 +143,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -151,7 +151,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -172,7 +172,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -239,7 +239,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -247,7 +247,7 @@
]
Let Variable [ Name=$lenCSX ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Let Variable [ Name=$tokensCSX ]
@@ -268,7 +268,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -329,7 +329,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenDBLP ]
Variable [ Name=$tokensDBLP ]
Variable [ Name=$lenCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.4/dblp-csx-3_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.4/dblp-csx-3_5.3.ast
index 87e475a..7632755 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.4/dblp-csx-3_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5.4/dblp-csx-3_5.3.ast
@@ -98,13 +98,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -119,13 +119,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -143,7 +143,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -151,7 +151,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -172,7 +172,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -239,7 +239,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -247,7 +247,7 @@
]
Let Variable [ Name=$lenCSX ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Let Variable [ Name=$tokensCSX ]
@@ -268,7 +268,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -329,7 +329,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenDBLP ]
Variable [ Name=$tokensDBLP ]
Variable [ Name=$lenCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5/dblp-csx-3_5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5/dblp-csx-3_5.3.ast
index 99399d76..1d7411d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5/dblp-csx-3_5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-3_5/dblp-csx-3_5.3.ast
@@ -51,13 +51,13 @@
]
AS Variable [ Name=$paperDBLP ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensDBLP]
]
@@ -72,13 +72,13 @@
]
AS Variable [ Name=$paperCSX ]
,
- FunctionCall fuzzyjoin.subset-collection@3[
+ FunctionCall asterix.subset-collection@3[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
LiteralExpr [LONG] [0]
- FunctionCall fuzzyjoin.prefix-len-jaccard@2[
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.prefix-len-jaccard@2[
+ FunctionCall asterix.len@1[
FunctionCall asterix.dataset@1[
LiteralExpr [STRING] [fuzzyjoin.tokensCSX]
]
@@ -96,7 +96,7 @@
]
Let Variable [ Name=$tokensUnrankedDBLP ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperDBLP ]
Field=title
@@ -104,7 +104,7 @@
]
Let Variable [ Name=$lenDBLP ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedDBLP ]
]
Let Variable [ Name=$tokensDBLP ]
@@ -125,7 +125,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -192,7 +192,7 @@
]
Let Variable [ Name=$tokensUnrankedCSX ]
:=
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paperCSX ]
Field=title
@@ -200,7 +200,7 @@
]
Let Variable [ Name=$lenCSX ]
:=
- FunctionCall fuzzyjoin.len@1[
+ FunctionCall asterix.len@1[
Variable [ Name=$tokensUnrankedCSX ]
]
Let Variable [ Name=$tokensCSX ]
@@ -221,7 +221,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall fuzzyjoin.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -282,7 +282,7 @@
)
Let Variable [ Name=$sim ]
:=
- FunctionCall fuzzyjoin.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
Variable [ Name=$lenDBLP ]
Variable [ Name=$tokensDBLP ]
Variable [ Name=$lenCSX ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-aqlplus_1/dblp-csx-aqlplus_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-aqlplus_1/dblp-csx-aqlplus_1.3.ast
index 6d23e45..cc6ef31 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-aqlplus_1/dblp-csx-aqlplus_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-aqlplus_1/dblp-csx-aqlplus_1.3.ast
@@ -27,14 +27,14 @@
]
Where
OperatorExpr [
- FunctionCall fuzzyjoin.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$i ]
Field=title
]
]
~=
- FunctionCall fuzzyjoin.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$j ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-aqlplus_2/dblp-csx-aqlplus_2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-aqlplus_2/dblp-csx-aqlplus_2.3.ast
index a796c3e..6ccd28b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-aqlplus_2/dblp-csx-aqlplus_2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-aqlplus_2/dblp-csx-aqlplus_2.3.ast
@@ -27,14 +27,14 @@
]
Where
OperatorExpr [
- FunctionCall fuzzyjoin.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$dblp ]
Field=title
]
]
~=
- FunctionCall fuzzyjoin.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$csx ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-aqlplus_3/dblp-csx-aqlplus_3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-aqlplus_3/dblp-csx-aqlplus_3.3.ast
index 8091791..6f0c47b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-aqlplus_3/dblp-csx-aqlplus_3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-aqlplus_3/dblp-csx-aqlplus_3.3.ast
@@ -27,14 +27,14 @@
]
Where
OperatorExpr [
- FunctionCall fuzzyjoin.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$csx ]
Field=title
]
]
~=
- FunctionCall fuzzyjoin.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$dblp ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-dblp-aqlplus_1/dblp-csx-dblp-aqlplus_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-dblp-aqlplus_1/dblp-csx-dblp-aqlplus_1.3.ast
index c7ed736..8a02dc2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-dblp-aqlplus_1/dblp-csx-dblp-aqlplus_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/fuzzyjoin/dblp-csx-dblp-aqlplus_1/dblp-csx-dblp-aqlplus_1.3.ast
@@ -38,14 +38,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall fuzzyjoin.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$dblp ]
Field=title
]
]
~=
- FunctionCall fuzzyjoin.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$csx ]
Field=title
@@ -54,14 +54,14 @@
]
and
OperatorExpr [
- FunctionCall fuzzyjoin.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$csx ]
Field=authors
]
]
~=
- FunctionCall fuzzyjoin.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$dblp2 ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.10.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.10.ast
index 9c6df5d..e560710 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.10.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.10.ast
@@ -1,93 +1,248 @@
DataverseUse test
Query:
-SELECT [
-Variable [ Name=$two ]
-two
-Variable [ Name=$four ]
-four
-Variable [ Name=$ten ]
-ten
-Variable [ Name=#2 ]
-grp
-FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
+SELECT ELEMENT [
+Variable [ Name=#3 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=twenty
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
]
- Field=twenty
+ AS Variable [ Name=$tenk ]
]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
- ]
- )
-]
-agg_sum
-]
-FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.tenk]
- ]
- AS Variable [ Name=$tenk ]
-]
-Groupby
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- )
- GROUPING SET (
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- ),
- GROUPING SET (
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- ),
- GROUP AS Variable [ Name=#1 ]
- (
- tenk:=Variable [ Name=$tenk ]
- )
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
-Let Variable [ Name=#2 ]
- :=
- FunctionCall test.grouping@3[
- Variable [ Name=$two ]
- Variable [ Name=$four ]
- Variable [ Name=$ten ]
- ]
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [3]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=twenty
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [5]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=twenty
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ DECOR
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [1]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#7 ]
+ Field=tenk
+ ]
+ Field=twenty
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#7 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [6]
+ )
+ AS Variable [ Name=#3 ]
+]
Orderby
- Variable [ Name=$two ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=two
+ ]
ASC
- Variable [ Name=$four ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=four
+ ]
ASC
- Variable [ Name=$ten ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=ten
+ ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.11.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.11.ast
index 462e1e4..c4060e5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.11.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.11.ast
@@ -1,85 +1,194 @@
DataverseUse test
Query:
-SELECT [
-Variable [ Name=$two ]
-two
-Variable [ Name=$four ]
-four
-Variable [ Name=$ten ]
-ten
-Variable [ Name=#2 ]
-grp
-FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
+SELECT ELEMENT [
+Variable [ Name=#3 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=twenty
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
]
- Field=twenty
+ AS Variable [ Name=$tenk ]
]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
- ]
- )
-]
-agg_sum
-]
-FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.tenk]
- ]
- AS Variable [ Name=$tenk ]
-]
-Groupby
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- )
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- ),
- GROUPING SET (
- ),
- GROUP AS Variable [ Name=#1 ]
- (
- tenk:=Variable [ Name=$tenk ]
- )
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
-Let Variable [ Name=#2 ]
- :=
- FunctionCall test.grouping@3[
- Variable [ Name=$two ]
- Variable [ Name=$four ]
- Variable [ Name=$ten ]
- ]
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [0]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=twenty
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [3]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=twenty
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [7]
+ )
+ AS Variable [ Name=#3 ]
+]
Orderby
- Variable [ Name=$two ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=two
+ ]
ASC
- Variable [ Name=$four ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=four
+ ]
ASC
- Variable [ Name=$ten ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=ten
+ ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.12.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.12.ast
index f89980c..b419ea4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.12.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.12.ast
@@ -42,9 +42,7 @@
Let Variable [ Name=#2 ]
:=
- FunctionCall test.grouping@1[
- Variable [ Name=$two ]
- ]
+ LiteralExpr [LONG] [0]
Orderby
Variable [ Name=$two ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.13.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.13.ast
index 5fa0a46..674d94c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.13.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.13.ast
@@ -1,228 +1,787 @@
DataverseUse test
Query:
-SELECT [
-Variable [ Name=$two ]
-two
-Variable [ Name=$four ]
-four
-Variable [ Name=$ten ]
-ten
-Variable [ Name=$twenty ]
-twenty
-Variable [ Name=#2 ]
-grp
-FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
+SELECT ELEMENT [
+Variable [ Name=#3 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
]
- Field=hundred
+ AS Variable [ Name=$tenk ]
]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
- ]
- )
-]
-agg_sum
-]
-FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.tenk]
- ]
- AS Variable [ Name=$tenk ]
-]
-Groupby
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- )
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- ),
- GROUPING SET (
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- ),
- GROUPING SET (
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- ),
- GROUPING SET (
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- ),
- GROUPING SET (
- ),
- GROUP AS Variable [ Name=#1 ]
- (
- tenk:=Variable [ Name=$tenk ]
- )
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
-Let Variable [ Name=#2 ]
- :=
- FunctionCall test.grouping@4[
- Variable [ Name=$two ]
- Variable [ Name=$four ]
- Variable [ Name=$ten ]
- Variable [ Name=$twenty ]
- ]
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [0]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ DECOR
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [1]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ DECOR
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [2]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#7 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#7 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ DECOR
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [3]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#8 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#8 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [4]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#9 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#9 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [5]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#10 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#10 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [6]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#11 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#11 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [7]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#12 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#12 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [12]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#13 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#13 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [13]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#14 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#14 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [14]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#15 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#15 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [15]
+ )
+ AS Variable [ Name=#3 ]
+]
Orderby
- Variable [ Name=$two ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=two
+ ]
ASC
- Variable [ Name=$four ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=four
+ ]
ASC
- Variable [ Name=$ten ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=ten
+ ]
ASC
- Variable [ Name=$twenty ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=twenty
+ ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.14.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.14.ast
index 5fa0a46..674d94c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.14.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.14.ast
@@ -1,228 +1,787 @@
DataverseUse test
Query:
-SELECT [
-Variable [ Name=$two ]
-two
-Variable [ Name=$four ]
-four
-Variable [ Name=$ten ]
-ten
-Variable [ Name=$twenty ]
-twenty
-Variable [ Name=#2 ]
-grp
-FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
+SELECT ELEMENT [
+Variable [ Name=#3 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
]
- Field=hundred
+ AS Variable [ Name=$tenk ]
]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
- ]
- )
-]
-agg_sum
-]
-FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.tenk]
- ]
- AS Variable [ Name=$tenk ]
-]
-Groupby
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- )
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- ),
- GROUPING SET (
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- ),
- GROUPING SET (
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- ),
- GROUPING SET (
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- ),
- GROUPING SET (
- ),
- GROUP AS Variable [ Name=#1 ]
- (
- tenk:=Variable [ Name=$tenk ]
- )
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
-Let Variable [ Name=#2 ]
- :=
- FunctionCall test.grouping@4[
- Variable [ Name=$two ]
- Variable [ Name=$four ]
- Variable [ Name=$ten ]
- Variable [ Name=$twenty ]
- ]
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [0]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ DECOR
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [1]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ DECOR
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [2]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#7 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#7 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ DECOR
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [3]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#8 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#8 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [4]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#9 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#9 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [5]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#10 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#10 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [6]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#11 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#11 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [7]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#12 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#12 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [12]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#13 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#13 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [13]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#14 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#14 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [14]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#15 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#15 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [15]
+ )
+ AS Variable [ Name=#3 ]
+]
Orderby
- Variable [ Name=$two ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=two
+ ]
ASC
- Variable [ Name=$four ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=four
+ ]
ASC
- Variable [ Name=$ten ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=ten
+ ]
ASC
- Variable [ Name=$twenty ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=twenty
+ ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.15.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.15.ast
index 767e94f..80f30d4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.15.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.15.ast
@@ -1,116 +1,454 @@
DataverseUse test
Query:
-SELECT [
-Variable [ Name=$two ]
-two
-Variable [ Name=$four ]
-four
-Variable [ Name=$ten ]
-ten
-Variable [ Name=$twenty ]
-twenty
-Variable [ Name=#2 ]
-grp
-FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
+SELECT ELEMENT [
+Variable [ Name=#3 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
]
- Field=hundred
+ AS Variable [ Name=$tenk ]
]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
- ]
- )
-]
-agg_sum
-]
-FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.tenk]
- ]
- AS Variable [ Name=$tenk ]
-]
-Groupby
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- )
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- ),
- GROUPING SET (
- ),
- GROUPING SET (
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- ),
- GROUPING SET (
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- ),
- GROUPING SET (
- Variable [ Name=$twenty ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=twenty
- ]
- ),
- GROUPING SET (
- ),
- GROUP AS Variable [ Name=#1 ]
- (
- tenk:=Variable [ Name=$tenk ]
- )
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ DECOR
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
-Let Variable [ Name=#2 ]
- :=
- FunctionCall test.grouping@4[
- Variable [ Name=$two ]
- Variable [ Name=$four ]
- Variable [ Name=$ten ]
- Variable [ Name=$twenty ]
- ]
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [3]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [7]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [15]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#7 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#7 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [12]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#8 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#8 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [13]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#9 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#9 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$twenty ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=twenty
+ ]
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [14]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=$twenty ]
+ twenty
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#10 ]
+ Field=tenk
+ ]
+ Field=hundred
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#10 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$twenty ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [15]
+ )
+ AS Variable [ Name=#3 ]
+]
Orderby
- Variable [ Name=$two ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=two
+ ]
ASC
- Variable [ Name=$four ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=four
+ ]
ASC
- Variable [ Name=$ten ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=ten
+ ]
ASC
- Variable [ Name=$twenty ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=twenty
+ ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.5.ast
index f9f3410..d1a5570 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.5.ast
@@ -1,36 +1,74 @@
DataverseUse test
Query:
-SELECT [
-FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#2 ]
- Field=tenk
+SELECT ELEMENT [
+Variable [ Name=#2 ]
+]
+FROM [ (
+ SELECT [
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
]
- Field=ten
+ AS Variable [ Name=$tenk ]
]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#2 ]
- ]
- )
-]
-agg_sum
-]
-FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.tenk]
- ]
- AS Variable [ Name=$tenk ]
-]
-Groupby
- GROUPING SET (
- )
- GROUPING SET (
- ),
- GROUP AS Variable [ Name=#1 ]
- (
- tenk:=Variable [ Name=$tenk ]
- )
+ Groupby
+ GROUPING SET (
+ )
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+ UNION
+ SELECT [
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ )
+ AS Variable [ Name=#2 ]
+]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.7.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.7.ast
index b2898d1..4baddd7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.7.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.7.ast
@@ -1,74 +1,171 @@
DataverseUse test
Query:
-SELECT [
-Variable [ Name=$two ]
-two
-Variable [ Name=$four ]
-four
-Variable [ Name=#2 ]
-grp
-FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
+SELECT ELEMENT [
+Variable [ Name=#3 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
]
- Field=ten
+ AS Variable [ Name=$tenk ]
]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
- ]
- )
-]
-agg_sum
-]
-FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.tenk]
- ]
- AS Variable [ Name=$tenk ]
-]
-Groupby
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- )
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- ),
- GROUPING SET (
- ),
- GROUP AS Variable [ Name=#1 ]
- (
- tenk:=Variable [ Name=$tenk ]
- )
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
-Let Variable [ Name=#2 ]
- :=
- FunctionCall test.grouping@2[
- Variable [ Name=$two ]
- Variable [ Name=$four ]
- ]
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [0]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [1]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [3]
+ )
+ AS Variable [ Name=#3 ]
+]
Orderby
- Variable [ Name=$two ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=two
+ ]
ASC
- Variable [ Name=$four ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=four
+ ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.8.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.8.ast
index 11c6281..255b4cf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.8.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.8.ast
@@ -1,82 +1,221 @@
DataverseUse test
Query:
-SELECT [
-Variable [ Name=$two ]
-two
-Variable [ Name=$four ]
-four
-Variable [ Name=#2 ]
-grp
-FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
+SELECT ELEMENT [
+Variable [ Name=#3 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
]
- Field=ten
+ AS Variable [ Name=$tenk ]
]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
- ]
- )
-]
-agg_sum
-]
-FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.tenk]
- ]
- AS Variable [ Name=$tenk ]
-]
-Groupby
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- )
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- ),
- GROUPING SET (
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- ),
- GROUPING SET (
- ),
- GROUP AS Variable [ Name=#1 ]
- (
- tenk:=Variable [ Name=$tenk ]
- )
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
-Let Variable [ Name=#2 ]
- :=
- FunctionCall test.grouping@2[
- Variable [ Name=$two ]
- Variable [ Name=$four ]
- ]
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [0]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [1]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [2]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#7 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#7 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [3]
+ )
+ AS Variable [ Name=#3 ]
+]
Orderby
- Variable [ Name=$two ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=two
+ ]
ASC
- Variable [ Name=$four ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=four
+ ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.9.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.9.ast
index 775f28e..6a5daae 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.9.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-1/grouping-sets-1.9.ast
@@ -1,97 +1,198 @@
DataverseUse test
Query:
-SELECT [
-Variable [ Name=$two ]
-two
-Variable [ Name=$four ]
-four
-Variable [ Name=$ten ]
-ten
-Variable [ Name=#2 ]
-grp
-FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
+SELECT ELEMENT [
+Variable [ Name=#3 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=twenty
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
]
- Field=twenty
+ AS Variable [ Name=$tenk ]
]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
- ]
- )
-]
-agg_sum
-]
-FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.tenk]
- ]
- AS Variable [ Name=$tenk ]
-]
-Groupby
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- Variable [ Name=$ten ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=ten
- ]
- )
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$four ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- ),
- GROUPING SET (
- Variable [ Name=$two ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- ),
- GROUP AS Variable [ Name=#1 ]
- (
- tenk:=Variable [ Name=$tenk ]
- )
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ Variable [ Name=$ten ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=ten
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
-Let Variable [ Name=#2 ]
- :=
- FunctionCall test.grouping@3[
- Variable [ Name=$two ]
- Variable [ Name=$four ]
- Variable [ Name=$ten ]
- ]
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [0]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=twenty
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ DECOR
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [1]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$ten ]
+ ten
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=twenty
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$ten ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [3]
+ )
+ AS Variable [ Name=#3 ]
+]
Orderby
- Variable [ Name=$two ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=two
+ ]
ASC
- Variable [ Name=$four ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=four
+ ]
ASC
- Variable [ Name=$ten ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=ten
+ ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.10.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.10.ast
new file mode 100644
index 0000000..d992e77
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.10.ast
@@ -0,0 +1,144 @@
+DataverseUse test
+Query:
+SELECT ELEMENT [
+Variable [ Name=#2 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s1 ]
+ s1
+ Variable [ Name=$s2 ]
+ s2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s1 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+ ]
+ Let Variable [ Name=$s2 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s1 ]
+ s1
+ Variable [ Name=$s2 ]
+ s2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s1 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ Let Variable [ Name=$s2 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ )
+ AS Variable [ Name=#2 ]
+]
+Orderby
+ FieldAccessor [
+ Variable [ Name=#2 ]
+ Field=s1
+ ]
+ DESC
+ FieldAccessor [
+ Variable [ Name=#2 ]
+ Field=s2
+ ]
+ DESC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.11.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.11.ast
new file mode 100644
index 0000000..f290ca3
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.11.ast
@@ -0,0 +1,147 @@
+DataverseUse test
+Query:
+SELECT ELEMENT [
+FunctionCall asterix.object-remove@2[
+ Variable [ Name=#3 ]
+ LiteralExpr [STRING] [$2]
+]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s1 ]
+ s1
+ Variable [ Name=$s2 ]
+ $2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s1 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ Let Variable [ Name=$s2 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s1 ]
+ s1
+ Variable [ Name=$s2 ]
+ $2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s1 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ Let Variable [ Name=$s2 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#7 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#7 ]
+ ]
+ )
+ ]
+ )
+ AS Variable [ Name=#3 ]
+]
+Orderby
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=s1
+ ]
+ DESC
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=$2
+ ]
+ DESC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.12.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.12.ast
new file mode 100644
index 0000000..df9d569
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.12.ast
@@ -0,0 +1,150 @@
+DataverseUse test
+Query:
+SELECT ELEMENT [
+FunctionCall asterix.object-remove@2[
+ FunctionCall asterix.object-remove@2[
+ Variable [ Name=#4 ]
+ LiteralExpr [STRING] [$2]
+ ]
+ LiteralExpr [STRING] [$3]
+]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s1 ]
+ $2
+ Variable [ Name=$s2 ]
+ $3
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s1 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ Let Variable [ Name=$s2 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s1 ]
+ $2
+ Variable [ Name=$s2 ]
+ $3
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s1 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#7 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#7 ]
+ ]
+ )
+ ]
+ Let Variable [ Name=$s2 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#8 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#8 ]
+ ]
+ )
+ ]
+ )
+ AS Variable [ Name=#4 ]
+]
+Orderby
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=$2
+ ]
+ DESC
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=$3
+ ]
+ DESC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.13.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.13.ast
new file mode 100644
index 0000000..8761774
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.13.ast
@@ -0,0 +1,147 @@
+DataverseUse test
+Query:
+SELECT ELEMENT [
+FunctionCall asterix.field-access-by-name@2[
+ Variable [ Name=#5 ]
+ LiteralExpr [STRING] [$4]
+]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$four ]
+ $4
+ Variable [ Name=$s1 ]
+ $2
+ Variable [ Name=$s2 ]
+ $3
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s1 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ Let Variable [ Name=$s2 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#7 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#7 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ Variable [ Name=$four ]
+ $4
+ Variable [ Name=$s1 ]
+ $2
+ Variable [ Name=$s2 ]
+ $3
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s1 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#8 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#8 ]
+ ]
+ )
+ ]
+ Let Variable [ Name=$s2 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#9 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#9 ]
+ ]
+ )
+ ]
+ )
+ AS Variable [ Name=#5 ]
+]
+Orderby
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=$2
+ ]
+ DESC
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=$3
+ ]
+ DESC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.14.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.14.ast
new file mode 100644
index 0000000..00d6c8a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.14.ast
@@ -0,0 +1,104 @@
+DataverseUse test
+Query:
+SELECT ELEMENT [
+Variable [ Name=#2 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s1 ]
+ s1
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s1 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s1 ]
+ s1
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s1 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ )
+ AS Variable [ Name=#2 ]
+]
+Orderby
+ FieldAccessor [
+ Variable [ Name=#2 ]
+ Field=s1
+ ]
+ DESC
+ FieldAccessor [
+ Variable [ Name=#2 ]
+ Field=four
+ ]
+ DESC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.15.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.15.ast
new file mode 100644
index 0000000..7db8adf
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.15.ast
@@ -0,0 +1,102 @@
+DataverseUse test
+Query:
+SELECT ELEMENT [
+FunctionCall asterix.field-access-by-name@2[
+ Variable [ Name=#4 ]
+ LiteralExpr [STRING] [$3]
+]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$s1 ]
+ $3
+ Variable [ Name=$s1 ]
+ $2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s1 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ Variable [ Name=$s1 ]
+ $3
+ Variable [ Name=$s1 ]
+ $2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s1 ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ )
+ AS Variable [ Name=#4 ]
+]
+Orderby
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=$2
+ ]
+ DESC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.16.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.16.ast
new file mode 100644
index 0000000..178385f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.16.ast
@@ -0,0 +1,93 @@
+DataverseUse test
+Query:
+SELECT ELEMENT [
+Variable [ Name=#2 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$four ]
+ four
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+ ]
+ s
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ UNION
+ SELECT [
+ Variable [ Name=$four ]
+ four
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ s
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ )
+ AS Variable [ Name=#2 ]
+]
+Orderby
+ FieldAccessor [
+ Variable [ Name=#2 ]
+ Field=four
+ ]
+ ASC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.17.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.17.ast
new file mode 100644
index 0000000..f57186c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.17.ast
@@ -0,0 +1,122 @@
+DataverseUse test
+Query:
+SELECT ELEMENT [
+FunctionCall asterix.field-access-by-name@2[
+ Variable [ Name=#4 ]
+ LiteralExpr [STRING] [$3]
+]
+]
+FROM [ (
+ SELECT [
+ OperatorExpr [
+ FunctionCall asterix.to-string@1[
+ FunctionCall asterix.if-null[
+ Variable [ Name=$four ]
+ LiteralExpr [STRING] [null]
+ ]
+ ]
+ ||
+ LiteralExpr [STRING] [,]
+ ||
+ FunctionCall asterix.to-string@1[
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ ]
+ ]
+ $3
+ Variable [ Name=$four ]
+ $2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ UNION
+ SELECT [
+ OperatorExpr [
+ FunctionCall asterix.to-string@1[
+ FunctionCall asterix.if-null[
+ Variable [ Name=$four ]
+ LiteralExpr [STRING] [null]
+ ]
+ ]
+ ||
+ LiteralExpr [STRING] [,]
+ ||
+ FunctionCall asterix.to-string@1[
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=two
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ ]
+ ]
+ $3
+ Variable [ Name=$four ]
+ $2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ )
+ AS Variable [ Name=#4 ]
+]
+Orderby
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=$2
+ ]
+ ASC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.18.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.18.ast
new file mode 100644
index 0000000..c80accb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.18.ast
@@ -0,0 +1,193 @@
+DataverseUse test
+Query:
+SELECT ELEMENT [
+Variable [ Name=#3 ]
+]
+FROM [ (
+ SELECT ELEMENT [
+ Variable [ Name=#4 ]
+ ]
+ FROM [ (
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ LiteralExpr [NULL]
+ four
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ s
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ LiteralExpr [NULL]
+ four
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#7 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#7 ]
+ ]
+ )
+ ]
+ s
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ )
+ AS Variable [ Name=#4 ]
+ ]
+ UNION
+ SELECT ELEMENT [
+ Variable [ Name=#5 ]
+ ]
+ FROM [ (
+ SELECT [
+ LiteralExpr [NULL]
+ two
+ Variable [ Name=$four ]
+ four
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#8 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#2 ]
+ AS Variable [ Name=#8 ]
+ ]
+ )
+ ]
+ s
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#2 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ UNION
+ SELECT [
+ LiteralExpr [NULL]
+ two
+ Variable [ Name=$four ]
+ four
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#9 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#2 ]
+ AS Variable [ Name=#9 ]
+ ]
+ )
+ ]
+ s
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#2 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ )
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ AS Variable [ Name=#3 ]
+]
+Orderby
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=s
+ ]
+ DESC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.4.ast
index 04c8aec..30e5e96 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.4.ast
@@ -1,74 +1,171 @@
DataverseUse test
Query:
-SELECT [
-Variable [ Name=$v2 ]
-v2
-Variable [ Name=$v4 ]
-v4
-Variable [ Name=#2 ]
-grp
-FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
+SELECT ELEMENT [
+Variable [ Name=#3 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$v2 ]
+ v2
+ Variable [ Name=$v4 ]
+ v4
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
]
- Field=ten
+ AS Variable [ Name=$tenk ]
]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
- ]
- )
-]
-agg_sum
-]
-FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.tenk]
- ]
- AS Variable [ Name=$tenk ]
-]
-Groupby
- GROUPING SET (
- Variable [ Name=$v2 ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$v4 ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- )
- GROUPING SET (
- Variable [ Name=$v2 ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- ),
- GROUPING SET (
- ),
- GROUP AS Variable [ Name=#1 ]
- (
- tenk:=Variable [ Name=$tenk ]
- )
+ Groupby
+ Variable [ Name=$v2 ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$v4 ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
-Let Variable [ Name=#2 ]
- :=
- FunctionCall test.grouping@2[
- Variable [ Name=$v2 ]
- Variable [ Name=$v4 ]
- ]
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [0]
+ UNION
+ SELECT [
+ Variable [ Name=$v2 ]
+ v2
+ Variable [ Name=$v4 ]
+ v4
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$v2 ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$v4 ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [1]
+ UNION
+ SELECT [
+ Variable [ Name=$v2 ]
+ v2
+ Variable [ Name=$v4 ]
+ v4
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$v2 ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$v4 ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [3]
+ )
+ AS Variable [ Name=#3 ]
+]
Orderby
- Variable [ Name=$v2 ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=v2
+ ]
ASC
- Variable [ Name=$v4 ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=v4
+ ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.5.ast
index af33220..27364a3c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.5.ast
@@ -1,80 +1,172 @@
DataverseUse test
Query:
-SELECT [
-Variable [ Name=$v2 ]
-v2
-Variable [ Name=$v4 ]
-v4
-Variable [ Name=#2 ]
-grp
-FunctionCall asterix.sql-sum@1[
- (
- SELECT ELEMENT [
- FieldAccessor [
- FieldAccessor [
- Variable [ Name=#3 ]
- Field=tenk
+SELECT ELEMENT [
+Variable [ Name=#3 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$v2 ]
+ v2
+ Variable [ Name=$v4 ]
+ v4
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
]
- Field=ten
+ AS Variable [ Name=$tenk ]
]
- ]
- FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
- ]
- )
-]
-agg_sum
-]
-FROM [ FunctionCall asterix.dataset@1[
- LiteralExpr [STRING] [test.tenk]
- ]
- AS Variable [ Name=$tenk ]
-]
-Groupby
- GROUPING SET (
- Variable [ Name=$v2 ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- Variable [ Name=$v4 ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=four
- ]
- )
- GROUPING SET (
- Variable [ Name=$v2 ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- ),
- GROUPING SET (
- Variable [ Name=$v2 ]
- :=
- FieldAccessor [
- Variable [ Name=$tenk ]
- Field=two
- ]
- ),
- GROUP AS Variable [ Name=#1 ]
- (
- tenk:=Variable [ Name=$tenk ]
- )
+ Groupby
+ Variable [ Name=$v2 ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$v4 ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
-Let Variable [ Name=#2 ]
- :=
- FunctionCall test.grouping@2[
- Variable [ Name=$v2 ]
- Variable [ Name=$v4 ]
- ]
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [0]
+ UNION
+ SELECT [
+ Variable [ Name=$v2 ]
+ v2
+ Variable [ Name=$v4 ]
+ v4
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$v2 ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$v4 ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [1]
+ UNION
+ SELECT [
+ Variable [ Name=$v2 ]
+ v2
+ Variable [ Name=$v4 ]
+ v4
+ Variable [ Name=#2 ]
+ grp
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=ten
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ agg_sum
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$v2 ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$v4 ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=#2 ]
+ :=
+ LiteralExpr [LONG] [1]
+ )
+ AS Variable [ Name=#3 ]
+]
Orderby
- Variable [ Name=$v2 ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=v2
+ ]
ASC
- Variable [ Name=$v4 ]
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=v4
+ ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.6.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.6.ast
new file mode 100644
index 0000000..496b915
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.6.ast
@@ -0,0 +1,160 @@
+DataverseUse test
+Query:
+SELECT ELEMENT [
+Variable [ Name=#2 ]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s ]
+ s
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s ]
+ s
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s ]
+ s
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ )
+ AS Variable [ Name=#2 ]
+]
+Orderby
+ FieldAccessor [
+ Variable [ Name=#2 ]
+ Field=s
+ ]
+ DESC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.7.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.7.ast
new file mode 100644
index 0000000..751a23d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.7.ast
@@ -0,0 +1,163 @@
+DataverseUse test
+Query:
+SELECT ELEMENT [
+FunctionCall asterix.object-remove@2[
+ Variable [ Name=#3 ]
+ LiteralExpr [STRING] [$2]
+]
+]
+FROM [ (
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s ]
+ $2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s ]
+ $2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ Variable [ Name=$two ]
+ two
+ Variable [ Name=$four ]
+ four
+ Variable [ Name=$s ]
+ $2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ )
+ AS Variable [ Name=#3 ]
+]
+Orderby
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=$2
+ ]
+ DESC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.8.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.8.ast
new file mode 100644
index 0000000..a7b455a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.8.ast
@@ -0,0 +1,205 @@
+DataverseUse test
+Query:
+SELECT ELEMENT [
+FunctionCall asterix.field-access-by-name@2[
+ Variable [ Name=#4 ]
+ LiteralExpr [STRING] [$3]
+]
+]
+FROM [ (
+ SELECT [
+ OperatorExpr [
+ FunctionCall asterix.to-string@1[
+ FunctionCall asterix.if-null[
+ Variable [ Name=$two ]
+ LiteralExpr [STRING] [null]
+ ]
+ ]
+ ||
+ LiteralExpr [STRING] [,]
+ ||
+ FunctionCall asterix.to-string@1[
+ FunctionCall asterix.if-null[
+ Variable [ Name=$four ]
+ LiteralExpr [STRING] [null]
+ ]
+ ]
+ ]
+ $3
+ Variable [ Name=$s ]
+ $2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ Variable [ Name=$four ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=four
+ ]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ OperatorExpr [
+ FunctionCall asterix.to-string@1[
+ FunctionCall asterix.if-null[
+ Variable [ Name=$two ]
+ LiteralExpr [STRING] [null]
+ ]
+ ]
+ ||
+ LiteralExpr [STRING] [,]
+ ||
+ FunctionCall asterix.to-string@1[
+ FunctionCall asterix.if-null[
+ Variable [ Name=$four ]
+ LiteralExpr [STRING] [null]
+ ]
+ ]
+ ]
+ $3
+ Variable [ Name=$s ]
+ $2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ DECOR
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ OperatorExpr [
+ FunctionCall asterix.to-string@1[
+ FunctionCall asterix.if-null[
+ Variable [ Name=$two ]
+ LiteralExpr [STRING] [null]
+ ]
+ ]
+ ||
+ LiteralExpr [STRING] [,]
+ ||
+ FunctionCall asterix.to-string@1[
+ FunctionCall asterix.if-null[
+ Variable [ Name=$four ]
+ LiteralExpr [STRING] [null]
+ ]
+ ]
+ ]
+ $3
+ Variable [ Name=$s ]
+ $2
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ Variable [ Name=$four ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=#1 ]
+ (
+ tenk:=Variable [ Name=$tenk ]
+ )
+
+ Let Variable [ Name=$s ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#7 ]
+ Field=tenk
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#7 ]
+ ]
+ )
+ ]
+ )
+ AS Variable [ Name=#4 ]
+]
+Orderby
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=$2
+ ]
+ DESC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.9.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.9.ast
new file mode 100644
index 0000000..18c8211
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/group-by/grouping-sets-2/grouping-sets-2.9.ast
@@ -0,0 +1,179 @@
+Set compiler.groupmemory=4MB
+Set compiler.sortmemory=4MB
+DataverseUse test
+Query:
+Let Variable [ Name=$tenk_subset ]
+ :=
+ (
+ SELECT [
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=two
+ ]
+ two
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=unique1
+ ]
+ unique1
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [test.tenk]
+ ]
+ AS Variable [ Name=$tenk ]
+ ]
+ Where
+ OperatorExpr [
+ OperatorExpr [
+ FieldAccessor [
+ Variable [ Name=$tenk ]
+ Field=unique2
+ ]
+ mod
+ LiteralExpr [LONG] [2000]
+ ]
+ =
+ LiteralExpr [LONG] [0]
+ ]
+ )
+Let Variable [ Name=$tenk_sum ]
+ :=
+ (
+ SELECT ELEMENT [
+ Variable [ Name=#1 ]
+ ]
+ FROM [ (
+ SELECT [
+ *
+ ]
+ FROM [ Variable [ Name=$tenk_subset ]
+ AS Variable [ Name=$t ]
+ ]
+ Groupby
+ Variable [ Name=$two ]
+ :=
+ FieldAccessor [
+ Variable [ Name=$t ]
+ Field=two
+ ]
+ GROUP AS Variable [ Name=$g ]
+ (
+ t:=Variable [ Name=$t ]
+ )
+
+ Let Variable [ Name=$s ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#2 ]
+ Field=t
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=#2 ]
+ ]
+ )
+ ]
+ UNION
+ SELECT [
+ *
+ ]
+ FROM [ Variable [ Name=$tenk_subset ]
+ AS Variable [ Name=$t ]
+ ]
+ Groupby
+ GROUPING SET (
+ )
+ DECOR
+ Variable [ Name=$two ]
+ :=
+ LiteralExpr [NULL]
+ GROUP AS Variable [ Name=$g ]
+ (
+ t:=Variable [ Name=$t ]
+ )
+
+ Let Variable [ Name=$s ]
+ :=
+ FunctionCall asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=t
+ ]
+ Field=unique1
+ ]
+ ]
+ FROM [ Variable [ Name=$g ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
+ ]
+ )
+ AS Variable [ Name=#1 ]
+ ]
+ Orderby
+ FieldAccessor [
+ Variable [ Name=#1 ]
+ Field=s
+ ]
+ DESC
+
+ Limit
+ LiteralExpr [LONG] [3]
+ )
+SELECT [
+FieldAccessor [
+ Variable [ Name=$tt ]
+ Field=s
+]
+s
+FieldAccessor [
+ Variable [ Name=$tt ]
+ Field=two
+]
+two
+Variable [ Name=$gg ]
+gg
+]
+FROM [ Variable [ Name=$tenk_sum ]
+ AS Variable [ Name=$tt ]
+]
+Let Variable [ Name=$gg ]
+ :=
+ (
+ SELECT [
+ Variable [ Name=$gi ]
+ .*
+ ]
+ FROM [ FieldAccessor [
+ Variable [ Name=$tt ]
+ Field=g
+ ]
+ AS Variable [ Name=$gi ]
+ ]
+ Orderby
+ FieldAccessor [
+ FieldAccessor [
+ Variable [ Name=$gi ]
+ Field=t
+ ]
+ Field=unique1
+ ]
+ ASC
+
+ )
+Orderby
+ FieldAccessor [
+ Variable [ Name=$tt ]
+ Field=s
+ ]
+ DESC
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_02/hdfs_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_02/hdfs_02.3.ast
index 9a51c0b..fe0b49d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_02/hdfs_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_02/hdfs_02.3.ast
@@ -31,7 +31,7 @@
]
AS Variable [ Name=$line ]
,
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$line ]
Field=content
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_03/hdfs_03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_03/hdfs_03.3.ast
index 9a51c0b..fe0b49d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_03/hdfs_03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_03/hdfs_03.3.ast
@@ -31,7 +31,7 @@
]
AS Variable [ Name=$line ]
,
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$line ]
Field=content
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_shortcircuit/hdfs_shortcircuit.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_shortcircuit/hdfs_shortcircuit.3.ast
index 9a51c0b..fe0b49d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_shortcircuit/hdfs_shortcircuit.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hdfs/hdfs_shortcircuit/hdfs_shortcircuit.3.ast
@@ -31,7 +31,7 @@
]
AS Variable [ Name=$line ]
,
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$line ]
Field=content
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hints/issue_251_dataset_hint_6/issue_251_dataset_hint_6.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hints/issue_251_dataset_hint_6/issue_251_dataset_hint_6.3.ast
index 9a51c0b..fe0b49d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hints/issue_251_dataset_hint_6/issue_251_dataset_hint_6.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/hints/issue_251_dataset_hint_6/issue_251_dataset_hint_6.3.ast
@@ -31,7 +31,7 @@
]
AS Variable [ Name=$line ]
,
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$line ]
Field=content
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast
index 939c13a..676c6d9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast
@@ -48,7 +48,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$a ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast
index caf47d3..204a6a4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast
@@ -82,7 +82,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast
index 63d8847..eab57b4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast
@@ -96,7 +96,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-invidx-sidx1/probe-pidx-with-join-invidx-sidx1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-invidx-sidx1/probe-pidx-with-join-invidx-sidx1.3.ast
index eab8c44..3e2036e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-invidx-sidx1/probe-pidx-with-join-invidx-sidx1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-invidx-sidx1/probe-pidx-with-join-invidx-sidx1.3.ast
@@ -55,7 +55,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$t1 ]
Field=referred-topics
@@ -108,7 +108,7 @@
Field=tweetid
]
>
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [240]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast
index 1517a3a..86e3c17 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast
@@ -55,7 +55,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$t1 ]
Field=message-text
@@ -108,7 +108,7 @@
Field=tweetid
]
>
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [240]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast
index 5d4c69d..8dfee3d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast
@@ -48,7 +48,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$t2 ]
Field=sender-location
@@ -73,7 +73,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=sender-location
@@ -87,7 +87,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast
index e88a804..1563d4c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast
@@ -49,7 +49,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$t2 ]
Field=sender-location
@@ -87,7 +87,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=sender-location
@@ -101,7 +101,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast
index 0e4c541..21e29aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast
index 0f93d91..6d19d11 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast
@@ -27,7 +27,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-contains@3[
+ FunctionCall asterix.edit-distance-contains@3[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast
index 7ba1ec6..4afcf42 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast
@@ -10,7 +10,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.4.ast
index 204b85c..6dd3c31 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.4.ast
@@ -25,7 +25,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -35,7 +35,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$word ]
LiteralExpr [STRING] [Multmedia]
LiteralExpr [LONG] [1]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast
index c50ce00..62aa015 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast
@@ -10,7 +10,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast
index 2cace6f..7792ca4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast
@@ -11,8 +11,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$o ]
Field=title
@@ -20,7 +20,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.4.ast
index 71a47e3..64b1e69 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.4.ast
@@ -10,7 +10,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.4.ast
index 609dc25..3e66801 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.4.ast
@@ -10,7 +10,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.4.ast
index de7e638..8d7dbde 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.4.ast
@@ -10,7 +10,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.4.ast
index 4979e59..b970dce 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.4.ast
@@ -10,7 +10,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
Variable [ Name=$c ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast
index 0e4c541..21e29aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast
index a9e83dd..f00a084 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast
@@ -10,14 +10,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/range-search-open/range-search-open.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/range-search-open/range-search-open.5.ast
index ecfb9f3..ebd7f41 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/range-search-open/range-search-open.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/range-search-open/range-search-open.5.ast
@@ -28,9 +28,9 @@
OperatorExpr [
LiteralExpr [LONG] [100]
+
- FunctionCall test.to-bigint@1[
+ FunctionCall asterix.to-bigint@1[
OperatorExpr [
- FunctionCall test.random@0[
+ FunctionCall asterix.random@0[
]
/
LiteralExpr [LONG] [2]
@@ -48,9 +48,9 @@
OperatorExpr [
LiteralExpr [LONG] [5]
+
- FunctionCall test.to-bigint@1[
+ FunctionCall asterix.to-bigint@1[
OperatorExpr [
- FunctionCall test.random@0[
+ FunctionCall asterix.random@0[
]
/
LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/range-search/range-search.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/range-search/range-search.5.ast
index ecfb9f3..ebd7f41 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/range-search/range-search.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/range-search/range-search.5.ast
@@ -28,9 +28,9 @@
OperatorExpr [
LiteralExpr [LONG] [100]
+
- FunctionCall test.to-bigint@1[
+ FunctionCall asterix.to-bigint@1[
OperatorExpr [
- FunctionCall test.random@0[
+ FunctionCall asterix.random@0[
]
/
LiteralExpr [LONG] [2]
@@ -48,9 +48,9 @@
OperatorExpr [
LiteralExpr [LONG] [5]
+
- FunctionCall test.to-bigint@1[
+ FunctionCall asterix.to-bigint@1[
OperatorExpr [
- FunctionCall test.random@0[
+ FunctionCall asterix.random@0[
]
/
LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index-circular-query/rtree-secondary-index-circular-query.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index-circular-query/rtree-secondary-index-circular-query.4.ast
index f411049..d16d9ff 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index-circular-query/rtree-secondary-index-circular-query.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index-circular-query/rtree-secondary-index-circular-query.4.ast
@@ -18,13 +18,13 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-circle@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-circle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [5.0]
LiteralExpr [DOUBLE] [5.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index-nullable/rtree-secondary-index-nullable.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index-nullable/rtree-secondary-index-nullable.4.ast
index 2f985dc..0345c25 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index-nullable/rtree-secondary-index-nullable.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index-nullable/rtree-secondary-index-nullable.4.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index-open/rtree-secondary-index-open.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index-open/rtree-secondary-index-open.4.ast
index 2f985dc..0345c25 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index-open/rtree-secondary-index-open.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index-open/rtree-secondary-index-open.4.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast
index 2f985dc..0345c25 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
index 13e4f9c..c358659 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
@@ -37,7 +37,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=name
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance/ngram-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance/ngram-edit-distance.4.ast
index be5c8eb..dd3dd47 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance/ngram-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-edit-distance/ngram-edit-distance.4.ast
@@ -33,7 +33,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=name
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard-inline/ngram-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
index c72c206..2276491 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
@@ -38,8 +38,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -47,7 +47,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard/ngram-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard/ngram-jaccard.4.ast
index fbc8b28..c043116 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard/ngram-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ngram-jaccard/ngram-jaccard.4.ast
@@ -34,8 +34,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -43,7 +43,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance-inline/olist-edit-distance-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance-inline/olist-edit-distance-inline.4.ast
index 39cc5a7..dc4bea5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance-inline/olist-edit-distance-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance-inline/olist-edit-distance-inline.4.ast
@@ -38,7 +38,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -51,7 +51,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -62,7 +62,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$b ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance/olist-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance/olist-edit-distance.4.ast
index 5907460..aab46c8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance/olist-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-edit-distance/olist-edit-distance.4.ast
@@ -34,7 +34,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -45,7 +45,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$b ]
Field=interests
@@ -56,7 +56,7 @@
]
and
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard-inline/olist-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard-inline/olist-jaccard-inline.4.ast
index 7a5e585..643c3aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard-inline/olist-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard-inline/olist-jaccard-inline.4.ast
@@ -38,7 +38,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -69,7 +69,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -80,7 +80,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$b ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard/olist-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard/olist-jaccard.4.ast
index 7bbc28e..8f2b2db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard/olist-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/olist-jaccard/olist-jaccard.4.ast
@@ -34,7 +34,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -61,7 +61,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -72,7 +72,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$b ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard-inline/ulist-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard-inline/ulist-jaccard-inline.4.ast
index 7a5e585..643c3aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard-inline/ulist-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard-inline/ulist-jaccard-inline.4.ast
@@ -38,7 +38,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -69,7 +69,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -80,7 +80,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$b ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard/ulist-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard/ulist-jaccard.4.ast
index 7bbc28e..8f2b2db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard/ulist-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/ulist-jaccard/ulist-jaccard.4.ast
@@ -34,7 +34,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -61,7 +61,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -72,7 +72,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$b ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard-inline/word-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard-inline/word-jaccard-inline.4.ast
index 73e56d9..39d1e19 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard-inline/word-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard-inline/word-jaccard-inline.4.ast
@@ -38,14 +38,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard/word-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard/word-jaccard.4.ast
index b0c74ec..2d835ed 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard/word-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join-noeqjoin/word-jaccard/word-jaccard.4.ast
@@ -34,14 +34,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
index de125c4..402da91 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
@@ -31,7 +31,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=name
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-edit-distance/ngram-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-edit-distance/ngram-edit-distance.4.ast
index ad5215b..dbbd917 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-edit-distance/ngram-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-edit-distance/ngram-edit-distance.4.ast
@@ -27,7 +27,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=name
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
index a07b84a..5eec8ac 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
@@ -32,8 +32,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -41,7 +41,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-jaccard/ngram-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-jaccard/ngram-jaccard.4.ast
index 72fd50d..0d0e374 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-jaccard/ngram-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ngram-jaccard/ngram-jaccard.4.ast
@@ -28,8 +28,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -37,7 +37,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-edit-distance-inline/olist-edit-distance-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-edit-distance-inline/olist-edit-distance-inline.4.ast
index 69103f8..5669585 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-edit-distance-inline/olist-edit-distance-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-edit-distance-inline/olist-edit-distance-inline.4.ast
@@ -31,7 +31,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -44,7 +44,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -55,7 +55,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$b ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-edit-distance/olist-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-edit-distance/olist-edit-distance.4.ast
index 2cbf52e..b573d5b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-edit-distance/olist-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-edit-distance/olist-edit-distance.4.ast
@@ -27,7 +27,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -38,7 +38,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$b ]
Field=interests
@@ -49,7 +49,7 @@
]
and
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-jaccard-inline/olist-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-jaccard-inline/olist-jaccard-inline.4.ast
index 1b069c2..fc137f8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-jaccard-inline/olist-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-jaccard-inline/olist-jaccard-inline.4.ast
@@ -31,7 +31,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -62,7 +62,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -73,7 +73,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$b ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-jaccard/olist-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-jaccard/olist-jaccard.4.ast
index fbffbda..a5c1b4c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-jaccard/olist-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/olist-jaccard/olist-jaccard.4.ast
@@ -27,7 +27,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -54,7 +54,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -65,7 +65,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$b ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ulist-jaccard-inline/ulist-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ulist-jaccard-inline/ulist-jaccard-inline.4.ast
index 1b069c2..fc137f8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ulist-jaccard-inline/ulist-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ulist-jaccard-inline/ulist-jaccard-inline.4.ast
@@ -31,7 +31,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -62,7 +62,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -73,7 +73,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$b ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ulist-jaccard/ulist-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ulist-jaccard/ulist-jaccard.4.ast
index fbffbda..a5c1b4c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ulist-jaccard/ulist-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/ulist-jaccard/ulist-jaccard.4.ast
@@ -27,7 +27,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -54,7 +54,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$a ]
Field=interests
@@ -65,7 +65,7 @@
]
and
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$b ]
Field=interests
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/word-jaccard-inline/word-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/word-jaccard-inline/word-jaccard-inline.4.ast
index e324f87..92400d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/word-jaccard-inline/word-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/word-jaccard-inline/word-jaccard-inline.4.ast
@@ -31,14 +31,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/word-jaccard/word-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/word-jaccard/word-jaccard.4.ast
index 917d83b..de6332b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/word-jaccard/word-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/inverted-index-join/word-jaccard/word-jaccard.4.ast
@@ -27,14 +27,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/len_01/len_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/len_01/len_01.3.ast
index bc3ef8f..50e412d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/len_01/len_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/len_01/len_01.3.ast
@@ -2,44 +2,44 @@
Query:
SELECT ELEMENT [
OrderedListConstructor [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
OrderedListConstructor [
]
]
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
OrderedListConstructor [
LiteralExpr [LONG] [1]
]
]
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
OrderedListConstructor [
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
]
]
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
OrderedListConstructor [
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
LiteralExpr [LONG] [3]
]
]
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
UnorderedListConstructor [
]
]
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
UnorderedListConstructor [
LiteralExpr [LONG] [1]
]
]
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
UnorderedListConstructor [
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
]
]
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
UnorderedListConstructor [
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/len_null_01/len_null_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/len_null_01/len_null_01.3.ast
index f23296e..4c811b1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/len_null_01/len_null_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/len_null_01/len_null_01.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [len1]
:
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
OrderedListConstructor [
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/list-star_01/list-star_01.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/list-star_01/list-star_01.1.ast
new file mode 100644
index 0000000..736d1cc
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/list-star_01/list-star_01.1.ast
@@ -0,0 +1,13 @@
+DataverseUse TinySocial
+TypeDecl t1 [
+ open RecordType {
+
+ }
+]
+TypeDecl t2 [
+ open RecordType {
+ id : int64,
+ compType : t1
+ }
+]
+DatasetDecl d1(t2) partitioned by [[id]]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/list-star_01/list-star_01.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/list-star_01/list-star_01.2.ast
new file mode 100644
index 0000000..f36d0ea
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/list-star_01/list-star_01.2.ast
@@ -0,0 +1 @@
+DataverseUse TinySocial
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/list-star_01/list-star_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/list-star_01/list-star_01.3.ast
new file mode 100644
index 0000000..85b966e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/list/list-star_01/list-star_01.3.ast
@@ -0,0 +1,549 @@
+DataverseUse TinySocial
+Query:
+RecordConstructor [
+ (
+ LiteralExpr [STRING] [t1]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val1]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val1]
+ )
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val2]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val2]
+ )
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val3]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val3]
+ )
+ ]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t2]
+ :
+ IndexAccessor [
+ (
+ SELECT ELEMENT [
+ Variable [ Name=$v ]
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [TinySocial.d1]
+ ]
+ AS Variable [ Name=$v ]
+ ]
+ )
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t3]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val1]
+ )
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val1]
+ )
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val2]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val2]
+ )
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val3]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val3]
+ )
+ ]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t4]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val1]
+ )
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val1]
+ )
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val2]
+ )
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val3]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val3]
+ )
+ ]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t5]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val1]
+ )
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val1]
+ )
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [NULL]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val2]
+ )
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val3]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val3]
+ )
+ ]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t6]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val1]
+ )
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val1]
+ )
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [NULL]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val2]
+ )
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val3]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val3]
+ )
+ (
+ LiteralExpr [STRING] [c]
+ :
+ LiteralExpr [STRING] [c_val3]
+ )
+ ]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t7]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val1]
+ )
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [LONG] [5]
+ )
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [DOUBLE] [3.2]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val2]
+ )
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val3]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val3]
+ )
+ (
+ LiteralExpr [STRING] [c]
+ :
+ LiteralExpr [STRING] [c_val3]
+ )
+ ]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t8]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val1]
+ )
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val1]
+ )
+ ]
+ RecordConstructor [
+ ]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val3]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val3]
+ )
+ ]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t9]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val1]
+ )
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val1]
+ )
+ ]
+ LiteralExpr [LONG] [5]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val3]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val3]
+ )
+ ]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t10]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val1]
+ )
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val1]
+ )
+ ]
+ LiteralExpr [NULL]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val3]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val3]
+ )
+ ]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t11]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val1]
+ )
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val1]
+ )
+ ]
+ LiteralExpr [MISSING]
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val3]
+ )
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val3]
+ )
+ ]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t12]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ RecordConstructor [
+ (
+ LiteralExpr [STRING] [b]
+ :
+ LiteralExpr [STRING] [b_val1]
+ )
+ (
+ LiteralExpr [STRING] [a]
+ :
+ LiteralExpr [STRING] [a_val1]
+ )
+ ]
+ LiteralExpr [LONG] [5]
+ OrderedListConstructor [
+ LiteralExpr [LONG] [3]
+ ]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t13]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ RecordConstructor [
+ ]
+ RecordConstructor [
+ ]
+ RecordConstructor [
+ ]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t14]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ LiteralExpr [LONG] [1]
+ LiteralExpr [LONG] [2]
+ LiteralExpr [LONG] [3]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t15]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ LiteralExpr [LONG] [1]
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t16]
+ :
+ IndexAccessor [
+ OrderedListConstructor [
+ ]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t17]
+ :
+ IndexAccessor [
+ LiteralExpr [STRING] [non_array]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t18]
+ :
+ IndexAccessor [
+ LiteralExpr [MISSING]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t19]
+ :
+ IndexAccessor [
+ LiteralExpr [NULL]
+ Index: STAR
+ ]
+ )
+ (
+ LiteralExpr [STRING] [t20]
+ :
+ (
+ SELECT [
+ IndexAccessor [
+ FieldAccessor [
+ Variable [ Name=$d ]
+ Field=followers
+ ]
+ Index: STAR
+ ]
+ $1
+ ]
+ FROM [ FunctionCall asterix.dataset@1[
+ LiteralExpr [STRING] [TinySocial.d1]
+ ]
+ AS Variable [ Name=$d ]
+ ]
+ )
+ )
+]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_01/csv_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_01/csv_01.3.ast
index 75a14fc..86d45c5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_01/csv_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_01/csv_01.3.ast
@@ -37,7 +37,7 @@
(
LiteralExpr [STRING] [date-after]
:
- FunctionCall temp.date@1[
+ FunctionCall asterix.date@1[
FieldAccessor [
Variable [ Name=$i ]
Field=date
@@ -55,7 +55,7 @@
(
LiteralExpr [STRING] [time-after]
:
- FunctionCall temp.time@1[
+ FunctionCall asterix.time@1[
FieldAccessor [
Variable [ Name=$i ]
Field=time
@@ -73,7 +73,7 @@
(
LiteralExpr [STRING] [datetime-after]
:
- FunctionCall temp.datetime@1[
+ FunctionCall asterix.datetime@1[
FieldAccessor [
Variable [ Name=$i ]
Field=datetime
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_08_header_cr/csv_08.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_08_header_cr/csv_08.3.ast
index 75a14fc..86d45c5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_08_header_cr/csv_08.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_08_header_cr/csv_08.3.ast
@@ -37,7 +37,7 @@
(
LiteralExpr [STRING] [date-after]
:
- FunctionCall temp.date@1[
+ FunctionCall asterix.date@1[
FieldAccessor [
Variable [ Name=$i ]
Field=date
@@ -55,7 +55,7 @@
(
LiteralExpr [STRING] [time-after]
:
- FunctionCall temp.time@1[
+ FunctionCall asterix.time@1[
FieldAccessor [
Variable [ Name=$i ]
Field=time
@@ -73,7 +73,7 @@
(
LiteralExpr [STRING] [datetime-after]
:
- FunctionCall temp.datetime@1[
+ FunctionCall asterix.datetime@1[
FieldAccessor [
Variable [ Name=$i ]
Field=datetime
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_08_header_crlf/csv_08.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_08_header_crlf/csv_08.3.ast
index 75a14fc..86d45c5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_08_header_crlf/csv_08.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_08_header_crlf/csv_08.3.ast
@@ -37,7 +37,7 @@
(
LiteralExpr [STRING] [date-after]
:
- FunctionCall temp.date@1[
+ FunctionCall asterix.date@1[
FieldAccessor [
Variable [ Name=$i ]
Field=date
@@ -55,7 +55,7 @@
(
LiteralExpr [STRING] [time-after]
:
- FunctionCall temp.time@1[
+ FunctionCall asterix.time@1[
FieldAccessor [
Variable [ Name=$i ]
Field=time
@@ -73,7 +73,7 @@
(
LiteralExpr [STRING] [datetime-after]
:
- FunctionCall temp.datetime@1[
+ FunctionCall asterix.datetime@1[
FieldAccessor [
Variable [ Name=$i ]
Field=datetime
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_08_header_lf/csv_08.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_08_header_lf/csv_08.3.ast
index 75a14fc..86d45c5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_08_header_lf/csv_08.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/load/csv_08_header_lf/csv_08.3.ast
@@ -37,7 +37,7 @@
(
LiteralExpr [STRING] [date-after]
:
- FunctionCall temp.date@1[
+ FunctionCall asterix.date@1[
FieldAccessor [
Variable [ Name=$i ]
Field=date
@@ -55,7 +55,7 @@
(
LiteralExpr [STRING] [time-after]
:
- FunctionCall temp.time@1[
+ FunctionCall asterix.time@1[
FieldAccessor [
Variable [ Name=$i ]
Field=time
@@ -73,7 +73,7 @@
(
LiteralExpr [STRING] [datetime-after]
:
- FunctionCall temp.datetime@1[
+ FunctionCall asterix.datetime@1[
FieldAccessor [
Variable [ Name=$i ]
Field=datetime
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/groupby-orderby-count/groupby-orderby-count.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/groupby-orderby-count/groupby-orderby-count.3.ast
index 5d11c79..75e8b66 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/groupby-orderby-count/groupby-orderby-count.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/groupby-orderby-count/groupby-orderby-count.3.ast
@@ -31,7 +31,7 @@
]
AS Variable [ Name=$t ]
,
- FunctionCall twitter.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$t ]
Field=text
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/nested-loop-join_01/nested-loop-join_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/nested-loop-join_01/nested-loop-join_01.3.ast
index ca9f0b3..7ba0188 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/nested-loop-join_01/nested-loop-join_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/nested-loop-join_01/nested-loop-join_01.3.ast
@@ -15,7 +15,7 @@
(
LiteralExpr [STRING] [user-lottery_numbers-len]
:
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$user ]
Field=lottery_numbers
@@ -25,7 +25,7 @@
(
LiteralExpr [STRING] [visitor-lottery_numbers-len]
:
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$visitor ]
Field=lottery_numbers
@@ -46,14 +46,14 @@
]
Where
OperatorExpr [
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$user ]
Field=lottery_numbers
]
]
=
- FunctionCall test.len@1[
+ FunctionCall asterix.len@1[
FieldAccessor [
Variable [ Name=$visitor ]
Field=lottery_numbers
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/query_issue267/query_issue267.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/query_issue267/query_issue267.3.ast
index d17917f..2cb138c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/query_issue267/query_issue267.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/query_issue267/query_issue267.3.ast
@@ -16,14 +16,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.lowercase@1[
+ FunctionCall asterix.lowercase@1[
FieldAccessor [
Variable [ Name=$m ]
Field=name
]
]
=
- FunctionCall test.lowercase@1[
+ FunctionCall asterix.lowercase@1[
FieldAccessor [
Variable [ Name=$l ]
Field=name
@@ -32,14 +32,14 @@
]
and
OperatorExpr [
- FunctionCall test.string-length@1[
+ FunctionCall asterix.string-length@1[
FieldAccessor [
Variable [ Name=$m ]
Field=name
]
]
=
- FunctionCall test.string-length@1[
+ FunctionCall asterix.string-length@1[
FieldAccessor [
Variable [ Name=$l ]
Field=name
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/year_01/year_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/year_01/year_01.3.ast
index 43d5ce0..153ee6a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/year_01/year_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/misc/year_01/year_01.3.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-FunctionCall test.get-year@1[
+FunctionCall asterix.get-year@1[
LiteralExpr [STRING] [1996-12-01]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/load-with-ngram-index/load-with-ngram-index.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/load-with-ngram-index/load-with-ngram-index.3.ast
index 2ca5870..dcd9dd7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/load-with-ngram-index/load-with-ngram-index.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/load-with-ngram-index/load-with-ngram-index.3.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$c ]
]
Where
- FunctionCall TinySocial.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/load-with-rtree-index/load-with-rtree-index.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/load-with-rtree-index/load-with-rtree-index.3.ast
index 71ef449..60f04c7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/load-with-rtree-index/load-with-rtree-index.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/load-with-rtree-index/load-with-rtree-index.3.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$c ]
]
Where
- FunctionCall TinySocial.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
@@ -17,12 +17,12 @@
]
Field=sender-location
]
- FunctionCall TinySocial.create-rectangle@2[
- FunctionCall TinySocial.create-point@2[
+ FunctionCall asterix.create-rectangle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [0.0]
]
- FunctionCall TinySocial.create-point@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [50.0]
LiteralExpr [DOUBLE] [80.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/load-with-word-index/load-with-word-index.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/load-with-word-index/load-with-word-index.3.ast
index 8300e7e..a7e3777 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/load-with-word-index/load-with-word-index.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/load-with-word-index/load-with-word-index.3.ast
@@ -10,8 +10,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall TinySocial.similarity-jaccard-check@3[
- FunctionCall TinySocial.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
@@ -20,7 +20,7 @@
Field=name
]
]
- FunctionCall TinySocial.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Nathan Giesen]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-ngram-secondary-index-nullable/scan-delete-inverted-index-ngram-secondary-index-nullable.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-ngram-secondary-index-nullable/scan-delete-inverted-index-ngram-secondary-index-nullable.5.ast
index d9a04f1..8a58ffc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-ngram-secondary-index-nullable/scan-delete-inverted-index-ngram-secondary-index-nullable.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-ngram-secondary-index-nullable/scan-delete-inverted-index-ngram-secondary-index-nullable.5.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-ngram-secondary-index/scan-delete-inverted-index-ngram-secondary-index.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-ngram-secondary-index/scan-delete-inverted-index-ngram-secondary-index.5.ast
index d9a04f1..8a58ffc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-ngram-secondary-index/scan-delete-inverted-index-ngram-secondary-index.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-ngram-secondary-index/scan-delete-inverted-index-ngram-secondary-index.5.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-word-secondary-index-nullable/scan-delete-inverted-index-word-secondary-index-nullable.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-word-secondary-index-nullable/scan-delete-inverted-index-word-secondary-index-nullable.5.ast
index 480570a..92d61f3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-word-secondary-index-nullable/scan-delete-inverted-index-word-secondary-index-nullable.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-word-secondary-index-nullable/scan-delete-inverted-index-word-secondary-index-nullable.5.ast
@@ -13,8 +13,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -23,7 +23,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-word-secondary-index/scan-delete-inverted-index-word-secondary-index.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-word-secondary-index/scan-delete-inverted-index-word-secondary-index.5.ast
index 480570a..92d61f3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-word-secondary-index/scan-delete-inverted-index-word-secondary-index.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-inverted-index-word-secondary-index/scan-delete-inverted-index-word-secondary-index.5.ast
@@ -13,8 +13,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -23,7 +23,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-rtree-secondary-index-nullable/scan-delete-rtree-secondary-index-nullable.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-rtree-secondary-index-nullable/scan-delete-rtree-secondary-index-nullable.5.ast
index 9ce46c5..999e4e0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-rtree-secondary-index-nullable/scan-delete-rtree-secondary-index-nullable.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-rtree-secondary-index-nullable/scan-delete-rtree-secondary-index-nullable.5.ast
@@ -21,7 +21,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -29,7 +29,7 @@
]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-rtree-secondary-index/scan-delete-rtree-secondary-index.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-rtree-secondary-index/scan-delete-rtree-secondary-index.5.ast
index 9ce46c5..999e4e0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-rtree-secondary-index/scan-delete-rtree-secondary-index.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-delete-rtree-secondary-index/scan-delete-rtree-secondary-index.5.ast
@@ -21,7 +21,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -29,7 +29,7 @@
]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-ngram-secondary-index-nullable/scan-insert-inverted-index-ngram-secondary-index-nullable.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-ngram-secondary-index-nullable/scan-insert-inverted-index-ngram-secondary-index-nullable.5.ast
index d9a04f1..8a58ffc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-ngram-secondary-index-nullable/scan-insert-inverted-index-ngram-secondary-index-nullable.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-ngram-secondary-index-nullable/scan-insert-inverted-index-ngram-secondary-index-nullable.5.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-ngram-secondary-index/scan-insert-inverted-index-ngram-secondary-index.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-ngram-secondary-index/scan-insert-inverted-index-ngram-secondary-index.5.ast
index d9a04f1..8a58ffc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-ngram-secondary-index/scan-insert-inverted-index-ngram-secondary-index.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-ngram-secondary-index/scan-insert-inverted-index-ngram-secondary-index.5.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-word-secondary-index-nullable/scan-insert-inverted-index-word-secondary-index-nullable.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-word-secondary-index-nullable/scan-insert-inverted-index-word-secondary-index-nullable.5.ast
index 480570a..92d61f3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-word-secondary-index-nullable/scan-insert-inverted-index-word-secondary-index-nullable.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-word-secondary-index-nullable/scan-insert-inverted-index-word-secondary-index-nullable.5.ast
@@ -13,8 +13,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -23,7 +23,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-word-secondary-index/scan-insert-inverted-index-word-secondary-index.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-word-secondary-index/scan-insert-inverted-index-word-secondary-index.5.ast
index 480570a..92d61f3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-word-secondary-index/scan-insert-inverted-index-word-secondary-index.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-inverted-index-word-secondary-index/scan-insert-inverted-index-word-secondary-index.5.ast
@@ -13,8 +13,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -23,7 +23,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-rtree-secondary-index-nullable/scan-insert-rtree-secondary-index-nullable.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-rtree-secondary-index-nullable/scan-insert-rtree-secondary-index-nullable.5.ast
index 8977eed..ca67b97 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-rtree-secondary-index-nullable/scan-insert-rtree-secondary-index-nullable.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-rtree-secondary-index-nullable/scan-insert-rtree-secondary-index-nullable.5.ast
@@ -21,7 +21,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -29,7 +29,7 @@
]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-rtree-secondary-index/scan-insert-rtree-secondary-index.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-rtree-secondary-index/scan-insert-rtree-secondary-index.5.ast
index 8977eed..ca67b97 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-rtree-secondary-index/scan-insert-rtree-secondary-index.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index-dml/scan-insert-rtree-secondary-index/scan-insert-rtree-secondary-index.5.ast
@@ -21,7 +21,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -29,7 +29,7 @@
]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast
index 943af65..04331ab 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast
@@ -60,7 +60,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t2 ]
@@ -91,7 +91,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -111,7 +111,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/external-indexing/leftouterjoin/leftouterjoin.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/external-indexing/leftouterjoin/leftouterjoin.3.ast
index 8117066..f584fa8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/external-indexing/leftouterjoin/leftouterjoin.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/external-indexing/leftouterjoin/leftouterjoin.3.ast
@@ -106,7 +106,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/external-indexing/rtree-index/rtree-index.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/external-indexing/rtree-index/rtree-index.3.ast
index 6dbb3ea..5970091 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/external-indexing/rtree-index/rtree-index.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/external-indexing/rtree-index/rtree-index.3.ast
@@ -21,7 +21,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -29,7 +29,7 @@
]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
index 2de4faa..338d9fd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
@@ -37,7 +37,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-edit-distance/ngram-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-edit-distance/ngram-edit-distance.4.ast
index 5629998..d87de27 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-edit-distance/ngram-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-edit-distance/ngram-edit-distance.4.ast
@@ -33,7 +33,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
index 8fb65e3..d1b9639 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
@@ -38,8 +38,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -50,7 +50,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-jaccard/ngram-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-jaccard/ngram-jaccard.4.ast
index 74328ad..cd5661b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-jaccard/ngram-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/ngram-jaccard/ngram-jaccard.4.ast
@@ -34,8 +34,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -46,7 +46,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast
index 4881a92..f7abe91 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast
@@ -60,7 +60,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/word-jaccard-inline/word-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/word-jaccard-inline/word-jaccard-inline.4.ast
index cce9421..2282833 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/word-jaccard-inline/word-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/word-jaccard-inline/word-jaccard-inline.4.ast
@@ -37,8 +37,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -47,7 +47,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/word-jaccard/word-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/word-jaccard/word-jaccard.4.ast
index 4a4a222..5be9b6e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/word-jaccard/word-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-join/word-jaccard/word-jaccard.4.ast
@@ -33,8 +33,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -43,7 +43,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast
index 8117066..f584fa8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast
@@ -106,7 +106,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast
index 5fd6a09..09c197a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast
@@ -126,7 +126,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-invidx-sidx1/probe-pidx-with-join-invidx-sidx1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-invidx-sidx1/probe-pidx-with-join-invidx-sidx1.3.ast
index f3cc092..c0449bc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-invidx-sidx1/probe-pidx-with-join-invidx-sidx1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-invidx-sidx1/probe-pidx-with-join-invidx-sidx1.3.ast
@@ -67,7 +67,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -138,7 +138,7 @@
Field=tweetid
]
>
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [240]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast
index 769e4cf..5abf3e3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast
@@ -67,7 +67,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -138,7 +138,7 @@
Field=tweetid
]
>
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [240]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast
index 943af65..04331ab 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast
@@ -60,7 +60,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t2 ]
@@ -91,7 +91,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -111,7 +111,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast
index 14c38d5..03bf2e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast
@@ -61,7 +61,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t2 ]
@@ -111,7 +111,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -131,7 +131,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast
index d9a04f1..8a58ffc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast
index 8825927..1bcf75d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast
@@ -33,7 +33,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-contains@3[
+ FunctionCall asterix.edit-distance-contains@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$paper ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast
index 7dafb90..563b478 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast
@@ -13,7 +13,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.4.ast
index 627ab43..e2f8302 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.4.ast
@@ -31,7 +31,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$paper ]
@@ -44,7 +44,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$word ]
LiteralExpr [STRING] [Multmedia]
LiteralExpr [LONG] [1]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast
index 41a5216..b47036b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast
@@ -13,7 +13,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast
index d87360a..8fb87b1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast
@@ -14,8 +14,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -26,7 +26,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.4.ast
index bb146ed..4e30ec5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance-panic/inverted-index-olist-edit-distance-panic.4.ast
@@ -13,7 +13,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.4.ast
index b451307..91818e2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-olist-edit-distance/inverted-index-olist-edit-distance.4.ast
@@ -13,7 +13,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.4.ast
index 245e0a6..ad6c766 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-olist-jaccard/inverted-index-olist-jaccard.4.ast
@@ -13,7 +13,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.4.ast
index 2b79329..53cc10b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-ulist-jaccard/inverted-index-ulist-jaccard.4.ast
@@ -13,7 +13,7 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$c ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast
index d9a04f1..8a58ffc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast
index 480570a..92d61f3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast
@@ -13,8 +13,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -23,7 +23,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/rtree-secondary-index-nullable/rtree-secondary-index-nullable.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/rtree-secondary-index-nullable/rtree-secondary-index-nullable.4.ast
index 6dbb3ea..5970091 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/rtree-secondary-index-nullable/rtree-secondary-index-nullable.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/rtree-secondary-index-nullable/rtree-secondary-index-nullable.4.ast
@@ -21,7 +21,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -29,7 +29,7 @@
]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/rtree-secondary-index-open/rtree-secondary-index-open.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/rtree-secondary-index-open/rtree-secondary-index-open.4.ast
index 6dbb3ea..5970091 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/rtree-secondary-index-open/rtree-secondary-index-open.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/rtree-secondary-index-open/rtree-secondary-index-open.4.ast
@@ -21,7 +21,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -29,7 +29,7 @@
]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast
index 6dbb3ea..5970091 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-index/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast
@@ -21,7 +21,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -29,7 +29,7 @@
]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast
index 943af65..04331ab 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast
@@ -60,7 +60,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t2 ]
@@ -91,7 +91,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -111,7 +111,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/external-indexing/leftouterjoin/leftouterjoin.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/external-indexing/leftouterjoin/leftouterjoin.3.ast
index 8117066..f584fa8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/external-indexing/leftouterjoin/leftouterjoin.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/external-indexing/leftouterjoin/leftouterjoin.3.ast
@@ -106,7 +106,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/external-indexing/rtree-index/rtree-index.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/external-indexing/rtree-index/rtree-index.3.ast
index 6dbb3ea..5970091 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/external-indexing/rtree-index/rtree-index.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/external-indexing/rtree-index/rtree-index.3.ast
@@ -21,7 +21,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -29,7 +29,7 @@
]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
index 2de4faa..338d9fd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
@@ -37,7 +37,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-edit-distance/ngram-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-edit-distance/ngram-edit-distance.4.ast
index 5629998..d87de27 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-edit-distance/ngram-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-edit-distance/ngram-edit-distance.4.ast
@@ -33,7 +33,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
index e1044f3..6439f72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
@@ -38,8 +38,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -50,7 +50,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-jaccard/ngram-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-jaccard/ngram-jaccard.4.ast
index f111822..5abf683 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-jaccard/ngram-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/ngram-jaccard/ngram-jaccard.4.ast
@@ -34,8 +34,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -46,7 +46,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast
index 4881a92..f7abe91 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast
@@ -60,7 +60,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/word-jaccard-inline/word-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/word-jaccard-inline/word-jaccard-inline.4.ast
index cce9421..2282833 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/word-jaccard-inline/word-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/word-jaccard-inline/word-jaccard-inline.4.ast
@@ -37,8 +37,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -47,7 +47,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/word-jaccard/word-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/word-jaccard/word-jaccard.4.ast
index 4a4a222..5be9b6e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/word-jaccard/word-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-join/word-jaccard/word-jaccard.4.ast
@@ -33,8 +33,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$a ]
@@ -43,7 +43,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$b ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast
index 8117066..f584fa8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast
@@ -106,7 +106,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast
index 5fd6a09..09c197a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast
@@ -126,7 +126,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast
index 1b6e63e..e0496a1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast
@@ -61,7 +61,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$t1 ]
Field=message-text
@@ -123,7 +123,7 @@
Field=tweetid
]
>
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [240]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast
index 943af65..04331ab 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast
@@ -60,7 +60,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t2 ]
@@ -91,7 +91,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -111,7 +111,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast
index 14c38d5..03bf2e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast
@@ -61,7 +61,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t2 ]
@@ -111,7 +111,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$t1 ]
@@ -131,7 +131,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast
index d9a04f1..8a58ffc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast
index 8825927..1bcf75d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast
@@ -33,7 +33,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-contains@3[
+ FunctionCall asterix.edit-distance-contains@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$paper ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast
index 7dafb90..563b478 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast
@@ -13,7 +13,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast
index 41a5216..b47036b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast
@@ -13,7 +13,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast
index d87360a..8fb87b1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast
@@ -14,8 +14,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -26,7 +26,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast
index d9a04f1..8a58ffc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast
@@ -12,7 +12,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast
index 480570a..92d61f3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast
@@ -13,8 +13,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -23,7 +23,7 @@
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast
index 6dbb3ea..5970091 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/nested-open-index/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast
@@ -21,7 +21,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
FieldAccessor [
Variable [ Name=$o ]
@@ -29,7 +29,7 @@
]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs0/abs0.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs0/abs0.3.ast
index 406f256..45c3a40 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs0/abs0.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs0/abs0.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.abs@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-0]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.abs@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-0]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.abs@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-0]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.abs@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-0]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.abs@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [0]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.abs@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.abs@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [0]
]
]
@@ -67,8 +67,8 @@
(
LiteralExpr [STRING] [f7]
:
- FunctionCall test.abs@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs1/abs1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs1/abs1.3.ast
index 71c5830..069ced3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs1/abs1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs1/abs1.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.abs@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-20]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.abs@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-23]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.abs@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-29]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.abs@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-21]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.abs@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [20]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.abs@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [22]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.abs@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [23]
]
]
@@ -67,8 +67,8 @@
(
LiteralExpr [STRING] [f7]
:
- FunctionCall test.abs@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [27]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs2/abs2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs2/abs2.3.ast
index 0f65e75..5c9be1a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs2/abs2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs2/abs2.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.abs@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-20.1]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.abs@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-20.56e-30]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.abs@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [NaN]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.abs@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [INF]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.abs@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-INF]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.abs@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-0.0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.abs@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [0.0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs3/abs3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs3/abs3.3.ast
index 91fa426..7e934d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs3/abs3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs3/abs3.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [d0]
:
- FunctionCall test.abs@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-20.1]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [d1]
:
- FunctionCall test.abs@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-20.56e-30]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [d2]
:
- FunctionCall test.abs@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [NaN]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [d3]
:
- FunctionCall test.abs@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [INF]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [d4]
:
- FunctionCall test.abs@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-INF]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [d5]
:
- FunctionCall test.abs@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-0.0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [d6]
:
- FunctionCall test.abs@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [0.0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs4/abs4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs4/abs4.3.ast
index 26f4e05..e328898 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs4/abs4.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/abs4/abs4.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.abs@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.abs@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-20]
]
]
@@ -13,21 +13,21 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.abs@1[
+ FunctionCall asterix.abs@1[
- LiteralExpr [DOUBLE] [1.11]
]
)
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.abs@1[
+ FunctionCall asterix.abs@1[
LiteralExpr [DOUBLE] [12.9]
]
)
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.abs@1[
+ FunctionCall asterix.abs@1[
LiteralExpr [DOUBLE] [1.11]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_double/add_double.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_double/add_double.1.ast
index 7e1443c..8ddcd06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_double/add_double.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_double/add_double.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_float/add_float.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_float/add_float.1.ast
index 1e62488..167483e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_float/add_float.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_float/add_float.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
+
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
+
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
+
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
+
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
+
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
+
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int16/add_int16.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int16/add_int16.1.ast
index 6deac21..01f5c46 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int16/add_int16.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int16/add_int16.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
+
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
+
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
+
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
+
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
+
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
+
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int32/add_int32.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int32/add_int32.1.ast
index ae05be5..9aa0183 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int32/add_int32.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int32/add_int32.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
+
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
+
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
+
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
+
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
+
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
+
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int64/add_int64.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int64/add_int64.1.ast
index a63e244..93601a1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int64/add_int64.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int64/add_int64.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
+
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
+
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
+
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
+
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
+
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
+
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int8/add_int8.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int8/add_int8.1.ast
index 3b2741d..f0e6e9d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int8/add_int8.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/add_int8/add_int8.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
+
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
+
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
+
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
+
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
+
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
+
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling0/ceiling0.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling0/ceiling0.3.ast
index 971b343..23f481c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling0/ceiling0.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling0/ceiling0.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-0]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-0]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-0]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-0]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [0]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [0]
]
]
@@ -67,8 +67,8 @@
(
LiteralExpr [STRING] [f7]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling1/ceiling1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling1/ceiling1.3.ast
index 5c82b7f..4c09193 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling1/ceiling1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling1/ceiling1.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-20]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-23]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-29]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-21]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [20]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [22]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [23]
]
]
@@ -67,8 +67,8 @@
(
LiteralExpr [STRING] [f7]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [27]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling2/ceiling2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling2/ceiling2.3.ast
index 94a56b5..2120ca2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling2/ceiling2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling2/ceiling2.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [20.1]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-20.56e-30]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [NaN]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [INF]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-INF]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-0.0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [0.0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling3/ceiling3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling3/ceiling3.3.ast
index 741ba0b..f8003c9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling3/ceiling3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling3/ceiling3.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [d0]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [20.1]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [d1]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-20.56e-30]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [d2]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [NaN]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [d3]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [INF]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [d4]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-INF]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [d5]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-0.0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [d6]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [0.0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling4/ceiling4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling4/ceiling4.3.ast
index 1179f48..3d282a3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling4/ceiling4.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/ceiling4/ceiling4.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.ceiling@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.ceiling@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-20]
]
]
@@ -13,21 +13,21 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.ceiling@1[
+ FunctionCall asterix.ceiling@1[
- LiteralExpr [DOUBLE] [1.11]
]
)
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.ceiling@1[
+ FunctionCall asterix.ceiling@1[
LiteralExpr [DOUBLE] [12.9]
]
)
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.ceiling@1[
+ FunctionCall asterix.ceiling@1[
LiteralExpr [DOUBLE] [1.11]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.1.ast
index 67d0694..6b2a436 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_double/divide_double.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
/
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
/
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
/
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
/
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
/
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
/
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
/
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
/
@@ -108,7 +108,7 @@
LiteralExpr [STRING] [result9]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.1.ast
index 958937c..907094d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_float/divide_float.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
/
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
/
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
/
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
/
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
/
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
/
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
/
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
/
@@ -108,7 +108,7 @@
LiteralExpr [STRING] [result9]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1]
]
/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.1.ast
index 21f2d7f..92c636e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
/
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
/
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
/
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
/
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
/
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
/
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-6]
]
/
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-6]
]
/
@@ -108,7 +108,7 @@
LiteralExpr [STRING] [result9]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.2.ast
index f92b4c2..cb38eb5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.2.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int16/divide_int16.2.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
div
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
div
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
div
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
div
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
div
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
div
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-6]
]
div
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-6]
]
div
@@ -108,7 +108,7 @@
LiteralExpr [STRING] [result9]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
div
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.1.ast
index 37785cf..5f2bfec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
/
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
/
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
/
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
/
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
/
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
/
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-6]
]
/
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-6]
]
/
@@ -108,7 +108,7 @@
LiteralExpr [STRING] [result9]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.2.ast
index 75eb726..e093f45 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.2.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int32/divide_int32.2.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
div
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
div
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
div
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
div
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
div
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
div
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-6]
]
div
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-6]
]
div
@@ -108,7 +108,7 @@
LiteralExpr [STRING] [result9]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
div
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.1.ast
index 22a3401..4e119e6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
/
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
/
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
/
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
/
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
/
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
/
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-6]
]
/
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-6]
]
/
@@ -108,7 +108,7 @@
LiteralExpr [STRING] [result9]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.2.ast
index 8f295f3..2c265cf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.2.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int64/divide_int64.2.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
div
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
div
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
div
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
div
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
div
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
div
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-6]
]
div
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-6]
]
div
@@ -108,7 +108,7 @@
LiteralExpr [STRING] [result9]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
div
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.1.ast
index 2243ace..60ee303 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
/
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
/
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
/
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
/
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
/
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
/
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-6]
]
/
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-6]
]
/
@@ -108,7 +108,7 @@
LiteralExpr [STRING] [result9]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
/
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.2.ast
index f1e7dab..a3c05bc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.2.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/divide_int8/divide_int8.2.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
div
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
div
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
div
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
div
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
div
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
div
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-6]
]
div
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-6]
]
div
@@ -108,7 +108,7 @@
LiteralExpr [STRING] [result9]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
div
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor0/floor0.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor0/floor0.3.ast
index d6d9169..859e589 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor0/floor0.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor0/floor0.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.floor@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-0]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.floor@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-0]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.floor@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-0]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.floor@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-0]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.floor@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [0]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.floor@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.floor@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [0]
]
]
@@ -67,8 +67,8 @@
(
LiteralExpr [STRING] [f7]
:
- FunctionCall test.floor@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor1/floor1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor1/floor1.3.ast
index 8f18c92..b2604a1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor1/floor1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor1/floor1.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.floor@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-20]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.floor@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-23]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.floor@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-29]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.floor@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-21]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.floor@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [20]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.floor@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [22]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.floor@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [23]
]
]
@@ -67,8 +67,8 @@
(
LiteralExpr [STRING] [f7]
:
- FunctionCall test.floor@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [27]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor2/floor2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor2/floor2.3.ast
index 8ce77da..35b3d0a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor2/floor2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor2/floor2.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.floor@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [20.1]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.floor@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-20.56e-30]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.floor@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [NaN]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.floor@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [INF]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.floor@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-INF]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.floor@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-0.0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.floor@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [0.0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor3/floor3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor3/floor3.3.ast
index d08e4526..ef4bea2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor3/floor3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor3/floor3.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [d0]
:
- FunctionCall test.floor@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [20.1]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [d1]
:
- FunctionCall test.floor@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-20.56e-30]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [d2]
:
- FunctionCall test.floor@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [NaN]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [d3]
:
- FunctionCall test.floor@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [INF]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [d4]
:
- FunctionCall test.floor@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-INF]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [d5]
:
- FunctionCall test.floor@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-0.0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [d6]
:
- FunctionCall test.floor@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [0.0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor4/floor4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor4/floor4.3.ast
index 1bb6af7..d8a5c1c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor4/floor4.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/floor4/floor4.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.floor@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.floor@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-20]
]
]
@@ -13,21 +13,21 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.floor@1[
+ FunctionCall asterix.floor@1[
- LiteralExpr [DOUBLE] [1.11]
]
)
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.floor@1[
+ FunctionCall asterix.floor@1[
LiteralExpr [DOUBLE] [12.9]
]
)
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.floor@1[
+ FunctionCall asterix.floor@1[
LiteralExpr [DOUBLE] [1.11]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double/multiply_double.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double/multiply_double.1.ast
index 42394d3..3f90469 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double/multiply_double.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_double/multiply_double.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float/multiply_float.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float/multiply_float.1.ast
index 8568d10..8f6a1b9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float/multiply_float.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_float/multiply_float.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
*
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
*
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
*
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
*
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
*
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
*
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16/multiply_int16.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16/multiply_int16.1.ast
index 6419ff0..8d8ebd6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16/multiply_int16.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int16/multiply_int16.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
*
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
*
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
*
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
*
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
*
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
*
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32/multiply_int32.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32/multiply_int32.1.ast
index 55a5562..5e08c01 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32/multiply_int32.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int32/multiply_int32.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
*
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
*
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
*
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
*
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
*
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
*
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64/multiply_int64.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64/multiply_int64.1.ast
index 6498a56..3f0d0c2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64/multiply_int64.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int64/multiply_int64.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
*
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
*
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
*
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
*
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
*
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
*
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8/multiply_int8.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8/multiply_int8.1.ast
index 2487b68..6f31dcc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8/multiply_int8.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/multiply_int8/multiply_int8.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
*
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
*
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
*
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
*
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
*
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
*
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
*
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even0/round-half-to-even0.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even0/round-half-to-even0.3.ast
index 9c771d2..29df6f2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even0/round-half-to-even0.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even0/round-half-to-even0.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-0]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-0]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-0]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-0]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [0]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [0]
]
]
@@ -67,8 +67,8 @@
(
LiteralExpr [STRING] [f7]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even1/round-half-to-even1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even1/round-half-to-even1.3.ast
index 28d6297..eeb7203 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even1/round-half-to-even1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even1/round-half-to-even1.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-20]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-23]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-29]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-21]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [20]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [22]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [23]
]
]
@@ -67,8 +67,8 @@
(
LiteralExpr [STRING] [f7]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [27]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even2/round-half-to-even2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even2/round-half-to-even2.3.ast
index 6007940..3800d98 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even2/round-half-to-even2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even2/round-half-to-even2.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [0.5]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-20.5]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [NaN]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [INF]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-INF]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-0.0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [0.0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even20/round-half-to-even20.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even20/round-half-to-even20.3.ast
index 811c63a..5d6218f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even20/round-half-to-even20.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even20/round-half-to-even20.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-0]
]
LiteralExpr [LONG] [2]
@@ -14,8 +14,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int16@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-0]
]
LiteralExpr [LONG] [2]
@@ -24,8 +24,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int32@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-0]
]
LiteralExpr [LONG] [2]
@@ -34,8 +34,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int64@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-0]
]
LiteralExpr [LONG] [2]
@@ -44,8 +44,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [0]
]
LiteralExpr [LONG] [2]
@@ -54,8 +54,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int16@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [0]
]
LiteralExpr [LONG] [2]
@@ -64,8 +64,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int32@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [0]
]
LiteralExpr [LONG] [2]
@@ -74,8 +74,8 @@
(
LiteralExpr [STRING] [f7]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int64@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [0]
]
LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even21/round-half-to-even21.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even21/round-half-to-even21.3.ast
index b3d1598..3ae6e0e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even21/round-half-to-even21.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even21/round-half-to-even21.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-20]
]
LiteralExpr [LONG] [2]
@@ -14,8 +14,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int16@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-23]
]
LiteralExpr [LONG] [2]
@@ -24,8 +24,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int32@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-29]
]
LiteralExpr [LONG] [2]
@@ -34,8 +34,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int64@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-21]
]
LiteralExpr [LONG] [2]
@@ -44,8 +44,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [20]
]
LiteralExpr [LONG] [2]
@@ -54,8 +54,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int16@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [22]
]
LiteralExpr [LONG] [2]
@@ -64,8 +64,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int32@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [23]
]
LiteralExpr [LONG] [2]
@@ -74,8 +74,8 @@
(
LiteralExpr [STRING] [f7]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.int64@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [27]
]
LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even22/round-half-to-even22.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even22/round-half-to-even22.3.ast
index 0e2608e..94970f2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even22/round-half-to-even22.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even22/round-half-to-even22.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [d0]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [0.555]
]
LiteralExpr [LONG] [2]
@@ -14,8 +14,8 @@
(
LiteralExpr [STRING] [d1]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [0.322]
]
LiteralExpr [LONG] [2]
@@ -24,8 +24,8 @@
(
LiteralExpr [STRING] [d2]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [NaN]
]
LiteralExpr [LONG] [3]
@@ -34,8 +34,8 @@
(
LiteralExpr [STRING] [d3]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [INF]
]
LiteralExpr [LONG] [4]
@@ -44,8 +44,8 @@
(
LiteralExpr [STRING] [d4]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-INF]
]
LiteralExpr [LONG] [5]
@@ -54,8 +54,8 @@
(
LiteralExpr [STRING] [d5]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-0.0]
]
LiteralExpr [LONG] [6]
@@ -64,8 +64,8 @@
(
LiteralExpr [STRING] [d6]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.float@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [0.0]
]
LiteralExpr [LONG] [0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even23/round-half-to-even23.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even23/round-half-to-even23.3.ast
index 1797fdb..ed2d30a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even23/round-half-to-even23.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even23/round-half-to-even23.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [d0]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [0.555]
]
LiteralExpr [LONG] [2]
@@ -14,8 +14,8 @@
(
LiteralExpr [STRING] [d1]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [0.322]
]
LiteralExpr [LONG] [2]
@@ -24,8 +24,8 @@
(
LiteralExpr [STRING] [d2]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [NaN]
]
LiteralExpr [LONG] [3]
@@ -34,8 +34,8 @@
(
LiteralExpr [STRING] [d3]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [INF]
]
LiteralExpr [LONG] [4]
@@ -44,8 +44,8 @@
(
LiteralExpr [STRING] [d4]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-INF]
]
LiteralExpr [LONG] [5]
@@ -54,8 +54,8 @@
(
LiteralExpr [STRING] [d5]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-0.0]
]
LiteralExpr [LONG] [6]
@@ -64,8 +64,8 @@
(
LiteralExpr [STRING] [d6]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [0.0]
]
LiteralExpr [LONG] [0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even24/round-half-to-even24.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even24/round-half-to-even24.3.ast
index 80b6d09..f45c1b0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even24/round-half-to-even24.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even24/round-half-to-even24.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [d0]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [0.015]
]
LiteralExpr [LONG] [2]
@@ -14,8 +14,8 @@
(
LiteralExpr [STRING] [d1]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [0.025]
]
LiteralExpr [LONG] [2]
@@ -24,8 +24,8 @@
(
LiteralExpr [STRING] [d2]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [3.567812E+3]
]
LiteralExpr [LONG] [2]
@@ -34,8 +34,8 @@
(
LiteralExpr [STRING] [d3]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [4.7564E-3]
]
LiteralExpr [LONG] [2]
@@ -44,8 +44,8 @@
(
LiteralExpr [STRING] [d4]
:
- FunctionCall test.round-half-to-even@2[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@2[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [35612.25]
]
- LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even3/round-half-to-even3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even3/round-half-to-even3.3.ast
index 3376733..01f409e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even3/round-half-to-even3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even3/round-half-to-even3.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [d0]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [0.5]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [d1]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-20.5]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [d2]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [NaN]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [d3]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [INF]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [d4]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-INF]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [d5]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-0.0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [d6]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [0.0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even4/round-half-to-even4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even4/round-half-to-even4.3.ast
index 1b4eb21..ce46291 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even4/round-half-to-even4.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even4/round-half-to-even4.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [d0]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1.5]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [d1]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2.5]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even5/round-half-to-even5.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even5/round-half-to-even5.3.ast
index e2e0f27..1c5f143 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even5/round-half-to-even5.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round-half-to-even5/round-half-to-even5.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.round-half-to-even@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round-half-to-even@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-20]
]
]
@@ -13,21 +13,21 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.round-half-to-even@1[
+ FunctionCall asterix.round-half-to-even@1[
- LiteralExpr [DOUBLE] [1.5]
]
)
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.round-half-to-even@1[
+ FunctionCall asterix.round-half-to-even@1[
LiteralExpr [DOUBLE] [12.5]
]
)
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.round-half-to-even@1[
+ FunctionCall asterix.round-half-to-even@1[
LiteralExpr [DOUBLE] [1.5]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round0/round0.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round0/round0.3.ast
index f41a151..9a5ddb2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round0/round0.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round0/round0.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.round@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-0]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.round@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-0]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.round@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-0]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.round@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-0]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.round@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [0]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.round@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.round@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [0]
]
]
@@ -67,8 +67,8 @@
(
LiteralExpr [STRING] [f7]
:
- FunctionCall test.round@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round1/round1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round1/round1.3.ast
index ae7b4ce..7d0a2b8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round1/round1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round1/round1.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.round@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-20]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.round@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [-23]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.round@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [-29]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.round@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-21]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.round@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [20]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.round@1[
- FunctionCall test.int16@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [22]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.round@1[
- FunctionCall test.int32@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [23]
]
]
@@ -67,8 +67,8 @@
(
LiteralExpr [STRING] [f7]
:
- FunctionCall test.round@1[
- FunctionCall test.int64@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [27]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round2/round2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round2/round2.3.ast
index c6fd56d..b2966af 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round2/round2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round2/round2.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.round@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [20.1]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.round@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-20.56e-30]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.round@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [NaN]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.round@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [INF]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [f4]
:
- FunctionCall test.round@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-INF]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [f5]
:
- FunctionCall test.round@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-0.0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [f6]
:
- FunctionCall test.round@1[
- FunctionCall test.float@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [0.0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round3/round3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round3/round3.3.ast
index 6abd653..83b6831c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round3/round3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round3/round3.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [d0]
:
- FunctionCall test.round@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [20.1]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [d1]
:
- FunctionCall test.round@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-20.56e-30]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [d2]
:
- FunctionCall test.round@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [NaN]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [d3]
:
- FunctionCall test.round@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [INF]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [d4]
:
- FunctionCall test.round@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-INF]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [d5]
:
- FunctionCall test.round@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-0.0]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [d6]
:
- FunctionCall test.round@1[
- FunctionCall test.double@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [0.0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round4/round4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round4/round4.3.ast
index e446715..8dd3e3a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round4/round4.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/round4/round4.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [f0]
:
- FunctionCall test.round@1[
- FunctionCall test.int8@1[
+ FunctionCall asterix.round@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [-20]
]
]
@@ -13,21 +13,21 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.round@1[
+ FunctionCall asterix.round@1[
- LiteralExpr [DOUBLE] [1.11]
]
)
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.round@1[
+ FunctionCall asterix.round@1[
LiteralExpr [DOUBLE] [12.9]
]
)
(
LiteralExpr [STRING] [f3]
:
- FunctionCall test.round@1[
+ FunctionCall asterix.round@1[
LiteralExpr [DOUBLE] [1.11]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_double/subtract_double.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_double/subtract_double.1.ast
index b6a0800..b15d3b9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_double/subtract_double.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_double/subtract_double.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_float/subtract_float.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_float/subtract_float.1.ast
index 607e329..425174b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_float/subtract_float.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_float/subtract_float.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
-
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
-
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
-
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
-
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
-
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
-
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int16/subtract_int16.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int16/subtract_int16.1.ast
index a82b04c..4d3157a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int16/subtract_int16.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int16/subtract_int16.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
-
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
-
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
-
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
-
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
-
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
-
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int32/subtract_int32.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int32/subtract_int32.1.ast
index 1d60412..7e8789b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int32/subtract_int32.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int32/subtract_int32.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
-
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
-
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
-
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
-
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
-
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
-
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int64/subtract_int64.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int64/subtract_int64.1.ast
index 91964c1..9d8a11f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int64/subtract_int64.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int64/subtract_int64.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
-
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
-
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
-
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
-
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
-
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
-
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int8/subtract_int8.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int8/subtract_int8.1.ast
index dd072ac..f6c2f81b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int8/subtract_int8.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/subtract_int8/subtract_int8.1.ast
@@ -4,11 +4,11 @@
LiteralExpr [STRING] [result1]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
-
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
]
@@ -17,11 +17,11 @@
LiteralExpr [STRING] [result2]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
-
- FunctionCall null.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2]
]
]
@@ -30,11 +30,11 @@
LiteralExpr [STRING] [result3]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
-
- FunctionCall null.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+3]
]
]
@@ -43,11 +43,11 @@
LiteralExpr [STRING] [result4]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
-
- FunctionCall null.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-4]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [result5]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
-
- FunctionCall null.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [-5.5f]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [result6]
:
OperatorExpr [
- FunctionCall null.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+1]
]
-
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
]
@@ -82,7 +82,7 @@
LiteralExpr [STRING] [result7]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
@@ -93,7 +93,7 @@
LiteralExpr [STRING] [result8]
:
OperatorExpr [
- FunctionCall null.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [-6.5d]
]
-
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_double_02/unary-minus_double_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_double_02/unary-minus_double_02.3.ast
index c74b17a..8c13b77 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_double_02/unary-minus_double_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_double_02/unary-minus_double_02.3.ast
@@ -4,28 +4,28 @@
(
LiteralExpr [STRING] [double1]
:
- - FunctionCall test.double@1[
+ - FunctionCall asterix.double@1[
LiteralExpr [STRING] [-20.56e-30]
]
)
(
LiteralExpr [STRING] [double2]
:
- - FunctionCall test.double@1[
+ - FunctionCall asterix.double@1[
LiteralExpr [STRING] [NaN]
]
)
(
LiteralExpr [STRING] [double3]
:
- - FunctionCall test.double@1[
+ - FunctionCall asterix.double@1[
LiteralExpr [STRING] [INF]
]
)
(
LiteralExpr [STRING] [double4]
:
- - FunctionCall test.double@1[
+ - FunctionCall asterix.double@1[
LiteralExpr [STRING] [-INF]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_float_02/unary-minus_float_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_float_02/unary-minus_float_02.3.ast
index cd38a0c..6cf7762 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_float_02/unary-minus_float_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_float_02/unary-minus_float_02.3.ast
@@ -4,28 +4,28 @@
(
LiteralExpr [STRING] [float1]
:
- - FunctionCall test.float@1[
+ - FunctionCall asterix.float@1[
LiteralExpr [STRING] [-80.20f]
]
)
(
LiteralExpr [STRING] [float2]
:
- - FunctionCall test.float@1[
+ - FunctionCall asterix.float@1[
LiteralExpr [STRING] [NaN]
]
)
(
LiteralExpr [STRING] [float3]
:
- - FunctionCall test.float@1[
+ - FunctionCall asterix.float@1[
LiteralExpr [STRING] [INF]
]
)
(
LiteralExpr [STRING] [float4]
:
- - FunctionCall test.float@1[
+ - FunctionCall asterix.float@1[
LiteralExpr [STRING] [-INF]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_int_02/unary-minus_int_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_int_02/unary-minus_int_02.3.ast
index b37a097..4469767 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_int_02/unary-minus_int_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/numeric/unary-minus_int_02/unary-minus_int_02.3.ast
@@ -4,28 +4,28 @@
(
LiteralExpr [STRING] [int8]
:
- - FunctionCall test.int8@1[
+ - FunctionCall asterix.int8@1[
LiteralExpr [STRING] [+80]
]
)
(
LiteralExpr [STRING] [int16]
:
- - FunctionCall test.int16@1[
+ - FunctionCall asterix.int16@1[
LiteralExpr [STRING] [160]
]
)
(
LiteralExpr [STRING] [int32]
:
- - FunctionCall test.int32@1[
+ - FunctionCall asterix.int32@1[
LiteralExpr [STRING] [+320]
]
)
(
LiteralExpr [STRING] [int64]
:
- - FunctionCall test.int64@1[
+ - FunctionCall asterix.int64@1[
LiteralExpr [STRING] [-640]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/closed-object-constructor_01/closed-record-constructor_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/closed-object-constructor_01/closed-record-constructor_01.3.ast
index a24813d..bfe64db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/closed-object-constructor_01/closed-record-constructor_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/closed-object-constructor_01/closed-record-constructor_01.3.ast
@@ -2,7 +2,7 @@
Set import-private-functions=true
Query:
SELECT ELEMENT [
-FunctionCall test.closed-object-constructor@8[
+FunctionCall asterix.closed-object-constructor[
LiteralExpr [STRING] [foo1]
LiteralExpr [LONG] [10]
LiteralExpr [STRING] [bar1]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/closed-object-constructor_02/closed-record-constructor_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/closed-object-constructor_02/closed-record-constructor_02.3.ast
index 0fd5e43..d158af6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/closed-object-constructor_02/closed-record-constructor_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/closed-object-constructor_02/closed-record-constructor_02.3.ast
@@ -2,11 +2,11 @@
Set import-private-functions=true
Query:
SELECT ELEMENT [
-FunctionCall test.closed-object-constructor@8[
+FunctionCall asterix.closed-object-constructor[
LiteralExpr [STRING] [foo1]
LiteralExpr [LONG] [10]
LiteralExpr [STRING] [bar1]
- FunctionCall test.closed-object-constructor@12[
+ FunctionCall asterix.closed-object-constructor[
LiteralExpr [STRING] [bar1.1]
LiteralExpr [LONG] [10]
LiteralExpr [STRING] [bar1.2]
@@ -14,7 +14,7 @@
LiteralExpr [STRING] [bar1.3]
LiteralExpr [LONG] [30]
LiteralExpr [STRING] [bar1.4]
- FunctionCall test.closed-object-constructor@8[
+ FunctionCall asterix.closed-object-constructor[
LiteralExpr [STRING] [bar1.4.1]
LiteralExpr [LONG] [10]
LiteralExpr [STRING] [bar1.4.2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/field-access-by-index_01/field-access-by-index_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/field-access-by-index_01/field-access-by-index_01.3.ast
index 9d46669..b42dcbe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/field-access-by-index_01/field-access-by-index_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/field-access-by-index_01/field-access-by-index_01.3.ast
@@ -1,7 +1,7 @@
DataverseUse test
Set import-private-functions=true
Query:
-FunctionCall test.field-access-by-index@2[
+FunctionCall asterix.field-access-by-index@2[
RecordConstructor [
(
LiteralExpr [STRING] [foo1]
@@ -24,7 +24,7 @@
LiteralExpr [LONG] [40]
)
]
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/documentation-example/documentation-example.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/documentation-example/documentation-example.1.ast
index 288ed48..c6f1ae8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/documentation-example/documentation-example.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/documentation-example/documentation-example.1.ast
@@ -1,5 +1,5 @@
Query:
-FunctionCall null.get-object-field-value@2[
+FunctionCall asterix.get-object-field-value@2[
RecordConstructor [
(
LiteralExpr [STRING] [id]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/documentation-example/documentation-example.2.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/documentation-example/documentation-example.2.ast
index b95a864..5f98520 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/documentation-example/documentation-example.2.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/documentation-example/documentation-example.2.ast
@@ -1,5 +1,5 @@
Query:
-FunctionCall null.get-object-field-value@2[
+FunctionCall asterix.get-object-field-value@2[
RecordConstructor [
(
LiteralExpr [STRING] [id]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/documentation-example/documentation-example.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/documentation-example/documentation-example.3.ast
index 8f5b139..597ce85 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/documentation-example/documentation-example.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/documentation-example/documentation-example.3.ast
@@ -1,5 +1,5 @@
Query:
-FunctionCall null.get-object-field-value@2[
+FunctionCall asterix.get-object-field-value@2[
RecordConstructor [
(
LiteralExpr [STRING] [id]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/highly-nested-closed/highly-nested-open.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/highly-nested-closed/highly-nested-open.3.ast
index da3d608..19c9bbf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/highly-nested-closed/highly-nested-open.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/highly-nested-closed/highly-nested-open.3.ast
@@ -10,7 +10,7 @@
]
Let Variable [ Name=$result ]
:=
- FunctionCall test.get-object-field-value@2[
+ FunctionCall asterix.get-object-field-value@2[
Variable [ Name=$test ]
LiteralExpr [STRING] [class]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/highly-nested-mixed/highly-nested-mixed.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/highly-nested-mixed/highly-nested-mixed.3.ast
index da3d608..19c9bbf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/highly-nested-mixed/highly-nested-mixed.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/highly-nested-mixed/highly-nested-mixed.3.ast
@@ -10,7 +10,7 @@
]
Let Variable [ Name=$result ]
:=
- FunctionCall test.get-object-field-value@2[
+ FunctionCall asterix.get-object-field-value@2[
Variable [ Name=$test ]
LiteralExpr [STRING] [class]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/highly-nested-open/highly-nested-open.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/highly-nested-open/highly-nested-open.3.ast
index da3d608..19c9bbf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/highly-nested-open/highly-nested-open.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/highly-nested-open/highly-nested-open.3.ast
@@ -10,7 +10,7 @@
]
Let Variable [ Name=$result ]
:=
- FunctionCall test.get-object-field-value@2[
+ FunctionCall asterix.get-object-field-value@2[
Variable [ Name=$test ]
LiteralExpr [STRING] [class]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/tiny-social-example/tiny-social-example.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/tiny-social-example/tiny-social-example.4.ast
index 094696a..7104620 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/tiny-social-example/tiny-social-example.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/tiny-social-example/tiny-social-example.4.ast
@@ -8,14 +8,14 @@
]
AS Variable [ Name=$r ]
,
- FunctionCall TinySocial.get-object-fields@1[
+ FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
AS Variable [ Name=$f ]
]
Let Variable [ Name=$result ]
:=
- FunctionCall TinySocial.get-object-field-value@2[
+ FunctionCall asterix.get-object-field-value@2[
Variable [ Name=$r ]
FieldAccessor [
Variable [ Name=$f ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/tiny-social-example/tiny-social-example.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/tiny-social-example/tiny-social-example.5.ast
index 6b1c326..8bc07a4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/tiny-social-example/tiny-social-example.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-field-value/tiny-social-example/tiny-social-example.5.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-field-value@2[
+FunctionCall asterix.get-object-field-value@2[
FieldAccessor [
Variable [ Name=$m ]
Field=user
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/documentation-example/documentation-example.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/documentation-example/documentation-example.1.ast
index f5041fd..4f04f52 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/documentation-example/documentation-example.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/documentation-example/documentation-example.1.ast
@@ -1,5 +1,5 @@
Query:
-FunctionCall null.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
RecordConstructor [
(
LiteralExpr [STRING] [id]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.4.ast
index 5187e59..14f1b1a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.4.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$user ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.5.ast
index fda0f22..1ad68f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.5.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.6.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.6.ast
index 422509b..a7401d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.6.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.6.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.7.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.7.ast
index a15e713..e19db54 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.7.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.7.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.8.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.8.ast
index acd08a9..e007565 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.8.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.8.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.9.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.9.ast
index fadda54..5b62b89 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.9.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-no-complex-types/tiny-social-example-no-complex-types.9.ast
@@ -24,7 +24,7 @@
]
AS Variable [ Name=$r ]
,
- FunctionCall TinySocial.get-object-fields@1[
+ FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
AS Variable [ Name=$f ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.4.ast
index 5187e59..14f1b1a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.4.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$user ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.5.ast
index fda0f22..1ad68f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.5.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.6.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.6.ast
index 422509b..a7401d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.6.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.6.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.7.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.7.ast
index a15e713..e19db54 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.7.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.7.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.8.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.8.ast
index acd08a9..e007565 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.8.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.8.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.9.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.9.ast
index fadda54..5b62b89 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.9.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-lists/tiny-social-example-only-lists.9.ast
@@ -24,7 +24,7 @@
]
AS Variable [ Name=$r ]
,
- FunctionCall TinySocial.get-object-fields@1[
+ FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
AS Variable [ Name=$f ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.10.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.10.ast
index e6b376b..849fd69 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.10.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.10.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
FieldAccessor [
Variable [ Name=$message ]
Field=user
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.4.ast
index 5187e59..14f1b1a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.4.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$user ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.5.ast
index fda0f22..1ad68f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.5.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.6.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.6.ast
index 422509b..a7401d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.6.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.6.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.7.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.7.ast
index a15e713..e19db54 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.7.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.7.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.8.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.8.ast
index acd08a9..e007565 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.8.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.8.ast
@@ -1,7 +1,7 @@
DataverseUse TinySocial
Query:
SELECT ELEMENT [
-FunctionCall TinySocial.get-object-fields@1[
+FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.9.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.9.ast
index fadda54..5b62b89 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.9.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/get-object-fields/tiny-social-example-only-records/tiny-social-example-only-records.9.ast
@@ -24,7 +24,7 @@
]
AS Variable [ Name=$r ]
,
- FunctionCall TinySocial.get-object-fields@1[
+ FunctionCall asterix.get-object-fields@1[
Variable [ Name=$r ]
]
AS Variable [ Name=$f ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/open-closed-fieldname-conflict_issue173/open-closed-fieldname-conflict_issue173.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/open-closed-fieldname-conflict_issue173/open-closed-fieldname-conflict_issue173.3.ast
index 4cd24d8..5fbcee8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/open-closed-fieldname-conflict_issue173/open-closed-fieldname-conflict_issue173.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/open-closed-fieldname-conflict_issue173/open-closed-fieldname-conflict_issue173.3.ast
@@ -11,7 +11,7 @@
LiteralExpr [STRING] [smith]
)
(
- FunctionCall test.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [NAME]
]
:
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/open-object-constructor_01/open-record-constructor_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/open-object-constructor_01/open-record-constructor_01.3.ast
index 508889a..6dbabcb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/open-object-constructor_01/open-record-constructor_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/open-object-constructor_01/open-record-constructor_01.3.ast
@@ -2,7 +2,7 @@
Set import-private-functions=true
Query:
SELECT ELEMENT [
-FunctionCall test.open-object-constructor@8[
+FunctionCall asterix.open-object-constructor[
LiteralExpr [STRING] [foo1]
LiteralExpr [LONG] [10]
LiteralExpr [STRING] [bar1]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/open-object-constructor_02/open-record-constructor_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/open-object-constructor_02/open-record-constructor_02.3.ast
index 98594db..c30e88f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/open-object-constructor_02/open-record-constructor_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/objects/open-object-constructor_02/open-record-constructor_02.3.ast
@@ -2,11 +2,11 @@
Set import-private-functions=true
Query:
SELECT ELEMENT [
-FunctionCall test.open-object-constructor@8[
+FunctionCall asterix.open-object-constructor[
LiteralExpr [STRING] [foo1]
LiteralExpr [LONG] [10]
LiteralExpr [STRING] [bar1]
- FunctionCall test.closed-object-constructor@12[
+ FunctionCall asterix.closed-object-constructor[
LiteralExpr [STRING] [bar1.1]
LiteralExpr [LONG] [10]
LiteralExpr [STRING] [bar1.2]
@@ -14,7 +14,7 @@
LiteralExpr [STRING] [bar1.3]
LiteralExpr [LONG] [30]
LiteralExpr [STRING] [bar1.4]
- FunctionCall test.closed-object-constructor@8[
+ FunctionCall asterix.closed-object-constructor[
LiteralExpr [STRING] [bar1.4.1]
LiteralExpr [LONG] [10]
LiteralExpr [STRING] [bar1.4.2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-issue208/query-issue208.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-issue208/query-issue208.3.ast
index 4a0cf5b..e34ad23 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-issue208/query-issue208.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-issue208/query-issue208.3.ast
@@ -39,7 +39,7 @@
Field=send-time
]
>=
- FunctionCall OpenSocialNetworkData.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2005-04-13T17:17:22]
]
]
@@ -50,7 +50,7 @@
Field=send-time
]
<=
- FunctionCall OpenSocialNetworkData.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2011-04-13T17:18:22]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-proposal/query-proposal.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-proposal/query-proposal.3.ast
index 599d473..85f03ec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-proposal/query-proposal.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-proposal/query-proposal.3.ast
@@ -57,7 +57,7 @@
]
]
Satifies [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
Variable [ Name=$topic ]
LiteralExpr [STRING] [verizon]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-proposal02/query-proposal02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-proposal02/query-proposal02.3.ast
index b005051..9815371 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-proposal02/query-proposal02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-proposal02/query-proposal02.3.ast
@@ -47,7 +47,7 @@
]
]
Satifies [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
Variable [ Name=$reftopic ]
LiteralExpr [STRING] [verizon]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast
index 5d4c69d..8dfee3d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/external-indexing/leftouterjoin-rtree/leftouterjoin-rtree.3.ast
@@ -48,7 +48,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$t2 ]
Field=sender-location
@@ -73,7 +73,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=sender-location
@@ -87,7 +87,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/external-indexing/leftouterjoin/leftouterjoin.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/external-indexing/leftouterjoin/leftouterjoin.3.ast
index caf47d3..204a6a4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/external-indexing/leftouterjoin/leftouterjoin.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/external-indexing/leftouterjoin/leftouterjoin.3.ast
@@ -82,7 +82,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/external-indexing/rtree-index/rtree-index.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/external-indexing/rtree-index/rtree-index.3.ast
index 2f985dc..0345c25 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/external-indexing/rtree-index/rtree-index.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/external-indexing/rtree-index/rtree-index.3.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
index de125c4..402da91 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-edit-distance-inline/ngram-edit-distance-inline.4.ast
@@ -31,7 +31,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=name
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-edit-distance/ngram-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-edit-distance/ngram-edit-distance.4.ast
index ad5215b..dbbd917 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-edit-distance/ngram-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-edit-distance/ngram-edit-distance.4.ast
@@ -27,7 +27,7 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
FieldAccessor [
Variable [ Name=$a ]
Field=name
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
index b5e2450..7860328 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-jaccard-inline/ngram-jaccard-inline.4.ast
@@ -32,8 +32,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -41,7 +41,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-jaccard/ngram-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-jaccard/ngram-jaccard.4.ast
index 09fc922..110370a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-jaccard/ngram-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/ngram-jaccard/ngram-jaccard.4.ast
@@ -28,8 +28,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$a ]
Field=title
@@ -37,7 +37,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast
index 939c13a..676c6d9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/rtree-spatial-intersect-point/rtree-spatial-intersect-point.4.ast
@@ -48,7 +48,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$a ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/word-jaccard-inline/word-jaccard-inline.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/word-jaccard-inline/word-jaccard-inline.4.ast
index 3f3db25..2c08c13 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/word-jaccard-inline/word-jaccard-inline.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/word-jaccard-inline/word-jaccard-inline.4.ast
@@ -31,14 +31,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/word-jaccard/word-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/word-jaccard/word-jaccard.4.ast
index 9689853..009bbdd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/word-jaccard/word-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-join/word-jaccard/word-jaccard.4.ast
@@ -27,14 +27,14 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard@2[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$a ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$b ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast
index caf47d3..204a6a4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-btree-sidx1/probe-pidx-with-join-btree-sidx1.3.ast
@@ -82,7 +82,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast
index 63d8847..eab57b4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-btree-sidx2/probe-pidx-with-join-btree-sidx2.3.ast
@@ -96,7 +96,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast
index 67155b4..d4bad51 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-invidx-sidx2/probe-pidx-with-join-invidx-sidx2.3.ast
@@ -55,7 +55,7 @@
]
Let Variable [ Name=$sim ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$t1 ]
Field=message-text
@@ -108,7 +108,7 @@
Field=tweetid
]
>
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [240]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast
index 5d4c69d..8dfee3d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-rtree-sidx1/probe-pidx-with-join-rtree-sidx1.3.ast
@@ -48,7 +48,7 @@
AS Variable [ Name=$t2 ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$t2 ]
Field=sender-location
@@ -73,7 +73,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=sender-location
@@ -87,7 +87,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast
index e88a804..1563d4c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-leftouterjoin/probe-pidx-with-join-rtree-sidx2/probe-pidx-with-join-rtree-sidx2.3.ast
@@ -49,7 +49,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$t2 ]
Field=sender-location
@@ -87,7 +87,7 @@
]
Let Variable [ Name=$n ]
:=
- FunctionCall test.create-circle@2[
+ FunctionCall asterix.create-circle@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=sender-location
@@ -101,7 +101,7 @@
Field=tweetid
]
<
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [10]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast
index 8c4e3f1..6035e94 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-contains/inverted-index-ngram-contains.4.ast
@@ -50,7 +50,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast
index 0f93d91..6d19d11 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-contains/inverted-index-ngram-edit-distance-contains.4.ast
@@ -27,7 +27,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-contains@3[
+ FunctionCall asterix.edit-distance-contains@3[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast
index adc3eb8..b49f0bb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-panic/inverted-index-ngram-edit-distance-panic.4.ast
@@ -51,7 +51,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.4.ast
index 204b85c..6dd3c31 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance-word-tokens/inverted-index-ngram-edit-distance-word-tokens.4.ast
@@ -25,7 +25,7 @@
]
AS Variable [ Name=$paper ]
,
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -35,7 +35,7 @@
]
Where
IndexAccessor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$word ]
LiteralExpr [STRING] [Multmedia]
LiteralExpr [LONG] [1]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast
index b63ea47..2622dc7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-edit-distance/inverted-index-ngram-edit-distance.4.ast
@@ -51,7 +51,7 @@
]
Let Variable [ Name=$ed ]
:=
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
FieldAccessor [
Variable [ Name=$o ]
Field=authors
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast
index 5f71699..ef34f46 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-ngram-jaccard/inverted-index-ngram-jaccard.4.ast
@@ -52,8 +52,8 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.gram-tokens@3[
FieldAccessor [
Variable [ Name=$o ]
Field=title
@@ -61,7 +61,7 @@
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast
index 8c4e3f1..6035e94 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-word-contains/inverted-index-word-contains.4.ast
@@ -50,7 +50,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$o ]
Field=title
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast
index 9dfa690..df58c21 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/inverted-index-word-jaccard/inverted-index-word-jaccard.4.ast
@@ -51,14 +51,14 @@
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.similarity-jaccard-check@3[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$o ]
Field=title
]
]
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast
index 74ea6fe4..5f460d8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-index-enforced/index-selection/rtree-secondary-index/rtree-secondary-index.4.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [4.0]
LiteralExpr [DOUBLE] [1.0]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-check_ints/edit-distance-check_ints.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-check_ints/edit-distance-check_ints.3.ast
index b8c478a..3e66c49 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-check_ints/edit-distance-check_ints.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-check_ints/edit-distance-check_ints.3.ast
@@ -24,22 +24,22 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [LONG] [3]
]
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [LONG] [3]
]
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [LONG] [2]
]
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-check_strings/edit-distance-check_strings.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-check_strings/edit-distance-check_strings.3.ast
index febad20..7bdabbe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-check_strings/edit-distance-check_strings.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-check_strings/edit-distance-check_strings.3.ast
@@ -9,22 +9,22 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [LONG] [3]
]
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [LONG] [3]
]
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [LONG] [2]
]
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-check_unicode/edit-distance-check_unicode.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-check_unicode/edit-distance-check_unicode.3.ast
index dcf6a2d..7768118 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-check_unicode/edit-distance-check_unicode.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-check_unicode/edit-distance-check_unicode.3.ast
@@ -12,22 +12,22 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [LONG] [1]
]
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [LONG] [1]
]
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$b ]
Variable [ Name=$c ]
LiteralExpr [LONG] [1]
]
- FunctionCall test.edit-distance-check@3[
+ FunctionCall asterix.edit-distance-check@3[
Variable [ Name=$c ]
Variable [ Name=$b ]
LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-list-is-filterable/edit-distance-list-is-filterable.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-list-is-filterable/edit-distance-list-is-filterable.3.ast
index ead9c7c..d9dd240 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-list-is-filterable/edit-distance-list-is-filterable.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-list-is-filterable/edit-distance-list-is-filterable.3.ast
@@ -22,27 +22,27 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.edit-distance-list-is-filterable@2[
+ FunctionCall asterix.edit-distance-list-is-filterable@2[
Variable [ Name=$a ]
LiteralExpr [LONG] [0]
]
- FunctionCall test.edit-distance-list-is-filterable@2[
+ FunctionCall asterix.edit-distance-list-is-filterable@2[
Variable [ Name=$a ]
LiteralExpr [LONG] [3]
]
- FunctionCall test.edit-distance-list-is-filterable@2[
+ FunctionCall asterix.edit-distance-list-is-filterable@2[
Variable [ Name=$b ]
LiteralExpr [LONG] [0]
]
- FunctionCall test.edit-distance-list-is-filterable@2[
+ FunctionCall asterix.edit-distance-list-is-filterable@2[
Variable [ Name=$b ]
LiteralExpr [LONG] [3]
]
- FunctionCall test.edit-distance-list-is-filterable@2[
+ FunctionCall asterix.edit-distance-list-is-filterable@2[
Variable [ Name=$b ]
LiteralExpr [LONG] [8]
]
- FunctionCall test.edit-distance-list-is-filterable@2[
+ FunctionCall asterix.edit-distance-list-is-filterable@2[
Variable [ Name=$b ]
LiteralExpr [LONG] [11]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-string-is-filterable/edit-distance-string-is-filterable.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-string-is-filterable/edit-distance-string-is-filterable.3.ast
index bbac9fd..7d4fe2b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-string-is-filterable/edit-distance-string-is-filterable.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance-string-is-filterable/edit-distance-string-is-filterable.3.ast
@@ -10,121 +10,121 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$a ]
LiteralExpr [LONG] [0]
LiteralExpr [LONG] [2]
LiteralExpr [FALSE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$a ]
LiteralExpr [LONG] [0]
LiteralExpr [LONG] [2]
LiteralExpr [TRUE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$a ]
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
LiteralExpr [FALSE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$a ]
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
LiteralExpr [TRUE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [0]
LiteralExpr [LONG] [2]
LiteralExpr [FALSE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [0]
LiteralExpr [LONG] [2]
LiteralExpr [TRUE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
LiteralExpr [FALSE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
LiteralExpr [TRUE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [4]
LiteralExpr [LONG] [2]
LiteralExpr [FALSE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [5]
LiteralExpr [LONG] [2]
LiteralExpr [TRUE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [5]
LiteralExpr [LONG] [2]
LiteralExpr [FALSE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [6]
LiteralExpr [LONG] [2]
LiteralExpr [TRUE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [0]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [0]
LiteralExpr [LONG] [3]
LiteralExpr [TRUE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [3]
LiteralExpr [TRUE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [2]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [3]
LiteralExpr [LONG] [3]
LiteralExpr [TRUE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [3]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
]
- FunctionCall test.edit-distance-string-is-filterable@4[
+ FunctionCall asterix.edit-distance-string-is-filterable@4[
Variable [ Name=$b ]
LiteralExpr [LONG] [4]
LiteralExpr [LONG] [3]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance_ints/edit-distance_ints.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance_ints/edit-distance_ints.3.ast
index 26aedbf..09318cd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance_ints/edit-distance_ints.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance_ints/edit-distance_ints.3.ast
@@ -24,11 +24,11 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
Variable [ Name=$a ]
Variable [ Name=$b ]
]
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
Variable [ Name=$b ]
Variable [ Name=$a ]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance_strings/edit-distance_strings.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance_strings/edit-distance_strings.3.ast
index c47f7fa..48b6baf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance_strings/edit-distance_strings.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/edit-distance_strings/edit-distance_strings.3.ast
@@ -9,11 +9,11 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
Variable [ Name=$a ]
Variable [ Name=$b ]
]
- FunctionCall test.edit-distance@2[
+ FunctionCall asterix.edit-distance@2[
Variable [ Name=$b ]
Variable [ Name=$a ]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/fuzzyeq-similarity-jaccard/fuzzyeq-similarity-jaccard.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/fuzzyeq-similarity-jaccard/fuzzyeq-similarity-jaccard.3.ast
index 640a665..f0ccd53 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/fuzzyeq-similarity-jaccard/fuzzyeq-similarity-jaccard.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/fuzzyeq-similarity-jaccard/fuzzyeq-similarity-jaccard.3.ast
@@ -12,14 +12,14 @@
]
Where
OperatorExpr [
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
]
]
~=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/prefix-len-jaccard/prefix-len-jaccard.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/prefix-len-jaccard/prefix-len-jaccard.3.ast
index 40c2b99..a3ccf8c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/prefix-len-jaccard/prefix-len-jaccard.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/prefix-len-jaccard/prefix-len-jaccard.3.ast
@@ -3,27 +3,27 @@
Query:
SELECT ELEMENT [
OrderedListConstructor [
- FunctionCall test.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
LiteralExpr [LONG] [5]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
LiteralExpr [LONG] [5]
LiteralExpr [FLOAT] [0.9]
]
- FunctionCall test.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
LiteralExpr [LONG] [10]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
LiteralExpr [LONG] [10]
LiteralExpr [FLOAT] [0.9]
]
- FunctionCall test.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
LiteralExpr [LONG] [15]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.prefix-len-jaccard@2[
+ FunctionCall asterix.prefix-len-jaccard@2[
LiteralExpr [LONG] [15]
LiteralExpr [FLOAT] [0.9]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_ints/similarity-jaccard-check_ints.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_ints/similarity-jaccard-check_ints.3.ast
index fd29ffd..847d235 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_ints/similarity-jaccard-check_ints.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_ints/similarity-jaccard-check_ints.3.ast
@@ -70,62 +70,62 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [FLOAT] [0.0]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [FLOAT] [0.0]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [FLOAT] [0.1]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [FLOAT] [0.1]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$c ]
Variable [ Name=$d ]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$d ]
Variable [ Name=$c ]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$c ]
Variable [ Name=$d ]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$d ]
Variable [ Name=$c ]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$e ]
Variable [ Name=$f ]
LiteralExpr [FLOAT] [0.05]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$f ]
Variable [ Name=$e ]
LiteralExpr [FLOAT] [0.05]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$e ]
Variable [ Name=$f ]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$f ]
Variable [ Name=$e ]
LiteralExpr [FLOAT] [0.8]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_query/similarity-jaccard-check_query.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_query/similarity-jaccard-check_query.3.ast
index 465525c..dfc3031 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_query/similarity-jaccard-check_query.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_query/similarity-jaccard-check_query.3.ast
@@ -10,7 +10,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -18,12 +18,12 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Environments for Cooperative Transactions]
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_strings/similarity-jaccard-check_strings.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_strings/similarity-jaccard-check_strings.3.ast
index ce37445..83d4ab5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_strings/similarity-jaccard-check_strings.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_strings/similarity-jaccard-check_strings.3.ast
@@ -95,82 +95,82 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [FLOAT] [0.0]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [FLOAT] [0.0]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [FLOAT] [0.1]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [FLOAT] [0.1]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$c ]
Variable [ Name=$d ]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$d ]
Variable [ Name=$c ]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$c ]
Variable [ Name=$d ]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$d ]
Variable [ Name=$c ]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$e ]
Variable [ Name=$f ]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$f ]
Variable [ Name=$e ]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$e ]
Variable [ Name=$f ]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$f ]
Variable [ Name=$e ]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$g ]
Variable [ Name=$h ]
LiteralExpr [FLOAT] [0.05]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$h ]
Variable [ Name=$g ]
LiteralExpr [FLOAT] [0.05]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$g ]
Variable [ Name=$h ]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$h ]
Variable [ Name=$g ]
LiteralExpr [FLOAT] [0.8]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_strings_issue628/similarity-jaccard-check_strings_issue628.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_strings_issue628/similarity-jaccard-check_strings_issue628.3.ast
index a552729..6be3a31 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_strings_issue628/similarity-jaccard-check_strings_issue628.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-check_strings_issue628/similarity-jaccard-check_strings_issue628.3.ast
@@ -56,17 +56,17 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$v1 ]
Variable [ Name=$v2 ]
LiteralExpr [FLOAT] [0.5]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$v1 ]
Variable [ Name=$v3 ]
LiteralExpr [FLOAT] [0.5]
]
- FunctionCall test.similarity-jaccard-check@3[
+ FunctionCall asterix.similarity-jaccard-check@3[
Variable [ Name=$v4 ]
Variable [ Name=$v5 ]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-prefix-check/similarity-jaccard-prefix-check.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-prefix-check/similarity-jaccard-prefix-check.3.ast
index fc78deb..090fc42 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-prefix-check/similarity-jaccard-prefix-check.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-prefix-check/similarity-jaccard-prefix-check.3.ast
@@ -3,7 +3,7 @@
Query:
SELECT ELEMENT [
OrderedListConstructor [
- FunctionCall test.similarity-jaccard-prefix-check@6[
+ FunctionCall asterix.similarity-jaccard-prefix-check@6[
LiteralExpr [LONG] [3]
OrderedListConstructor [
LiteralExpr [LONG] [1]
@@ -19,7 +19,7 @@
LiteralExpr [LONG] [1]
LiteralExpr [FLOAT] [1.0]
]
- FunctionCall test.similarity-jaccard-prefix-check@6[
+ FunctionCall asterix.similarity-jaccard-prefix-check@6[
LiteralExpr [LONG] [3]
OrderedListConstructor [
LiteralExpr [LONG] [1]
@@ -35,7 +35,7 @@
LiteralExpr [LONG] [1]
LiteralExpr [FLOAT] [0.5]
]
- FunctionCall test.similarity-jaccard-prefix-check@6[
+ FunctionCall asterix.similarity-jaccard-prefix-check@6[
LiteralExpr [LONG] [3]
OrderedListConstructor [
LiteralExpr [LONG] [1]
@@ -51,7 +51,7 @@
LiteralExpr [LONG] [1]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-prefix-check@6[
+ FunctionCall asterix.similarity-jaccard-prefix-check@6[
LiteralExpr [LONG] [3]
OrderedListConstructor [
LiteralExpr [LONG] [1]
@@ -67,7 +67,7 @@
LiteralExpr [LONG] [1]
LiteralExpr [FLOAT] [0.5]
]
- FunctionCall test.similarity-jaccard-prefix-check@6[
+ FunctionCall asterix.similarity-jaccard-prefix-check@6[
LiteralExpr [LONG] [4]
OrderedListConstructor [
LiteralExpr [LONG] [1]
@@ -83,7 +83,7 @@
LiteralExpr [LONG] [1]
LiteralExpr [FLOAT] [0.5]
]
- FunctionCall test.similarity-jaccard-prefix-check@6[
+ FunctionCall asterix.similarity-jaccard-prefix-check@6[
LiteralExpr [LONG] [4]
OrderedListConstructor [
LiteralExpr [LONG] [1]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-prefix/similarity-jaccard-prefix.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-prefix/similarity-jaccard-prefix.3.ast
index 4267e4a..fc4806b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-prefix/similarity-jaccard-prefix.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-prefix/similarity-jaccard-prefix.3.ast
@@ -3,7 +3,7 @@
Query:
SELECT ELEMENT [
OrderedListConstructor [
- FunctionCall test.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
LiteralExpr [LONG] [3]
OrderedListConstructor [
LiteralExpr [LONG] [1]
@@ -19,7 +19,7 @@
LiteralExpr [LONG] [1]
LiteralExpr [FLOAT] [1.0]
]
- FunctionCall test.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
LiteralExpr [LONG] [3]
OrderedListConstructor [
LiteralExpr [LONG] [1]
@@ -35,7 +35,7 @@
LiteralExpr [LONG] [1]
LiteralExpr [FLOAT] [0.5]
]
- FunctionCall test.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
LiteralExpr [LONG] [3]
OrderedListConstructor [
LiteralExpr [LONG] [1]
@@ -51,7 +51,7 @@
LiteralExpr [LONG] [1]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
LiteralExpr [LONG] [3]
OrderedListConstructor [
LiteralExpr [LONG] [1]
@@ -67,7 +67,7 @@
LiteralExpr [LONG] [1]
LiteralExpr [FLOAT] [0.5]
]
- FunctionCall test.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
LiteralExpr [LONG] [4]
OrderedListConstructor [
LiteralExpr [LONG] [1]
@@ -83,7 +83,7 @@
LiteralExpr [LONG] [1]
LiteralExpr [FLOAT] [0.5]
]
- FunctionCall test.similarity-jaccard-prefix@6[
+ FunctionCall asterix.similarity-jaccard-prefix@6[
LiteralExpr [LONG] [4]
OrderedListConstructor [
LiteralExpr [LONG] [1]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted-check_ints/similarity-jaccard-sorted-check_ints.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted-check_ints/similarity-jaccard-sorted-check_ints.3.ast
index f8ff3ee..2380b01 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted-check_ints/similarity-jaccard-sorted-check_ints.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted-check_ints/similarity-jaccard-sorted-check_ints.3.ast
@@ -42,42 +42,42 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [FLOAT] [0.0]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [FLOAT] [0.0]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [FLOAT] [0.1]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [FLOAT] [0.1]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$c ]
Variable [ Name=$d ]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$d ]
Variable [ Name=$c ]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$c ]
Variable [ Name=$d ]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$d ]
Variable [ Name=$c ]
LiteralExpr [FLOAT] [0.8]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted-check_query/similarity-jaccard-sorted-check_query.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted-check_query/similarity-jaccard-sorted-check_query.3.ast
index df3273d..de0b41c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted-check_query/similarity-jaccard-sorted-check_query.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted-check_query/similarity-jaccard-sorted-check_query.3.ast
@@ -11,7 +11,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -19,12 +19,12 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Cooperative Transactions for Environments]
]
Let Variable [ Name=$jacc ]
:=
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
LiteralExpr [FLOAT] [0.5]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted-check_strings/similarity-jaccard-sorted-check_strings.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted-check_strings/similarity-jaccard-sorted-check_strings.3.ast
index c4a3047..220888c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted-check_strings/similarity-jaccard-sorted-check_strings.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted-check_strings/similarity-jaccard-sorted-check_strings.3.ast
@@ -67,62 +67,62 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [FLOAT] [0.0]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [FLOAT] [0.0]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$a ]
Variable [ Name=$b ]
LiteralExpr [FLOAT] [0.1]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$b ]
Variable [ Name=$a ]
LiteralExpr [FLOAT] [0.1]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$c ]
Variable [ Name=$d ]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$d ]
Variable [ Name=$c ]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$c ]
Variable [ Name=$d ]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$d ]
Variable [ Name=$c ]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$e ]
Variable [ Name=$f ]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$f ]
Variable [ Name=$e ]
LiteralExpr [FLOAT] [0.6]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$e ]
Variable [ Name=$f ]
LiteralExpr [FLOAT] [0.8]
]
- FunctionCall test.similarity-jaccard-sorted-check@3[
+ FunctionCall asterix.similarity-jaccard-sorted-check@3[
Variable [ Name=$f ]
Variable [ Name=$e ]
LiteralExpr [FLOAT] [0.8]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted_ints/similarity-jaccard-sorted_ints.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted_ints/similarity-jaccard-sorted_ints.3.ast
index 76b8506..f79b1d9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted_ints/similarity-jaccard-sorted_ints.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted_ints/similarity-jaccard-sorted_ints.3.ast
@@ -42,19 +42,19 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.similarity-jaccard-sorted@2[
+ FunctionCall asterix.similarity-jaccard-sorted@2[
Variable [ Name=$a ]
Variable [ Name=$b ]
]
- FunctionCall test.similarity-jaccard-sorted@2[
+ FunctionCall asterix.similarity-jaccard-sorted@2[
Variable [ Name=$b ]
Variable [ Name=$a ]
]
- FunctionCall test.similarity-jaccard-sorted@2[
+ FunctionCall asterix.similarity-jaccard-sorted@2[
Variable [ Name=$c ]
Variable [ Name=$d ]
]
- FunctionCall test.similarity-jaccard-sorted@2[
+ FunctionCall asterix.similarity-jaccard-sorted@2[
Variable [ Name=$d ]
Variable [ Name=$c ]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted_query/similarity-jaccard-sorted_query.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted_query/similarity-jaccard-sorted_query.3.ast
index 9a2a37d..5f730b3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted_query/similarity-jaccard-sorted_query.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted_query/similarity-jaccard-sorted_query.3.ast
@@ -11,7 +11,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -19,12 +19,12 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Cooperative Transactions for Environments]
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard-sorted@2[
+ FunctionCall asterix.similarity-jaccard-sorted@2[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted_strings/similarity-jaccard-sorted_strings.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted_strings/similarity-jaccard-sorted_strings.3.ast
index e346514..1efc13b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted_strings/similarity-jaccard-sorted_strings.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard-sorted_strings/similarity-jaccard-sorted_strings.3.ast
@@ -67,27 +67,27 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.similarity-jaccard-sorted@2[
+ FunctionCall asterix.similarity-jaccard-sorted@2[
Variable [ Name=$a ]
Variable [ Name=$b ]
]
- FunctionCall test.similarity-jaccard-sorted@2[
+ FunctionCall asterix.similarity-jaccard-sorted@2[
Variable [ Name=$b ]
Variable [ Name=$a ]
]
- FunctionCall test.similarity-jaccard-sorted@2[
+ FunctionCall asterix.similarity-jaccard-sorted@2[
Variable [ Name=$c ]
Variable [ Name=$d ]
]
- FunctionCall test.similarity-jaccard-sorted@2[
+ FunctionCall asterix.similarity-jaccard-sorted@2[
Variable [ Name=$d ]
Variable [ Name=$c ]
]
- FunctionCall test.similarity-jaccard-sorted@2[
+ FunctionCall asterix.similarity-jaccard-sorted@2[
Variable [ Name=$e ]
Variable [ Name=$f ]
]
- FunctionCall test.similarity-jaccard-sorted@2[
+ FunctionCall asterix.similarity-jaccard-sorted@2[
Variable [ Name=$f ]
Variable [ Name=$e ]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard_ints/similarity-jaccard_ints.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard_ints/similarity-jaccard_ints.3.ast
index 1684619..0bc8058 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard_ints/similarity-jaccard_ints.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard_ints/similarity-jaccard_ints.3.ast
@@ -67,27 +67,27 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$a ]
Variable [ Name=$b ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$b ]
Variable [ Name=$a ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$c ]
Variable [ Name=$d ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$d ]
Variable [ Name=$c ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$e ]
Variable [ Name=$f ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$f ]
Variable [ Name=$e ]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard_query/similarity-jaccard_query.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard_query/similarity-jaccard_query.3.ast
index 01d099d..66162f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard_query/similarity-jaccard_query.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard_query/similarity-jaccard_query.3.ast
@@ -11,7 +11,7 @@
]
Let Variable [ Name=$paper_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
FieldAccessor [
Variable [ Name=$paper ]
Field=title
@@ -19,12 +19,12 @@
]
Let Variable [ Name=$query_tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
LiteralExpr [STRING] [Transactions for Cooperative Environments]
]
Where
OperatorExpr [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$paper_tokens ]
Variable [ Name=$query_tokens ]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard_strings/similarity-jaccard_strings.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard_strings/similarity-jaccard_strings.3.ast
index 7bb6897..050651f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard_strings/similarity-jaccard_strings.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/similarity/similarity-jaccard_strings/similarity-jaccard_strings.3.ast
@@ -92,35 +92,35 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$a ]
Variable [ Name=$b ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$b ]
Variable [ Name=$a ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$c ]
Variable [ Name=$d ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$d ]
Variable [ Name=$c ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$e ]
Variable [ Name=$f ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$f ]
Variable [ Name=$e ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$g ]
Variable [ Name=$h ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$h ]
Variable [ Name=$g ]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.3.ast
index 1e51fca..e6f48db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation-with-filtering/cell-aggregation-with-filtering.3.ast
@@ -24,7 +24,7 @@
LiteralExpr [STRING] [Allergies]
Let Variable [ Name=$region ]
:=
- FunctionCall test.polygon@1[
+ FunctionCall asterix.polygon@1[
LiteralExpr [STRING] [
33.80503407287759,-126.41235263538363
44.9090773200516,-126.41235263538363
@@ -33,7 +33,7 @@
]
Where
OperatorExpr [
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$t ]
Field=loc
@@ -47,7 +47,7 @@
Field=time
]
>
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2011-05-15T00:00:00Z]
]
]
@@ -58,12 +58,12 @@
Field=time
]
<
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2011-05-16T23:59:59Z]
]
]
and
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$t ]
Field=text
@@ -74,12 +74,12 @@
Groupby
Variable [ Name=$c ]
:=
- FunctionCall test.spatial-cell@4[
+ FunctionCall asterix.spatial-cell@4[
FieldAccessor [
Variable [ Name=$t ]
Field=loc
]
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [24.5]
- LiteralExpr [DOUBLE] [125.5]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation/cell-aggregation.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation/cell-aggregation.3.ast
index ddd9e25..cf043bf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation/cell-aggregation.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/cell-aggregation/cell-aggregation.3.ast
@@ -25,12 +25,12 @@
Groupby
Variable [ Name=$c ]
:=
- FunctionCall test.spatial-cell@4[
+ FunctionCall asterix.spatial-cell@4[
FieldAccessor [
Variable [ Name=$o ]
Field=loc
]
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [0.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/circle-intersect-circle/circle-intersect-circle.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/circle-intersect-circle/circle-intersect-circle.3.ast
index 576e12e..93ed41b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/circle-intersect-circle/circle-intersect-circle.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/circle-intersect-circle/circle-intersect-circle.3.ast
@@ -18,9 +18,9 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
- FunctionCall test.create-circle@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.spatial-intersect@2[
+ FunctionCall asterix.create-circle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [0.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/circle_accessor/circle_accessor.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/circle_accessor/circle_accessor.3.ast
index 7a462d1..3d6a650 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/circle_accessor/circle_accessor.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/circle_accessor/circle_accessor.3.ast
@@ -4,9 +4,9 @@
(
LiteralExpr [STRING] [circle-radius]
:
- FunctionCall test.get-radius@1[
- FunctionCall test.create-circle@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.get-radius@1[
+ FunctionCall asterix.create-circle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [6.0]
LiteralExpr [DOUBLE] [3.0]
]
@@ -17,9 +17,9 @@
(
LiteralExpr [STRING] [circle-center]
:
- FunctionCall test.get-center@1[
- FunctionCall test.create-circle@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.get-center@1[
+ FunctionCall asterix.create-circle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [6.0]
LiteralExpr [DOUBLE] [3.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/distance-between-points/distance-between-points.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/distance-between-points/distance-between-points.3.ast
index 806c6d3..45f82af 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/distance-between-points/distance-between-points.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/distance-between-points/distance-between-points.3.ast
@@ -24,12 +24,12 @@
]
Let Variable [ Name=$distance ]
:=
- FunctionCall test.spatial-distance@2[
+ FunctionCall asterix.spatial-distance@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [0.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-circle/line-intersect-circle.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-circle/line-intersect-circle.3.ast
index 4c5531f..5a39f3f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-circle/line-intersect-circle.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-circle/line-intersect-circle.3.ast
@@ -18,13 +18,13 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=line1
]
- FunctionCall test.create-circle@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-circle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [0.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-line/line-intersect-line.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-line/line-intersect-line.3.ast
index c81ec44..10c36a5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-line/line-intersect-line.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-line/line-intersect-line.3.ast
@@ -18,7 +18,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=line1
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-polygon/line-intersect-polygon.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-polygon/line-intersect-polygon.3.ast
index 7e39b21..1a019cb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-polygon/line-intersect-polygon.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-polygon/line-intersect-polygon.3.ast
@@ -18,7 +18,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=line1
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-rectangle/line-intersect-rectangle.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-rectangle/line-intersect-rectangle.3.ast
index a5c81e2..d6feab2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-rectangle/line-intersect-rectangle.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line-intersect-rectangle/line-intersect-rectangle.3.ast
@@ -18,7 +18,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=line1
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line_accessor/line_accessor.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line_accessor/line_accessor.3.ast
index 44be116..a438d85 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line_accessor/line_accessor.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/line_accessor/line_accessor.3.ast
@@ -2,19 +2,19 @@
Query:
Let Variable [ Name=$line ]
:=
- FunctionCall test.create-line@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-line@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [100.6]
LiteralExpr [DOUBLE] [999.4]
]
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-point@2[
- LiteralExpr [DOUBLE] [872.0]
- LiteralExpr [DOUBLE] [876.9]
]
]
Let Variable [ Name=$line_list ]
:=
- FunctionCall test.get-points@1[
+ FunctionCall asterix.get-points@1[
Variable [ Name=$line ]
]
SELECT ELEMENT [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-equals-point/point-equals-point.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-equals-point/point-equals-point.3.ast
index aaf9a36..d4b7021 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-equals-point/point-equals-point.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-equals-point/point-equals-point.3.ast
@@ -18,12 +18,12 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [5.0]
LiteralExpr [DOUBLE] [1.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-in-circle/point-in-circle.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-in-circle/point-in-circle.3.ast
index ae6469b..b7ccc5a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-in-circle/point-in-circle.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-in-circle/point-in-circle.3.ast
@@ -18,13 +18,13 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
]
- FunctionCall test.create-circle@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-circle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [0.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-in-polygon/point-in-polygon.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-in-polygon/point-in-polygon.3.ast
index f614085..b6fbb36 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-in-polygon/point-in-polygon.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-in-polygon/point-in-polygon.3.ast
@@ -18,7 +18,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-in-rectangle/point-in-rectangle.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-in-rectangle/point-in-rectangle.3.ast
index 75c6087..f7f8923 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-in-rectangle/point-in-rectangle.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-in-rectangle/point-in-rectangle.3.ast
@@ -18,7 +18,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-on-line/point-on-line.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-on-line/point-on-line.3.ast
index a47745c..2e0dbf6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-on-line/point-on-line.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point-on-line/point-on-line.3.ast
@@ -18,7 +18,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=point
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point_accessor/point_accessor.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point_accessor/point_accessor.3.ast
index 6d5fe7e..e15bbf9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point_accessor/point_accessor.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/point_accessor/point_accessor.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [x-coordinate]
:
- FunctionCall test.get-x@1[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.get-x@1[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [2.3]
LiteralExpr [DOUBLE] [5.0]
]
@@ -14,8 +14,8 @@
(
LiteralExpr [STRING] [y-coordinate]
:
- FunctionCall test.get-y@1[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.get-y@1[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [2.3]
LiteralExpr [DOUBLE] [5.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon-intersect-circle/polygon-intersect-circle.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon-intersect-circle/polygon-intersect-circle.3.ast
index 783c331..e0dc871 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon-intersect-circle/polygon-intersect-circle.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon-intersect-circle/polygon-intersect-circle.3.ast
@@ -18,13 +18,13 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=poly1
]
- FunctionCall test.create-circle@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-circle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [6.0]
LiteralExpr [DOUBLE] [3.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon-intersect-polygon/polygon-intersect-polygon.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon-intersect-polygon/polygon-intersect-polygon.3.ast
index 65f6dea..e908a58 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon-intersect-polygon/polygon-intersect-polygon.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon-intersect-polygon/polygon-intersect-polygon.3.ast
@@ -18,7 +18,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=poly1
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon-intersect-rectangle/polygon-intersect-rectangle.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon-intersect-rectangle/polygon-intersect-rectangle.3.ast
index 87b6006..7f39534 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon-intersect-rectangle/polygon-intersect-rectangle.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon-intersect-rectangle/polygon-intersect-rectangle.3.ast
@@ -18,7 +18,7 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=poly1
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon_accessor/polygon_accessor.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon_accessor/polygon_accessor.3.ast
index 437f047..dafc1ba 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon_accessor/polygon_accessor.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/polygon_accessor/polygon_accessor.3.ast
@@ -2,7 +2,7 @@
Query:
Let Variable [ Name=$polygon ]
:=
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [1.0]
LiteralExpr [DOUBLE] [1.0]
@@ -16,7 +16,7 @@
]
Let Variable [ Name=$polygon_list ]
:=
- FunctionCall test.get-points@1[
+ FunctionCall asterix.get-points@1[
Variable [ Name=$polygon ]
]
SELECT ELEMENT [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/rectangle-intersect-circle/rectangle-intersect-circle.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/rectangle-intersect-circle/rectangle-intersect-circle.3.ast
index 0c3d894..aa6a274 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/rectangle-intersect-circle/rectangle-intersect-circle.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/rectangle-intersect-circle/rectangle-intersect-circle.3.ast
@@ -18,13 +18,13 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=rec
]
- FunctionCall test.create-circle@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-circle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [4.1]
LiteralExpr [DOUBLE] [4.1]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/rectangle-intersect-rectangle/rectangle-intersect-rectangle.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/rectangle-intersect-rectangle/rectangle-intersect-rectangle.3.ast
index 33c7191..cd0775b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/rectangle-intersect-rectangle/rectangle-intersect-rectangle.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/rectangle-intersect-rectangle/rectangle-intersect-rectangle.3.ast
@@ -18,17 +18,17 @@
AS Variable [ Name=$o ]
]
Where
- FunctionCall test.spatial-intersect@2[
+ FunctionCall asterix.spatial-intersect@2[
FieldAccessor [
Variable [ Name=$o ]
Field=rec
]
- FunctionCall test.create-rectangle@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-rectangle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [4.5]
LiteralExpr [DOUBLE] [9.0]
]
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-point@2[
- LiteralExpr [DOUBLE] [1.0]
LiteralExpr [DOUBLE] [5.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/rectangle_accessor/rectangle_accessor.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/rectangle_accessor/rectangle_accessor.3.ast
index 84032c7..b4bf03b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/rectangle_accessor/rectangle_accessor.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/rectangle_accessor/rectangle_accessor.3.ast
@@ -2,19 +2,19 @@
Query:
Let Variable [ Name=$rectangle ]
:=
- FunctionCall test.create-rectangle@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-rectangle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [9.2]
LiteralExpr [DOUBLE] [49.0]
]
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [77.8]
LiteralExpr [DOUBLE] [111.1]
]
]
Let Variable [ Name=$rectangle_list ]
:=
- FunctionCall test.get-points@1[
+ FunctionCall asterix.get-points@1[
Variable [ Name=$rectangle ]
]
SELECT ELEMENT [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/spatial-area/spatial-area.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/spatial-area/spatial-area.3.ast
index 72d824e..9001e68 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/spatial-area/spatial-area.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/spatial/spatial-area/spatial-area.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [polygonArea]
:
- FunctionCall test.spatial-area@1[
- FunctionCall test.create-polygon@1[
+ FunctionCall asterix.spatial-area@1[
+ FunctionCall asterix.create-polygon@1[
OrderedListConstructor [
LiteralExpr [DOUBLE] [1.0]
LiteralExpr [DOUBLE] [1.0]
@@ -22,9 +22,9 @@
(
LiteralExpr [STRING] [circleArea]
:
- FunctionCall test.spatial-area@1[
- FunctionCall test.create-circle@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.spatial-area@1[
+ FunctionCall asterix.create-circle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [0.0]
]
@@ -35,13 +35,13 @@
(
LiteralExpr [STRING] [rectangleArea]
:
- FunctionCall test.spatial-area@1[
- FunctionCall test.create-rectangle@2[
- FunctionCall test.create-point@2[
+ FunctionCall asterix.spatial-area@1[
+ FunctionCall asterix.create-rectangle@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [0.0]
LiteralExpr [DOUBLE] [5.0]
]
- FunctionCall test.create-point@2[
+ FunctionCall asterix.create-point@2[
LiteralExpr [DOUBLE] [8.0]
LiteralExpr [DOUBLE] [8.0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/codepoint-to-string1/codepoint-to-string1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/codepoint-to-string1/codepoint-to-string1.3.ast
index fefd6cf..43cd371 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/codepoint-to-string1/codepoint-to-string1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/codepoint-to-string1/codepoint-to-string1.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.codepoint-to-string@1[
+ FunctionCall asterix.codepoint-to-string@1[
OrderedListConstructor [
LiteralExpr [LONG] [20013]
LiteralExpr [LONG] [25991]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/codepoint-to-string2/codepoint-to-string2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/codepoint-to-string2/codepoint-to-string2.3.ast
index 84548d0..f7b74d5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/codepoint-to-string2/codepoint-to-string2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/codepoint-to-string2/codepoint-to-string2.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [f1]
:
- FunctionCall test.codepoint-to-string@1[
+ FunctionCall asterix.codepoint-to-string@1[
OrderedListConstructor [
]
]
@@ -12,7 +12,7 @@
(
LiteralExpr [STRING] [f2]
:
- FunctionCall test.codepoint-to-string@1[
+ FunctionCall asterix.codepoint-to-string@1[
OrderedListConstructor [
LiteralExpr [LONG] [97]
LiteralExpr [LONG] [98]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/concat_01/concat_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/concat_01/concat_01.3.ast
index e1831a8..80d8355 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/concat_01/concat_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/concat_01/concat_01.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.string-concat@1[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
LiteralExpr [STRING] [aa]
LiteralExpr [STRING] [25991]
@@ -16,7 +16,7 @@
(
LiteralExpr [STRING] [result2]
:
- FunctionCall test.string-concat@1[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/concat_02/concat_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/concat_02/concat_02.3.ast
index 00fcae6..8b341dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/concat_02/concat_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/concat_02/concat_02.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [a]
:
- FunctionCall test.string-concat@1[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
LiteralExpr [NULL]
]
@@ -13,7 +13,7 @@
(
LiteralExpr [STRING] [b]
:
- FunctionCall test.string-concat@1[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
LiteralExpr [NULL]
LiteralExpr [STRING] [foo]
@@ -23,7 +23,7 @@
(
LiteralExpr [STRING] [c]
:
- FunctionCall test.string-concat@1[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
LiteralExpr [STRING] [foo]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/concat_03/concat_03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/concat_03/concat_03.3.ast
index 79028fc..57c8a39 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/concat_03/concat_03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/concat_03/concat_03.3.ast
@@ -39,7 +39,7 @@
]
]
SELECT ELEMENT [
-FunctionCall test.string-concat@1[
+FunctionCall asterix.string-concat@1[
OrderedListConstructor [
FieldAccessor [
Variable [ Name=$x ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/constructor/constructor.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/constructor/constructor.3.ast
index e2f0522..8bf8f04 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/constructor/constructor.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/constructor/constructor.3.ast
@@ -17,7 +17,7 @@
Variable [ Name=$c ]
]
SELECT ELEMENT [
-FunctionCall test.string@1[
+FunctionCall asterix.string@1[
Variable [ Name=$x ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/contains_01/contains_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/contains_01/contains_01.3.ast
index 103b8b9..71faef0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/contains_01/contains_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/contains_01/contains_01.3.ast
@@ -2,11 +2,11 @@
Query:
SELECT ELEMENT [
OrderedListConstructor [
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
Variable [ Name=$x ]
LiteralExpr [STRING] [ofo]
]
- FunctionCall test.contains@2[
+ FunctionCall asterix.contains@2[
Variable [ Name=$y ]
LiteralExpr [STRING] [ofo]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/cpttostr01/cpttostr01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/cpttostr01/cpttostr01.3.ast
index 67695cc..8475722 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/cpttostr01/cpttostr01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/cpttostr01/cpttostr01.3.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-FunctionCall test.codepoint-to-string@1[
+FunctionCall asterix.codepoint-to-string@1[
FieldAccessor [
Variable [ Name=$l ]
Field=cpt
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/cpttostr02/cpttostr02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/cpttostr02/cpttostr02.3.ast
index 2304c31..c6b48ae 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/cpttostr02/cpttostr02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/cpttostr02/cpttostr02.3.ast
@@ -3,7 +3,7 @@
(
LiteralExpr [STRING] [c1]
:
- FunctionCall null.codepoint-to-string@1[
+ FunctionCall asterix.codepoint-to-string@1[
OrderedListConstructor [
LiteralExpr [LONG] [65]
LiteralExpr [LONG] [66]
@@ -37,7 +37,7 @@
(
LiteralExpr [STRING] [c2]
:
- FunctionCall null.codepoint-to-string@1[
+ FunctionCall asterix.codepoint-to-string@1[
OrderedListConstructor [
LiteralExpr [LONG] [97]
LiteralExpr [LONG] [98]
@@ -71,7 +71,7 @@
(
LiteralExpr [STRING] [c3]
:
- FunctionCall null.codepoint-to-string@1[
+ FunctionCall asterix.codepoint-to-string@1[
OrderedListConstructor [
LiteralExpr [LONG] [33]
LiteralExpr [LONG] [34]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/cpttostr04/cpttostr04.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/cpttostr04/cpttostr04.3.ast
index 5da3631..3df90e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/cpttostr04/cpttostr04.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/cpttostr04/cpttostr04.3.ast
@@ -3,8 +3,8 @@
(
LiteralExpr [STRING] [c1]
:
- FunctionCall null.codepoint-to-string@1[
- FunctionCall null.string-to-codepoint@1[
+ FunctionCall asterix.codepoint-to-string@1[
+ FunctionCall asterix.string-to-codepoint@1[
LiteralExpr [STRING] [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/escapes01/escapes01.1.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/escapes01/escapes01.1.ast
index 0d7c3bc..d5038bc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/escapes01/escapes01.1.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/escapes01/escapes01.1.ast
@@ -1,9 +1,10 @@
Query:
SELECT ELEMENT [
-FunctionCall null.string-concat@1[
+FunctionCall asterix.string-concat@1[
OrderedListConstructor [
LiteralExpr [STRING] [12
-3 4
567"8]
+3 4
+567"8]
LiteralExpr [STRING] ['9]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/length_01/length_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/length_01/length_01.3.ast
index 375ab2a..a01e7ae 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/length_01/length_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/length_01/length_01.3.ast
@@ -4,21 +4,21 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [STRING] [hellow]
]
)
(
LiteralExpr [STRING] [result2]
:
- FunctionCall test.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [STRING] []
]
)
(
LiteralExpr [STRING] [result3]
:
- FunctionCall test.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [NULL]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/length_02/length_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/length_02/length_02.3.ast
index e8efac8..59d2029 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/length_02/length_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/length_02/length_02.3.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-FunctionCall test.string-length@1[
+FunctionCall asterix.string-length@1[
Variable [ Name=$x ]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/lowercase/lowercase.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/lowercase/lowercase.3.ast
index 03c38a1..75aea5c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/lowercase/lowercase.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/lowercase/lowercase.3.ast
@@ -4,21 +4,21 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [HEllow]
]
)
(
LiteralExpr [STRING] [result2]
:
- FunctionCall test.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] []
]
)
(
LiteralExpr [STRING] [result3]
:
- FunctionCall test.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [NULL]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches02/matches02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches02/matches02.3.ast
index cd2490b..cdfa13f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches02/matches02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches02/matches02.3.ast
@@ -3,7 +3,7 @@
(
LiteralExpr [STRING] [c3]
:
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [Hello World]
LiteralExpr [STRING] [Hello World]
]
@@ -11,7 +11,7 @@
(
LiteralExpr [STRING] [c4]
:
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [Asterix for Dummies]
LiteralExpr [STRING] [Asterix for Dummies]
]
@@ -19,9 +19,9 @@
(
LiteralExpr [STRING] [c5]
:
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [semistructured data]
- FunctionCall null.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [SEMISTRUCTURED DATA]
]
]
@@ -29,7 +29,7 @@
(
LiteralExpr [STRING] [c6]
:
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [Mega Living!]
LiteralExpr [STRING] [Mega]
]
@@ -37,7 +37,7 @@
(
LiteralExpr [STRING] [c7]
:
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [Mega Living!]
LiteralExpr [STRING] [ving!]
]
@@ -45,7 +45,7 @@
(
LiteralExpr [STRING] [c8]
:
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [Mega Living!]
LiteralExpr [STRING] [ ]
]
@@ -53,7 +53,7 @@
(
LiteralExpr [STRING] [c9]
:
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [Mega Living!]
LiteralExpr [STRING] [a l]
]
@@ -61,7 +61,7 @@
(
LiteralExpr [STRING] [c10]
:
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [Mega Living!]
LiteralExpr [STRING] []
]
@@ -69,7 +69,7 @@
(
LiteralExpr [STRING] [c11]
:
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [ ]
LiteralExpr [STRING] [ ]
]
@@ -77,7 +77,7 @@
(
LiteralExpr [STRING] [c12]
:
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [aaaa]
LiteralExpr [STRING] [aaaaa]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches03/matches03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches03/matches03.3.ast
index f20037b..d239b54 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches03/matches03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches03/matches03.3.ast
@@ -3,55 +3,55 @@
Variable [ Name=$a ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [1234567890]
LiteralExpr [STRING] [[^a-z]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [1234567890]
LiteralExpr [STRING] [[^a-zA-Z]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abcdefghABCDEFGH]
LiteralExpr [STRING] [[^a-zA-Z]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
LiteralExpr [STRING] [[^a-zA-Z]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
LiteralExpr [STRING] [[^A-Z]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
LiteralExpr [STRING] [[^a-z]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
LiteralExpr [STRING] [[^0-9]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
LiteralExpr [STRING] [[0-9]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [adefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
LiteralExpr [STRING] [[a-z&&[^bc]]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
LiteralExpr [STRING] [[a-z&&[^bc]]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [bc]
LiteralExpr [STRING] [[a-z&&[^bc]]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [mnop]
LiteralExpr [STRING] [[a-z&&[^m-p]]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abcdmnop]
LiteralExpr [STRING] [[a-z&&[^m-p]]]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches04/matches04.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches04/matches04.3.ast
index af20adf..0210f96 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches04/matches04.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches04/matches04.3.ast
@@ -3,31 +3,31 @@
Variable [ Name=$a ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [UCI UCI UCI UCI UCI UCI]
LiteralExpr [STRING] [[UCI{6}]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [UCI UCI UCI UCI UCI UCI]
LiteralExpr [STRING] [[UCI{3,6}]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [UCI UCI UCI UCI UCI UCI]
LiteralExpr [STRING] [[UCI{7}]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [UCI UCI UCI UCI UCI UCI]
LiteralExpr [STRING] [[UCI{1}]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [UCI UCI UCI]
LiteralExpr [STRING] [[UCI+]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [false]
LiteralExpr [STRING] [[true|false]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [YX]
LiteralExpr [STRING] [[XY]]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches05/matches05.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches05/matches05.3.ast
index 9a81914..c584f4a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches05/matches05.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches05/matches05.3.ast
@@ -9,7 +9,7 @@
AS Variable [ Name=$l ]
]
Where
- FunctionCall test.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$l ]
Field=fname
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches06/matches06.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches06/matches06.3.ast
index 416f6d6..87be025 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches06/matches06.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches06/matches06.3.ast
@@ -3,64 +3,64 @@
Variable [ Name=$a ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [mnop]
LiteralExpr [STRING] [.]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abcdefABCDEF]
LiteralExpr [STRING] [/d]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [12345]
LiteralExpr [STRING] [\d]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abcdefGHIJK]
LiteralExpr [STRING] [\D]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [ ]
LiteralExpr [STRING] [\s]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [ ]
LiteralExpr [STRING] [\S]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [Welcome to pattern matching!]
LiteralExpr [STRING] [[a-zA-Z_0-9]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [!@#$%^&*()]
LiteralExpr [STRING] [[a-zA-Z_0-9]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [!@#$%^&*()]
LiteralExpr [STRING] [[^\W]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [!@#$%^&*]
LiteralExpr [STRING] [[^\w]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [0xffff]
LiteralExpr [STRING] [[\p{XDigit}]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [FFFFFFFF]
LiteralExpr [STRING] [[\p{XDigit}]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abcdefgh]
LiteralExpr [STRING] [[\p{javaLowerCase}]]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [ABCDEF]
LiteralExpr [STRING] [[\p{javaLowerCase}]]
]
- FunctionCall null.matches@2[
- FunctionCall null.codepoint-to-string@1[
+ FunctionCall asterix.matches@2[
+ FunctionCall asterix.codepoint-to-string@1[
OrderedListConstructor [
LiteralExpr [LONG] [163]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches1/matches1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches1/matches1.3.ast
index 083dc03..eeab1d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches1/matches1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches1/matches1.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [bra]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches11/matches11.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches11/matches11.3.ast
index f2630ec..4680ab8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches11/matches11.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches11/matches11.3.ast
@@ -4,23 +4,23 @@
]
FROM [ OrderedListConstructor [
LiteralExpr [NULL]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [hello]
LiteralExpr [NULL]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [hello]
LiteralExpr [STRING] [helllo]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [hello]
LiteralExpr [STRING] [ ]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [NULL]
LiteralExpr [STRING] [hello]
]
- FunctionCall null.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [hello]
LiteralExpr [STRING] [[^a-z]]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches2/matches2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches2/matches2.3.ast
index 5bc68c9..0793e9b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches2/matches2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches2/matches2.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [^a.*a$]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches21/matches21.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches21/matches21.3.ast
index bca016e..4b29841 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches21/matches21.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches21/matches21.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.matches@3[
+ FunctionCall asterix.matches@3[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [Bra]
LiteralExpr [STRING] []
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches22/matches22.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches22/matches22.3.ast
index 29cd657..bc1237d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches22/matches22.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches22/matches22.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.matches@3[
+ FunctionCall asterix.matches@3[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [Bra]
LiteralExpr [STRING] [i]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches23/matches23.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches23/matches23.3.ast
index 2510066..12aea05 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches23/matches23.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches23/matches23.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.matches@3[
+ FunctionCall asterix.matches@3[
LiteralExpr [STRING] [helloworld]
LiteralExpr [STRING] [hello world]
LiteralExpr [STRING] [x]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches3/matches3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches3/matches3.3.ast
index 198de67..ccf4560 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches3/matches3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matches3/matches3.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [^bra]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matchesnull/matchesnull.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matchesnull/matchesnull.3.ast
index f719453..c8eb15c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matchesnull/matchesnull.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/matchesnull/matchesnull.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] [helloworld]
LiteralExpr [NULL]
]
@@ -12,7 +12,7 @@
(
LiteralExpr [STRING] [result2]
:
- FunctionCall test.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [STRING] []
LiteralExpr [NULL]
]
@@ -20,7 +20,7 @@
(
LiteralExpr [STRING] [result3]
:
- FunctionCall test.matches@2[
+ FunctionCall asterix.matches@2[
LiteralExpr [NULL]
LiteralExpr [NULL]
]
@@ -28,7 +28,7 @@
(
LiteralExpr [STRING] [result4]
:
- FunctionCall test.matches@3[
+ FunctionCall asterix.matches@3[
LiteralExpr [STRING] [helloworld]
LiteralExpr [NULL]
LiteralExpr [STRING] []
@@ -37,7 +37,7 @@
(
LiteralExpr [STRING] [result5]
:
- FunctionCall test.matches@3[
+ FunctionCall asterix.matches@3[
LiteralExpr [STRING] []
LiteralExpr [NULL]
LiteralExpr [STRING] [i]
@@ -46,7 +46,7 @@
(
LiteralExpr [STRING] [result6]
:
- FunctionCall test.matches@3[
+ FunctionCall asterix.matches@3[
LiteralExpr [NULL]
LiteralExpr [NULL]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace1/replace1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace1/replace1.3.ast
index 1f92865..63df779 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace1/replace1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace1/replace1.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.replace@3[
+ FunctionCall asterix.replace@3[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [a]
LiteralExpr [STRING] []
@@ -13,7 +13,7 @@
(
LiteralExpr [STRING] [result2]
:
- FunctionCall test.replace@3[
+ FunctionCall asterix.replace@3[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [a(.)]
LiteralExpr [STRING] [a$1$1]
@@ -22,7 +22,7 @@
(
LiteralExpr [STRING] [result3]
:
- FunctionCall test.replace@3[
+ FunctionCall asterix.replace@3[
LiteralExpr [STRING] [darted]
LiteralExpr [STRING] [^(.*?)d(.*)$]
LiteralExpr [STRING] [$1c$2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace2/replace2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace2/replace2.3.ast
index 48dd866..1b63c8a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace2/replace2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace2/replace2.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.replace@3[
+ FunctionCall asterix.replace@3[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [bra]
LiteralExpr [STRING] [*]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace21/replace21.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace21/replace21.3.ast
index c162e62..6987e20 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace21/replace21.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace21/replace21.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.replace@4[
+ FunctionCall asterix.replace@4[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [Bra]
LiteralExpr [STRING] [kkk]
@@ -14,7 +14,7 @@
(
LiteralExpr [STRING] [result2]
:
- FunctionCall test.replace@4[
+ FunctionCall asterix.replace@4[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [Bra]
LiteralExpr [STRING] [kkk]
@@ -24,7 +24,7 @@
(
LiteralExpr [STRING] [result3]
:
- FunctionCall test.replace@4[
+ FunctionCall asterix.replace@4[
LiteralExpr [STRING] [helloworld]
LiteralExpr [STRING] [hello world]
LiteralExpr [STRING] [kkk]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace22/replace22.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace22/replace22.3.ast
index 7469d43..88c6dc3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace22/replace22.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace22/replace22.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.replace@4[
+ FunctionCall asterix.replace@4[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] []
LiteralExpr [NULL]
@@ -14,7 +14,7 @@
(
LiteralExpr [STRING] [result2]
:
- FunctionCall test.replace@4[
+ FunctionCall asterix.replace@4[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [bra]
LiteralExpr [STRING] [XXX]
@@ -24,7 +24,7 @@
(
LiteralExpr [STRING] [result3]
:
- FunctionCall test.replace@4[
+ FunctionCall asterix.replace@4[
LiteralExpr [NULL]
LiteralExpr [STRING] [hello world]
LiteralExpr [STRING] [XxXx]
@@ -34,7 +34,7 @@
(
LiteralExpr [STRING] [result4]
:
- FunctionCall test.replace@4[
+ FunctionCall asterix.replace@4[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [bra]
LiteralExpr [STRING] [XXX]
@@ -44,7 +44,7 @@
(
LiteralExpr [STRING] [result5]
:
- FunctionCall test.replace@4[
+ FunctionCall asterix.replace@4[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [NULL]
LiteralExpr [STRING] [XXX]
@@ -54,7 +54,7 @@
(
LiteralExpr [STRING] [result6]
:
- FunctionCall test.replace@4[
+ FunctionCall asterix.replace@4[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [Bra]
LiteralExpr [NULL]
@@ -64,7 +64,7 @@
(
LiteralExpr [STRING] [result7]
:
- FunctionCall test.replace@4[
+ FunctionCall asterix.replace@4[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [Bra]
LiteralExpr [STRING] []
@@ -74,7 +74,7 @@
(
LiteralExpr [STRING] [result8]
:
- FunctionCall test.replace@4[
+ FunctionCall asterix.replace@4[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] []
LiteralExpr [STRING] [XXX]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace3/replace3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace3/replace3.3.ast
index d9f2c0f..dd34592 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace3/replace3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/replace3/replace3.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.replace@3[
+ FunctionCall asterix.replace@3[
LiteralExpr [STRING] [abracadabra]
LiteralExpr [STRING] [a.*a]
LiteralExpr [STRING] [*]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strconcat01/strconcat01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strconcat01/strconcat01.3.ast
index edb4853..c2a9a7a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strconcat01/strconcat01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strconcat01/strconcat01.3.ast
@@ -5,7 +5,7 @@
(
LiteralExpr [STRING] [Full Name]
:
- FunctionCall test.string-concat@1[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
FieldAccessor [
Variable [ Name=$l ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strconcat02/strconcat02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strconcat02/strconcat02.3.ast
index 15439f2..ed56e21 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strconcat02/strconcat02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strconcat02/strconcat02.3.ast
@@ -3,26 +3,26 @@
Variable [ Name=$a ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.string-concat@1[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
- FunctionCall null.codepoint-to-string@1[
- FunctionCall null.string-to-codepoint@1[
+ FunctionCall asterix.codepoint-to-string@1[
+ FunctionCall asterix.string-to-codepoint@1[
LiteralExpr [STRING] [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
]
]
- FunctionCall null.codepoint-to-string@1[
- FunctionCall null.string-to-codepoint@1[
+ FunctionCall asterix.codepoint-to-string@1[
+ FunctionCall asterix.string-to-codepoint@1[
LiteralExpr [STRING] [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
]
]
- FunctionCall null.codepoint-to-string@1[
- FunctionCall null.string-to-codepoint@1[
+ FunctionCall asterix.codepoint-to-string@1[
+ FunctionCall asterix.string-to-codepoint@1[
LiteralExpr [STRING] [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
]
]
]
]
- FunctionCall null.string-concat@1[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
LiteralExpr [STRING] [ ]
LiteralExpr [STRING] [a]
@@ -42,7 +42,7 @@
LiteralExpr [STRING] [ ]
]
]
- FunctionCall null.string-concat@1[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
LiteralExpr [STRING] [This is a test]
LiteralExpr [STRING] [and all tests must pass]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-concat1/string-concat1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-concat1/string-concat1.3.ast
index 7584bf9..4995015 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-concat1/string-concat1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-concat1/string-concat1.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.string-concat@1[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
LiteralExpr [STRING] [aa]
LiteralExpr [STRING] [25991]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal1/string-equal1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal1/string-equal1.3.ast
index 1377e83..427e08c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal1/string-equal1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal1/string-equal1.3.ast
@@ -5,7 +5,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.string-equal@2[
+ FunctionCall asterix.string-equal@2[
LiteralExpr [STRING] [test]
LiteralExpr [STRING] [tess]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal2/string-equal2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal2/string-equal2.3.ast
index ecb7764..02d45fc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal2/string-equal2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal2/string-equal2.3.ast
@@ -5,7 +5,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.string-equal@2[
+ FunctionCall asterix.string-equal@2[
LiteralExpr [STRING] [test]
LiteralExpr [STRING] [test]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal3/string-equal3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal3/string-equal3.3.ast
index 87c8327..041918a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal3/string-equal3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal3/string-equal3.3.ast
@@ -5,7 +5,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.string-equal@2[
+ FunctionCall asterix.string-equal@2[
LiteralExpr [STRING] [test11]
LiteralExpr [STRING] [test]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal4/string-equal4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal4/string-equal4.3.ast
index 5eafec6..c6221c8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal4/string-equal4.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-equal4/string-equal4.3.ast
@@ -5,7 +5,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.string-equal@2[
+ FunctionCall asterix.string-equal@2[
LiteralExpr [STRING] []
LiteralExpr [STRING] []
]
@@ -13,7 +13,7 @@
(
LiteralExpr [STRING] [result3]
:
- FunctionCall test.string-equal@2[
+ FunctionCall asterix.string-equal@2[
LiteralExpr [NULL]
LiteralExpr [STRING] []
]
@@ -21,7 +21,7 @@
(
LiteralExpr [STRING] [result4]
:
- FunctionCall test.string-equal@2[
+ FunctionCall asterix.string-equal@2[
LiteralExpr [STRING] []
LiteralExpr [NULL]
]
@@ -29,7 +29,7 @@
(
LiteralExpr [STRING] [result5]
:
- FunctionCall test.string-equal@2[
+ FunctionCall asterix.string-equal@2[
LiteralExpr [NULL]
LiteralExpr [NULL]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-join1/string-join1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-join1/string-join1.3.ast
index e8946c8..330d993 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-join1/string-join1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-join1/string-join1.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result0]
:
- FunctionCall test.string-join@2[
+ FunctionCall asterix.string-join@2[
OrderedListConstructor [
LiteralExpr [STRING] [aa]
LiteralExpr [STRING] [25991]
@@ -17,7 +17,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.string-join@2[
+ FunctionCall asterix.string-join@2[
OrderedListConstructor [
LiteralExpr [STRING] [aa]
LiteralExpr [STRING] [25991]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-to-codepoint/string-to-codepoint.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-to-codepoint/string-to-codepoint.3.ast
index 35813f4..6908bf5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-to-codepoint/string-to-codepoint.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-to-codepoint/string-to-codepoint.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.string-to-codepoint@1[
+ FunctionCall asterix.string-to-codepoint@1[
LiteralExpr [STRING] [abcd]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-to-codepoint1/string-to-codepoint1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-to-codepoint1/string-to-codepoint1.3.ast
index f702769..e2d9b35 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-to-codepoint1/string-to-codepoint1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-to-codepoint1/string-to-codepoint1.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.string-to-codepoint@1[
+ FunctionCall asterix.string-to-codepoint@1[
LiteralExpr [STRING] []
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-to-codepoint2/string-to-codepoint2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-to-codepoint2/string-to-codepoint2.3.ast
index 28d357a..a57b54ef 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-to-codepoint2/string-to-codepoint2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/string-to-codepoint2/string-to-codepoint2.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.string-to-codepoint@1[
+ FunctionCall asterix.string-to-codepoint@1[
LiteralExpr [STRING] [揢čż]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strlen02/strlen02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strlen02/strlen02.3.ast
index 540956a..148afbe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strlen02/strlen02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strlen02/strlen02.3.ast
@@ -3,22 +3,22 @@
Variable [ Name=$a ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [STRING] [abcdefghijklmnopqrstu]
]
- FunctionCall null.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [STRING] [ABCDEFGHIJKLMNOPQRSTU]
]
- FunctionCall null.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [STRING] [abcdEFGHijklMNOPqrstu]
]
- FunctionCall null.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [STRING] [abcd EFGH ijkl MNOP qrstu]
]
- FunctionCall null.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [STRING] [ Hello World !!!!....:-)]
]
- FunctionCall null.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [STRING] [~!@#$%^&*()_+{}:?<>/.,';`][\]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strlen03/strlen03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strlen03/strlen03.3.ast
index f25307f..91e17a8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strlen03/strlen03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strlen03/strlen03.3.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-FunctionCall test.string-length@1[
+FunctionCall asterix.string-length@1[
FieldAccessor [
Variable [ Name=$l ]
Field=name
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strtocpt01/strtocpt01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strtocpt01/strtocpt01.3.ast
index 1792f53..d2443e2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strtocpt01/strtocpt01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strtocpt01/strtocpt01.3.ast
@@ -1,4 +1,4 @@
Query:
-FunctionCall null.string-to-codepoint@1[
+FunctionCall asterix.string-to-codepoint@1[
LiteralExpr [STRING] [ABCDEFGHIJKLMNOPQRSTUVWXYZ-01234567890]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strtocpt02/strtocpt02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strtocpt02/strtocpt02.3.ast
index b152b24..f424d6d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strtocpt02/strtocpt02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strtocpt02/strtocpt02.3.ast
@@ -1,4 +1,4 @@
Query:
-FunctionCall null.string-to-codepoint@1[
+FunctionCall asterix.string-to-codepoint@1[
LiteralExpr [STRING] ["'-=_+|\,./<>?:;~`]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strtocpt03/strtocpt03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strtocpt03/strtocpt03.3.ast
index ab3df0f..996499b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strtocpt03/strtocpt03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/strtocpt03/strtocpt03.3.ast
@@ -1,4 +1,4 @@
Query:
-FunctionCall null.string-to-codepoint@1[
+FunctionCall asterix.string-to-codepoint@1[
LiteralExpr [STRING] [!@#$%^&*()]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr01/offset0/substring/substring.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr01/offset0/substring/substring.3.ast
index 31a6a19..5fd0b65 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr01/offset0/substring/substring.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr01/offset0/substring/substring.3.ast
@@ -3,7 +3,7 @@
(
LiteralExpr [STRING] [str2]
:
- FunctionCall null.substring@2[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [Hello World]
LiteralExpr [LONG] [9]
]
@@ -11,7 +11,7 @@
(
LiteralExpr [STRING] [str4]
:
- FunctionCall null.substring@2[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [This is a test string]
LiteralExpr [LONG] [20]
]
@@ -19,7 +19,7 @@
(
LiteralExpr [STRING] [str6]
:
- FunctionCall null.substring@2[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [This is a test string]
LiteralExpr [LONG] [21]
]
@@ -27,7 +27,7 @@
(
LiteralExpr [STRING] [str8]
:
- FunctionCall null.substring@2[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [This is a test string]
LiteralExpr [LONG] [0]
]
@@ -35,7 +35,7 @@
(
LiteralExpr [STRING] [str10]
:
- FunctionCall null.substring@2[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [This is a test string]
- LiteralExpr [LONG] [6]
]
@@ -43,8 +43,8 @@
(
LiteralExpr [STRING] [str13]
:
- FunctionCall null.substring@2[
- FunctionCall null.string-concat@1[
+ FunctionCall asterix.substring@2[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
LiteralExpr [STRING] [This is a test string]
LiteralExpr [STRING] [This is a another test string]
@@ -56,11 +56,11 @@
(
LiteralExpr [STRING] [str14]
:
- FunctionCall null.substring@2[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [UC Irvine]
OperatorExpr [
OperatorExpr [
- FunctionCall null.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [STRING] [UC Irvine]
]
div
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr04/substr04.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr04/substr04.3.ast
index 1727ec1..8ae064e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr04/substr04.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr04/substr04.3.ast
@@ -3,70 +3,70 @@
Variable [ Name=$a ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.substring@3[
+ FunctionCall asterix.substring@3[
LiteralExpr [STRING] [hello world]
LiteralExpr [LONG] [6]
LiteralExpr [LONG] [5]
]
- FunctionCall null.substring@3[
+ FunctionCall asterix.substring@3[
LiteralExpr [STRING] [hello world]
LiteralExpr [LONG] [0]
LiteralExpr [LONG] [11]
]
- FunctionCall null.substring@3[
+ FunctionCall asterix.substring@3[
LiteralExpr [STRING] [hello world]
LiteralExpr [LONG] [2]
LiteralExpr [LONG] [9]
]
- FunctionCall null.substring@3[
+ FunctionCall asterix.substring@3[
LiteralExpr [STRING] [ABCD]
LiteralExpr [LONG] [2]
LiteralExpr [LONG] [2]
]
- FunctionCall null.substring@3[
+ FunctionCall asterix.substring@3[
LiteralExpr [STRING] [ABCD]
LiteralExpr [LONG] [0]
LiteralExpr [LONG] [4]
]
- FunctionCall null.substring@3[
+ FunctionCall asterix.substring@3[
LiteralExpr [STRING] [UC Irvine]
LiteralExpr [LONG] [3]
OperatorExpr [
- FunctionCall null.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [STRING] [UC Irvine]
]
-
LiteralExpr [LONG] [3]
]
]
- FunctionCall null.substring@3[
+ FunctionCall asterix.substring@3[
LiteralExpr [STRING] [UC Irvine]
LiteralExpr [LONG] [0]
- FunctionCall null.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [STRING] [UC Irvine]
]
]
- FunctionCall null.substring@3[
- FunctionCall null.substring@2[
+ FunctionCall asterix.substring@3[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [UC Irvine]
LiteralExpr [LONG] [3]
]
LiteralExpr [LONG] [0]
- FunctionCall null.string-length@1[
+ FunctionCall asterix.string-length@1[
LiteralExpr [STRING] [Irvine]
]
]
- FunctionCall null.substring@3[
+ FunctionCall asterix.substring@3[
LiteralExpr [STRING] [ABCD]
- LiteralExpr [LONG] [3]
LiteralExpr [LONG] [2]
]
- FunctionCall null.substring@3[
+ FunctionCall asterix.substring@3[
LiteralExpr [STRING] [ABCD]
- LiteralExpr [LONG] [10]
LiteralExpr [LONG] [1]
]
- FunctionCall null.substring@3[
+ FunctionCall asterix.substring@3[
LiteralExpr [STRING] [ABCD]
LiteralExpr [LONG] [1]
- LiteralExpr [LONG] [1]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr05/substr05.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr05/substr05.3.ast
index 685a3b4..ee1908e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr05/substr05.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr05/substr05.3.ast
@@ -1,14 +1,14 @@
DataverseUse test
Query:
SELECT ELEMENT [
-FunctionCall test.substring@3[
+FunctionCall asterix.substring@3[
FieldAccessor [
Variable [ Name=$a ]
Field=name
]
LiteralExpr [LONG] [3]
OperatorExpr [
- FunctionCall test.string-length@1[
+ FunctionCall asterix.string-length@1[
FieldAccessor [
Variable [ Name=$a ]
Field=name
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr06/substr06.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr06/substr06.3.ast
index f27bf4d..dfa5d77 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr06/substr06.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substr06/substr06.3.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-FunctionCall test.substring@2[
+FunctionCall asterix.substring@2[
FieldAccessor [
Variable [ Name=$a ]
Field=name
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-1/substring-after-1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-1/substring-after-1.3.ast
index b149866..acf0541 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-1/substring-after-1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-1/substring-after-1.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.substring-after@2[
+ FunctionCall asterix.substring-after@2[
LiteralExpr [STRING] [HEllow]
LiteralExpr [STRING] [El]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-2/substring-after-2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-2/substring-after-2.3.ast
index af388f6..5253d46 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-2/substring-after-2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-2/substring-after-2.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.substring-after@2[
+ FunctionCall asterix.substring-after@2[
LiteralExpr [STRING] [HEllow]
LiteralExpr [STRING] [1]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-3/substring-after-3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-3/substring-after-3.3.ast
index f0a9069..5815af2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-3/substring-after-3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-3/substring-after-3.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.substring-after@2[
+ FunctionCall asterix.substring-after@2[
LiteralExpr [STRING] [HEllow]
LiteralExpr [STRING] [HEllow]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-4/substring-after-4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-4/substring-after-4.3.ast
index 7447595..2331e1a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-4/substring-after-4.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-after-4/substring-after-4.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.substring-after@2[
+ FunctionCall asterix.substring-after@2[
LiteralExpr [STRING] [HEllow]
LiteralExpr [STRING] []
]
@@ -12,7 +12,7 @@
(
LiteralExpr [STRING] [result2]
:
- FunctionCall test.substring-after@2[
+ FunctionCall asterix.substring-after@2[
LiteralExpr [STRING] [HEllow]
LiteralExpr [NULL]
]
@@ -20,7 +20,7 @@
(
LiteralExpr [STRING] [result3]
:
- FunctionCall test.substring-after@2[
+ FunctionCall asterix.substring-after@2[
LiteralExpr [STRING] []
LiteralExpr [NULL]
]
@@ -28,7 +28,7 @@
(
LiteralExpr [STRING] [result4]
:
- FunctionCall test.substring-after@2[
+ FunctionCall asterix.substring-after@2[
LiteralExpr [STRING] []
LiteralExpr [STRING] []
]
@@ -36,7 +36,7 @@
(
LiteralExpr [STRING] [result5]
:
- FunctionCall test.substring-after@2[
+ FunctionCall asterix.substring-after@2[
LiteralExpr [NULL]
LiteralExpr [NULL]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-before-1/substring-before-1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-before-1/substring-before-1.3.ast
index de9d58f..ce36cde 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-before-1/substring-before-1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-before-1/substring-before-1.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.substring-before@2[
+ FunctionCall asterix.substring-before@2[
LiteralExpr [STRING] [HEllow]
LiteralExpr [STRING] [ll]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-before-2/substring-before-2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-before-2/substring-before-2.3.ast
index 76acb5b..8d1184e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-before-2/substring-before-2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-before-2/substring-before-2.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.substring-before@2[
+ FunctionCall asterix.substring-before@2[
LiteralExpr [STRING] [HEllow]
LiteralExpr [STRING] [HEllow]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-before-3/substring-before-3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-before-3/substring-before-3.3.ast
index 8025a14..60ff493 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-before-3/substring-before-3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring-before-3/substring-before-3.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.substring-before@2[
+ FunctionCall asterix.substring-before@2[
LiteralExpr [STRING] [HEllow]
LiteralExpr [STRING] []
]
@@ -12,7 +12,7 @@
(
LiteralExpr [STRING] [result2]
:
- FunctionCall test.substring-before@2[
+ FunctionCall asterix.substring-before@2[
LiteralExpr [STRING] [HEllow]
LiteralExpr [NULL]
]
@@ -20,7 +20,7 @@
(
LiteralExpr [STRING] [result3]
:
- FunctionCall test.substring-before@2[
+ FunctionCall asterix.substring-before@2[
LiteralExpr [STRING] []
LiteralExpr [NULL]
]
@@ -28,7 +28,7 @@
(
LiteralExpr [STRING] [result4]
:
- FunctionCall test.substring-before@2[
+ FunctionCall asterix.substring-before@2[
LiteralExpr [STRING] []
LiteralExpr [STRING] []
]
@@ -36,7 +36,7 @@
(
LiteralExpr [STRING] [result5]
:
- FunctionCall test.substring-before@2[
+ FunctionCall asterix.substring-before@2[
LiteralExpr [NULL]
LiteralExpr [NULL]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-1/offset0/substring/substring.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-1/offset0/substring/substring.3.ast
index f0f9f15..3a2fc01 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-1/offset0/substring/substring.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-1/offset0/substring/substring.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.substring@2[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [HEllow]
LiteralExpr [LONG] [1]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-2/substring2-2.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-2/substring2-2.3.ast
index fe4a308a..504cb01 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-2/substring2-2.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-2/substring2-2.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.substring@2[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [HEllow]
LiteralExpr [LONG] [0]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-3/substring2-3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-3/substring2-3.3.ast
index 358d135..4a5dbf6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-3/substring2-3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-3/substring2-3.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.substring@2[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [HEllow]
LiteralExpr [LONG] [9]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-4/substring2-4.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-4/substring2-4.3.ast
index eb5857e..3514635 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-4/substring2-4.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring2-4/substring2-4.3.ast
@@ -4,7 +4,7 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.substring@2[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [HEllow]
- LiteralExpr [LONG] [3]
]
@@ -12,7 +12,7 @@
(
LiteralExpr [STRING] [result2]
:
- FunctionCall test.substring@2[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [HEllow]
- LiteralExpr [LONG] [7]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring_01/substring_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring_01/substring_01.3.ast
index d24c5b8..85330a7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring_01/substring_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/substring_01/substring_01.3.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-FunctionCall test.substring@3[
+FunctionCall asterix.substring@3[
Variable [ Name=$x ]
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [3]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/toLowerCase02/toLowerCase02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/toLowerCase02/toLowerCase02.3.ast
index f5e983d..643c582 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/toLowerCase02/toLowerCase02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/toLowerCase02/toLowerCase02.3.ast
@@ -3,43 +3,43 @@
Variable [ Name=$a ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [a b c d e f g]
]
- FunctionCall null.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]
]
- FunctionCall null.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [abcdefghij KLMNOP qrstu VWXYZ]
]
- FunctionCall null.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [abcdefghijklmnopqrstuvwxyz]
]
- FunctionCall null.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [this is a test string]
]
- FunctionCall null.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [smaller string]
]
- FunctionCall null.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [ABCD]
]
- FunctionCall null.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [AbCdEfGhIjKlMnOpQrStUvWxYz]
]
- FunctionCall null.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [abcdefghijkABCDEFGHIJK]
]
- FunctionCall null.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [HIJKLMNOPQRhijklmnopqr]
]
- FunctionCall null.lowercase@1[
- FunctionCall null.substring@2[
+ FunctionCall asterix.lowercase@1[
+ FunctionCall asterix.substring@2[
LiteralExpr [STRING] [ABCDEFghIJKLMnopQRSTuvwxYZ01234]
LiteralExpr [LONG] [0]
]
]
- FunctionCall null.lowercase@1[
+ FunctionCall asterix.lowercase@1[
LiteralExpr [STRING] [A33B2CD1EF78GHijk123LMNopqrstUVW3x2y01035Z]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/toLowerCase03/toLowerCase03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/toLowerCase03/toLowerCase03.3.ast
index a9aed30..564551b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/toLowerCase03/toLowerCase03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/toLowerCase03/toLowerCase03.3.ast
@@ -1,7 +1,7 @@
DataverseUse test
Query:
SELECT ELEMENT [
-FunctionCall test.lowercase@1[
+FunctionCall asterix.lowercase@1[
FieldAccessor [
Variable [ Name=$l ]
Field=name
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/toLowerCase04/toLowerCase04.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/toLowerCase04/toLowerCase04.3.ast
index 99a277a..0701467 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/toLowerCase04/toLowerCase04.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/toLowerCase04/toLowerCase04.3.ast
@@ -3,8 +3,8 @@
Variable [ Name=$a ]
]
FROM [ OrderedListConstructor [
- FunctionCall null.lowercase@1[
- FunctionCall null.codepoint-to-string@1[
+ FunctionCall asterix.lowercase@1[
+ FunctionCall asterix.codepoint-to-string@1[
OrderedListConstructor [
LiteralExpr [LONG] [65]
LiteralExpr [LONG] [66]
@@ -35,8 +35,8 @@
]
]
]
- FunctionCall null.lowercase@1[
- FunctionCall null.string-concat@1[
+ FunctionCall asterix.lowercase@1[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
LiteralExpr [STRING] [ABCDEFGHIJKLMNOP]
LiteralExpr [STRING] [QRSTUVWXYZ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/uppercase/uppercase.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/uppercase/uppercase.3.ast
index a9c5578..de31602 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/uppercase/uppercase.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/string/uppercase/uppercase.3.ast
@@ -4,21 +4,21 @@
(
LiteralExpr [STRING] [result1]
:
- FunctionCall test.uppercase@1[
+ FunctionCall asterix.uppercase@1[
LiteralExpr [STRING] [Hellow]
]
)
(
LiteralExpr [STRING] [result2]
:
- FunctionCall test.uppercase@1[
+ FunctionCall asterix.uppercase@1[
LiteralExpr [STRING] []
]
)
(
LiteralExpr [STRING] [result3]
:
- FunctionCall test.uppercase@1[
+ FunctionCall asterix.uppercase@1[
LiteralExpr [NULL]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/01/01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/01/01.3.ast
index 353dcf8..5b5d3ec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/01/01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/01/01.3.ast
@@ -4,7 +4,7 @@
SELECT ELEMENT [
Variable [ Name=$l ]
]
-FROM [ FunctionCall test.subset-collection@3[
+FROM [ FunctionCall asterix.subset-collection@3[
OrderedListConstructor [
LiteralExpr [LONG] [1]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/02/02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/02/02.3.ast
index 4099fe1..53ed8cc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/02/02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/02/02.3.ast
@@ -4,7 +4,7 @@
SELECT ELEMENT [
Variable [ Name=$l ]
]
-FROM [ FunctionCall test.subset-collection@3[
+FROM [ FunctionCall asterix.subset-collection@3[
OrderedListConstructor [
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/03/03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/03/03.3.ast
index e09633a..65796a9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/03/03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/03/03.3.ast
@@ -4,7 +4,7 @@
SELECT ELEMENT [
Variable [ Name=$l ]
]
-FROM [ FunctionCall test.subset-collection@3[
+FROM [ FunctionCall asterix.subset-collection@3[
OrderedListConstructor [
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/05/05.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/05/05.3.ast
index 20a4908..fc441b9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/05/05.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/05/05.3.ast
@@ -4,7 +4,7 @@
SELECT ELEMENT [
Variable [ Name=$l ]
]
-FROM [ FunctionCall test.subset-collection@3[
+FROM [ FunctionCall asterix.subset-collection@3[
OrderedListConstructor [
LiteralExpr [STRING] [a]
LiteralExpr [STRING] [b]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/06/06.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/06/06.3.ast
index c2bff51..844a405 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/06/06.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/06/06.3.ast
@@ -4,7 +4,7 @@
SELECT ELEMENT [
Variable [ Name=$l ]
]
-FROM [ FunctionCall test.subset-collection@3[
+FROM [ FunctionCall asterix.subset-collection@3[
OrderedListConstructor [
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/07/07.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/07/07.3.ast
index 277e478..d602534 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/07/07.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/subset-collection/07/07.3.ast
@@ -4,7 +4,7 @@
SELECT ELEMENT [
Variable [ Name=$l ]
]
-FROM [ FunctionCall test.subset-collection@3[
+FROM [ FunctionCall asterix.subset-collection@3[
OrderedListConstructor [
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [2]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors/accessors.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors/accessors.3.ast
index 05dcf98..5a452be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors/accessors.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors/accessors.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [year1]
:
- FunctionCall test.get-year@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.get-year@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [year2]
:
- FunctionCall test.get-year@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-year@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [year3]
:
- FunctionCall test.get-year@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.get-year@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1987-11-19]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [year4]
:
- FunctionCall test.get-year@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.get-year@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [09280329]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [year5]
:
- FunctionCall test.get-year@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-year@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19371229T20030628]
]
]
@@ -49,8 +49,8 @@
(
LiteralExpr [STRING] [year6]
:
- FunctionCall test.get-year@1[
- FunctionCall test.string@1[
+ FunctionCall asterix.get-year@1[
+ FunctionCall asterix.string@1[
LiteralExpr [STRING] [-0003-01-09T23:12:12.39-07:00]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [year7]
:
- FunctionCall test.get-year@1[
- FunctionCall test.duration@1[
+ FunctionCall asterix.get-year@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y73M632DT49H743M3948.94S]
]
]
@@ -67,8 +67,8 @@
(
LiteralExpr [STRING] [year8]
:
- FunctionCall test.get-year@1[
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.get-year@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P8Y12M]
]
]
@@ -76,15 +76,15 @@
(
LiteralExpr [STRING] [year-null]
:
- FunctionCall test.get-year@1[
+ FunctionCall asterix.get-year@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [month1]
:
- FunctionCall test.get-month@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.get-month@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
]
@@ -92,8 +92,8 @@
(
LiteralExpr [STRING] [month2]
:
- FunctionCall test.get-month@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-month@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
]
@@ -101,8 +101,8 @@
(
LiteralExpr [STRING] [month3]
:
- FunctionCall test.get-month@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.get-month@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1987-11-19]
]
]
@@ -110,8 +110,8 @@
(
LiteralExpr [STRING] [month4]
:
- FunctionCall test.get-month@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.get-month@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [09280329]
]
]
@@ -119,8 +119,8 @@
(
LiteralExpr [STRING] [month5]
:
- FunctionCall test.get-month@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-month@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19371229T20030628]
]
]
@@ -128,8 +128,8 @@
(
LiteralExpr [STRING] [month6]
:
- FunctionCall test.get-month@1[
- FunctionCall test.duration@1[
+ FunctionCall asterix.get-month@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y73M632DT49H743M3948.94S]
]
]
@@ -137,8 +137,8 @@
(
LiteralExpr [STRING] [month7]
:
- FunctionCall test.get-month@1[
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.get-month@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P8Y12M]
]
]
@@ -146,15 +146,15 @@
(
LiteralExpr [STRING] [month-null]
:
- FunctionCall test.get-month@1[
+ FunctionCall asterix.get-month@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [day1]
:
- FunctionCall test.get-day@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.get-day@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
]
@@ -162,8 +162,8 @@
(
LiteralExpr [STRING] [day2]
:
- FunctionCall test.get-day@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-day@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
]
@@ -171,8 +171,8 @@
(
LiteralExpr [STRING] [day3]
:
- FunctionCall test.get-day@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.get-day@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1987-11-19]
]
]
@@ -180,8 +180,8 @@
(
LiteralExpr [STRING] [day4]
:
- FunctionCall test.get-day@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.get-day@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [09280329]
]
]
@@ -189,8 +189,8 @@
(
LiteralExpr [STRING] [day5]
:
- FunctionCall test.get-day@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-day@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19371229T20030628]
]
]
@@ -198,8 +198,8 @@
(
LiteralExpr [STRING] [day6]
:
- FunctionCall test.get-day@1[
- FunctionCall test.duration@1[
+ FunctionCall asterix.get-day@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y73M632DT49H743M3948.94S]
]
]
@@ -207,8 +207,8 @@
(
LiteralExpr [STRING] [day7]
:
- FunctionCall test.get-day@1[
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.get-day@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [P32DT49H743M3948.94S]
]
]
@@ -216,15 +216,15 @@
(
LiteralExpr [STRING] [day-null]
:
- FunctionCall test.get-day@1[
+ FunctionCall asterix.get-day@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [hour1]
:
- FunctionCall test.get-hour@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-hour@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
]
@@ -232,8 +232,8 @@
(
LiteralExpr [STRING] [hour2]
:
- FunctionCall test.get-hour@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-hour@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19371229T20030628]
]
]
@@ -241,8 +241,8 @@
(
LiteralExpr [STRING] [hour3]
:
- FunctionCall test.get-hour@1[
- FunctionCall test.time@1[
+ FunctionCall asterix.get-hour@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:23:34.930+07:00]
]
]
@@ -250,8 +250,8 @@
(
LiteralExpr [STRING] [hour4]
:
- FunctionCall test.get-hour@1[
- FunctionCall test.duration@1[
+ FunctionCall asterix.get-hour@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y73M632DT49H743M3948.94S]
]
]
@@ -259,8 +259,8 @@
(
LiteralExpr [STRING] [hour5]
:
- FunctionCall test.get-hour@1[
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.get-hour@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [P32DT49H743M3948.94S]
]
]
@@ -268,15 +268,15 @@
(
LiteralExpr [STRING] [hour-null]
:
- FunctionCall test.get-hour@1[
+ FunctionCall asterix.get-hour@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [min1]
:
- FunctionCall test.get-minute@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-minute@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
]
@@ -284,8 +284,8 @@
(
LiteralExpr [STRING] [min2]
:
- FunctionCall test.get-minute@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-minute@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19371229T20030628]
]
]
@@ -293,8 +293,8 @@
(
LiteralExpr [STRING] [min3]
:
- FunctionCall test.get-minute@1[
- FunctionCall test.time@1[
+ FunctionCall asterix.get-minute@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:23:34.930+07:00]
]
]
@@ -302,8 +302,8 @@
(
LiteralExpr [STRING] [min4]
:
- FunctionCall test.get-minute@1[
- FunctionCall test.duration@1[
+ FunctionCall asterix.get-minute@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y73M632DT49H743M3948.94S]
]
]
@@ -311,8 +311,8 @@
(
LiteralExpr [STRING] [min5]
:
- FunctionCall test.get-minute@1[
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.get-minute@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [P32DT49H743M3948.94S]
]
]
@@ -320,15 +320,15 @@
(
LiteralExpr [STRING] [min-null]
:
- FunctionCall test.get-minute@1[
+ FunctionCall asterix.get-minute@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [second1]
:
- FunctionCall test.get-second@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-second@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
]
@@ -336,8 +336,8 @@
(
LiteralExpr [STRING] [second2]
:
- FunctionCall test.get-second@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-second@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19371229T20030628]
]
]
@@ -345,8 +345,8 @@
(
LiteralExpr [STRING] [second3]
:
- FunctionCall test.get-second@1[
- FunctionCall test.time@1[
+ FunctionCall asterix.get-second@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:23:34.930+07:00]
]
]
@@ -354,8 +354,8 @@
(
LiteralExpr [STRING] [second4]
:
- FunctionCall test.get-second@1[
- FunctionCall test.duration@1[
+ FunctionCall asterix.get-second@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y73M632DT49H743M3948.94S]
]
]
@@ -363,8 +363,8 @@
(
LiteralExpr [STRING] [second5]
:
- FunctionCall test.get-second@1[
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.get-second@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [P32DT49H743M3948.94S]
]
]
@@ -372,15 +372,15 @@
(
LiteralExpr [STRING] [second-null]
:
- FunctionCall test.get-second@1[
+ FunctionCall asterix.get-second@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [ms1]
:
- FunctionCall test.get-millisecond@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-millisecond@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
]
@@ -388,8 +388,8 @@
(
LiteralExpr [STRING] [ms2]
:
- FunctionCall test.get-millisecond@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-millisecond@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19371229T20030628]
]
]
@@ -397,8 +397,8 @@
(
LiteralExpr [STRING] [ms3]
:
- FunctionCall test.get-millisecond@1[
- FunctionCall test.time@1[
+ FunctionCall asterix.get-millisecond@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:23:34.930+07:00]
]
]
@@ -406,8 +406,8 @@
(
LiteralExpr [STRING] [ms4]
:
- FunctionCall test.get-millisecond@1[
- FunctionCall test.duration@1[
+ FunctionCall asterix.get-millisecond@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P3Y73M632DT49H743M3948.94S]
]
]
@@ -415,8 +415,8 @@
(
LiteralExpr [STRING] [ms5]
:
- FunctionCall test.get-millisecond@1[
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.get-millisecond@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [P32DT49H743M3948.94S]
]
]
@@ -424,7 +424,7 @@
(
LiteralExpr [STRING] [ms-null]
:
- FunctionCall test.get-millisecond@1[
+ FunctionCall asterix.get-millisecond@1[
LiteralExpr [NULL]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast
index d915dd8..b19c8e8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval/accessors_interval.3.ast
@@ -4,12 +4,12 @@
(
LiteralExpr [STRING] [start1]
:
- FunctionCall test.get-interval-start@1[
- FunctionCall test.interval@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.get-interval-start@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-04-01]
]
]
@@ -18,12 +18,12 @@
(
LiteralExpr [STRING] [end1]
:
- FunctionCall test.get-interval-end@1[
- FunctionCall test.interval@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.get-interval-end@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-04-01]
]
]
@@ -32,12 +32,12 @@
(
LiteralExpr [STRING] [start2]
:
- FunctionCall test.get-interval-start@1[
- FunctionCall test.interval@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.get-interval-start@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [08:09:10.234Z]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [203040567+0800]
]
]
@@ -46,12 +46,12 @@
(
LiteralExpr [STRING] [end2]
:
- FunctionCall test.get-interval-end@1[
- FunctionCall test.interval@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.get-interval-end@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [08:09:10.234Z]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [203040567+0800]
]
]
@@ -60,16 +60,16 @@
(
LiteralExpr [STRING] [start3]
:
- FunctionCall test.get-interval-start@1[
- FunctionCall test.interval@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-interval-start@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2009-09-01T00:00:00.000+08:00]
]
- FunctionCall test.datetime-from-date-time@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.datetime-from-date-time@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-04-04]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [00:00:00.000+08:00]
]
]
@@ -79,16 +79,16 @@
(
LiteralExpr [STRING] [end3]
:
- FunctionCall test.get-interval-end@1[
- FunctionCall test.interval@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-interval-end@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2009-09-01T00:00:00.000+08:00]
]
- FunctionCall test.datetime-from-date-time@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.datetime-from-date-time@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-04-04]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [00:00:00.000+08:00]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval_null/accessors_interval_null.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval_null/accessors_interval_null.3.ast
index 133a0f7..d1dcace 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval_null/accessors_interval_null.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/accessors_interval_null/accessors_interval_null.3.ast
@@ -5,14 +5,14 @@
(
LiteralExpr [STRING] [start-null-interval]
:
- FunctionCall test.get-interval-start@1[
+ FunctionCall asterix.get-interval-start@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [end-null-interval]
:
- FunctionCall test.get-interval-end@1[
+ FunctionCall asterix.get-interval-end@1[
LiteralExpr [NULL]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/adjust_timezone/adjust_timezone.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/adjust_timezone/adjust_timezone.3.ast
index 9906449..93175fd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/adjust_timezone/adjust_timezone.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/adjust_timezone/adjust_timezone.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [time]
:
- FunctionCall test.adjust-time-for-timezone@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.adjust-time-for-timezone@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [20:15:10.327]
]
LiteralExpr [STRING] [+0800]
@@ -14,8 +14,8 @@
(
LiteralExpr [STRING] [datetime]
:
- FunctionCall test.adjust-datetime-for-timezone@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.adjust-datetime-for-timezone@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2010-10-23T01:12:13.329Z]
]
LiteralExpr [STRING] [-0615]
@@ -24,7 +24,7 @@
(
LiteralExpr [STRING] [null1]
:
- FunctionCall test.adjust-time-for-timezone@2[
+ FunctionCall asterix.adjust-time-for-timezone@2[
LiteralExpr [NULL]
LiteralExpr [STRING] [+0800]
]
@@ -32,8 +32,8 @@
(
LiteralExpr [STRING] [null2]
:
- FunctionCall test.adjust-time-for-timezone@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.adjust-time-for-timezone@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [20:15:10.327]
]
LiteralExpr [NULL]
@@ -42,7 +42,7 @@
(
LiteralExpr [STRING] [null3]
:
- FunctionCall test.adjust-datetime-for-timezone@2[
+ FunctionCall asterix.adjust-datetime-for-timezone@2[
LiteralExpr [NULL]
LiteralExpr [STRING] [-0800]
]
@@ -50,8 +50,8 @@
(
LiteralExpr [STRING] [null4]
:
- FunctionCall test.adjust-datetime-for-timezone@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.adjust-datetime-for-timezone@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2010-10-23T01:12:13.329Z]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/calendar_duration/calendar_duration.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/calendar_duration/calendar_duration.3.ast
index a36868f..159146f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/calendar_duration/calendar_duration.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/calendar_duration/calendar_duration.3.ast
@@ -5,11 +5,11 @@
(
LiteralExpr [STRING] [cduration1]
:
- FunctionCall test.calendar-duration-from-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.calendar-duration-from-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P7382DT39283M3921.329S]
]
]
@@ -19,25 +19,25 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P7382DT39283M3921.329S]
]
]
=
OperatorExpr [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
+
- FunctionCall test.calendar-duration-from-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.calendar-duration-from-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P7382DT39283M3921.329S]
]
]
@@ -47,11 +47,11 @@
(
LiteralExpr [STRING] [cduration2]
:
- FunctionCall test.calendar-duration-from-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.calendar-duration-from-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-PT63H398212M3219.328S]
]
]
@@ -61,25 +61,25 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-PT63H398212M3219.328S]
]
]
=
OperatorExpr [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
+
- FunctionCall test.calendar-duration-from-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.calendar-duration-from-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-PT63H398212M3219.328S]
]
]
@@ -89,11 +89,11 @@
(
LiteralExpr [STRING] [cduration3]
:
- FunctionCall test.calendar-duration-from-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.calendar-duration-from-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1Y90M]
]
]
@@ -103,25 +103,25 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1Y90M]
]
]
=
OperatorExpr [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
+
- FunctionCall test.calendar-duration-from-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.calendar-duration-from-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1Y90M]
]
]
@@ -131,11 +131,11 @@
(
LiteralExpr [STRING] [cduration4]
:
- FunctionCall test.calendar-duration-from-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.calendar-duration-from-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P3Y89M4089DT47382.983S]
]
]
@@ -145,25 +145,25 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P3Y89M4089DT47382.983S]
]
]
=
OperatorExpr [
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
+
- FunctionCall test.calendar-duration-from-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.calendar-duration-from-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P3Y89M4089DT47382.983S]
]
]
@@ -173,11 +173,11 @@
(
LiteralExpr [STRING] [cduration5]
:
- FunctionCall test.calendar-duration-from-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.calendar-duration-from-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P7382DT39283M3921.329S]
]
]
@@ -187,25 +187,25 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P7382DT39283M3921.329S]
]
]
=
OperatorExpr [
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
+
- FunctionCall test.calendar-duration-from-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.calendar-duration-from-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P7382DT39283M3921.329S]
]
]
@@ -215,11 +215,11 @@
(
LiteralExpr [STRING] [cduration6]
:
- FunctionCall test.calendar-duration-from-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.calendar-duration-from-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-PT63H398212M3219.328S]
]
]
@@ -229,25 +229,25 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-PT63H398212M3219.328S]
]
]
=
OperatorExpr [
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
+
- FunctionCall test.calendar-duration-from-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.calendar-duration-from-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-PT63H398212M3219.328S]
]
]
@@ -257,11 +257,11 @@
(
LiteralExpr [STRING] [cduration7]
:
- FunctionCall test.calendar-duration-from-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.calendar-duration-from-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1Y90M]
]
]
@@ -271,25 +271,25 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1Y90M]
]
]
=
OperatorExpr [
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
+
- FunctionCall test.calendar-duration-from-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.calendar-duration-from-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1Y90M]
]
]
@@ -299,11 +299,11 @@
(
LiteralExpr [STRING] [cduration8]
:
- FunctionCall test.calendar-duration-from-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.calendar-duration-from-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P3Y89M4089DT47382.983S]
]
]
@@ -313,25 +313,25 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P3Y89M4089DT47382.983S]
]
]
=
OperatorExpr [
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
+
- FunctionCall test.calendar-duration-from-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.calendar-duration-from-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P3Y89M4089DT47382.983S]
]
]
@@ -341,9 +341,9 @@
(
LiteralExpr [STRING] [cduration-null-1]
:
- FunctionCall test.calendar-duration-from-datetime@2[
+ FunctionCall asterix.calendar-duration-from-datetime@2[
LiteralExpr [NULL]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P7382DT39283M3921.329S]
]
]
@@ -351,8 +351,8 @@
(
LiteralExpr [STRING] [cduration-null-2]
:
- FunctionCall test.calendar-duration-from-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.calendar-duration-from-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1987-11-19T23:49:23.938]
]
LiteralExpr [NULL]
@@ -361,9 +361,9 @@
(
LiteralExpr [STRING] [cduration-null-3]
:
- FunctionCall test.calendar-duration-from-date@2[
+ FunctionCall asterix.calendar-duration-from-date@2[
LiteralExpr [NULL]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P7382DT39283M3921.329S]
]
]
@@ -371,8 +371,8 @@
(
LiteralExpr [STRING] [cduration-null-4]
:
- FunctionCall test.calendar-duration-from-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.calendar-duration-from-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1328-10-23]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/date_functions/date_functions.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/date_functions/date_functions.3.ast
index 63dc7a6..674377e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/date_functions/date_functions.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/date_functions/date_functions.3.ast
@@ -5,15 +5,15 @@
(
LiteralExpr [STRING] [date1]
:
- FunctionCall test.date-from-unix-time-in-days@1[
+ FunctionCall asterix.date-from-unix-time-in-days@1[
LiteralExpr [LONG] [15600]
]
)
(
LiteralExpr [STRING] [date2]
:
- FunctionCall test.get-date-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-date-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
@@ -21,8 +21,8 @@
(
LiteralExpr [STRING] [date3]
:
- FunctionCall test.get-date-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-date-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-10-11T02:30:23+03:00]
]
]
@@ -31,11 +31,11 @@
LiteralExpr [STRING] [date4]
:
OperatorExpr [
- FunctionCall test.date-from-unix-time-in-days@1[
+ FunctionCall asterix.date-from-unix-time-in-days@1[
LiteralExpr [LONG] [15600]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P2Y1M90DT30H]
]
]
@@ -44,13 +44,13 @@
LiteralExpr [STRING] [date5]
:
OperatorExpr [
- FunctionCall test.get-date-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-date-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P300Y900MT360000M]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [unix1]
:
- FunctionCall test.unix-time-from-date-in-days@1[
- FunctionCall test.date-from-unix-time-in-days@1[
+ FunctionCall asterix.unix-time-from-date-in-days@1[
+ FunctionCall asterix.date-from-unix-time-in-days@1[
LiteralExpr [LONG] [15600]
]
]
@@ -69,19 +69,19 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.get-date-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-date-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P300Y900MT360000M]
]
]
-
- FunctionCall test.get-date-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-date-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
@@ -92,16 +92,16 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.date-from-unix-time-in-days@1[
+ FunctionCall asterix.date-from-unix-time-in-days@1[
LiteralExpr [LONG] [15600]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P2Y1M90DT30H]
]
]
-
- FunctionCall test.date-from-unix-time-in-days@1[
+ FunctionCall asterix.date-from-unix-time-in-days@1[
LiteralExpr [LONG] [15600]
]
]
@@ -110,32 +110,32 @@
LiteralExpr [STRING] [c1]
:
OperatorExpr [
- FunctionCall test.date-from-unix-time-in-days@1[
+ FunctionCall asterix.date-from-unix-time-in-days@1[
LiteralExpr [LONG] [15600]
]
=
OperatorExpr [
OperatorExpr [
- FunctionCall test.date-from-unix-time-in-days@1[
+ FunctionCall asterix.date-from-unix-time-in-days@1[
LiteralExpr [LONG] [15600]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P2Y1M90DT30H]
]
]
+
OperatorExpr [
- FunctionCall test.date-from-unix-time-in-days@1[
+ FunctionCall asterix.date-from-unix-time-in-days@1[
LiteralExpr [LONG] [15600]
]
-
OperatorExpr [
- FunctionCall test.date-from-unix-time-in-days@1[
+ FunctionCall asterix.date-from-unix-time-in-days@1[
LiteralExpr [LONG] [15600]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P2Y1M90DT30H]
]
]
@@ -147,40 +147,40 @@
LiteralExpr [STRING] [c2]
:
OperatorExpr [
- FunctionCall test.get-date-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-date-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
=
OperatorExpr [
OperatorExpr [
- FunctionCall test.get-date-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-date-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P300Y900MT360000M]
]
]
+
OperatorExpr [
- FunctionCall test.get-date-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-date-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
-
OperatorExpr [
- FunctionCall test.get-date-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-date-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P300Y900MT360000M]
]
]
@@ -191,21 +191,21 @@
(
LiteralExpr [STRING] [null1]
:
- FunctionCall test.date-from-unix-time-in-days@1[
+ FunctionCall asterix.date-from-unix-time-in-days@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [nullunix1]
:
- FunctionCall test.unix-time-from-date-in-days@1[
+ FunctionCall asterix.unix-time-from-date-in-days@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [null2]
:
- FunctionCall test.get-date-from-datetime@1[
+ FunctionCall asterix.get-date-from-datetime@1[
LiteralExpr [NULL]
]
)
@@ -215,7 +215,7 @@
OperatorExpr [
LiteralExpr [NULL]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P2Y1M90DT30H]
]
]
@@ -224,7 +224,7 @@
LiteralExpr [STRING] [null4]
:
OperatorExpr [
- FunctionCall test.date-from-unix-time-in-days@1[
+ FunctionCall asterix.date-from-unix-time-in-days@1[
LiteralExpr [LONG] [15600]
]
+
@@ -237,8 +237,8 @@
OperatorExpr [
LiteralExpr [NULL]
-
- FunctionCall test.get-date-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-date-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
@@ -249,13 +249,13 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.get-date-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-date-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P300Y900MT360000M]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/datetime_functions/datetime_functions.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/datetime_functions/datetime_functions.3.ast
index c9d1ded..2a45a26 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/datetime_functions/datetime_functions.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/datetime_functions/datetime_functions.3.ast
@@ -5,25 +5,25 @@
(
LiteralExpr [STRING] [datetime1]
:
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
)
(
LiteralExpr [STRING] [datetime1secs]
:
- FunctionCall test.datetime-from-unix-time-in-secs@1[
+ FunctionCall asterix.datetime-from-unix-time-in-secs@1[
LiteralExpr [LONG] [1356048000]
]
)
(
LiteralExpr [STRING] [datetime2]
:
- FunctionCall test.datetime-from-date-time@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.datetime-from-date-time@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1327-12-02]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [15:35:49.938-0800]
]
]
@@ -32,21 +32,21 @@
LiteralExpr [STRING] [datetime3]
:
OperatorExpr [
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
+
OperatorExpr [
- FunctionCall test.datetime-from-date-time@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.datetime-from-date-time@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1327-12-02]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [15:35:49.938-0800]
]
]
-
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
]
@@ -56,11 +56,11 @@
LiteralExpr [STRING] [datetime4]
:
OperatorExpr [
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
-
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1MT1S]
]
]
@@ -69,11 +69,11 @@
LiteralExpr [STRING] [datetime5]
:
OperatorExpr [
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
+
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1MT1S]
]
]
@@ -81,8 +81,8 @@
(
LiteralExpr [STRING] [unixms1]
:
- FunctionCall test.unix-time-from-datetime-in-ms@1[
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.unix-time-from-datetime-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
]
@@ -90,8 +90,8 @@
(
LiteralExpr [STRING] [unixsecs1]
:
- FunctionCall test.unix-time-from-datetime-in-secs@1[
- FunctionCall test.datetime-from-unix-time-in-secs@1[
+ FunctionCall asterix.unix-time-from-datetime-in-secs@1[
+ FunctionCall asterix.datetime-from-unix-time-in-secs@1[
LiteralExpr [LONG] [1356048000]
]
]
@@ -100,16 +100,16 @@
LiteralExpr [STRING] [duration1]
:
OperatorExpr [
- FunctionCall test.datetime-from-date-time@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.datetime-from-date-time@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1327-12-02]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [15:35:49.938-0800]
]
]
-
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
]
@@ -118,32 +118,32 @@
LiteralExpr [STRING] [c1]
:
OperatorExpr [
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
=
OperatorExpr [
OperatorExpr [
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
-
OperatorExpr [
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
+
OperatorExpr [
- FunctionCall test.datetime-from-date-time@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.datetime-from-date-time@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1327-12-02]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [15:35:49.938-0800]
]
]
-
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
]
@@ -151,21 +151,21 @@
]
+
OperatorExpr [
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
+
OperatorExpr [
- FunctionCall test.datetime-from-date-time@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.datetime-from-date-time@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1327-12-02]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [15:35:49.938-0800]
]
]
-
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
]
@@ -176,37 +176,37 @@
(
LiteralExpr [STRING] [null1]
:
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [null1secs]
:
- FunctionCall test.datetime-from-unix-time-in-secs@1[
+ FunctionCall asterix.datetime-from-unix-time-in-secs@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [nullunixms1]
:
- FunctionCall test.unix-time-from-datetime-in-ms@1[
+ FunctionCall asterix.unix-time-from-datetime-in-ms@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [nullunixsecs1]
:
- FunctionCall test.unix-time-from-datetime-in-secs@1[
+ FunctionCall asterix.unix-time-from-datetime-in-secs@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [null2]
:
- FunctionCall test.datetime-from-date-time@2[
+ FunctionCall asterix.datetime-from-date-time@2[
LiteralExpr [NULL]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [15:35:49.938-0800]
]
]
@@ -214,8 +214,8 @@
(
LiteralExpr [STRING] [null3]
:
- FunctionCall test.datetime-from-date-time@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.datetime-from-date-time@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1327-12-02]
]
LiteralExpr [NULL]
@@ -227,7 +227,7 @@
OperatorExpr [
LiteralExpr [NULL]
-
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
]
@@ -236,11 +236,11 @@
LiteralExpr [STRING] [null5]
:
OperatorExpr [
- FunctionCall test.datetime-from-date-time@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.datetime-from-date-time@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1327-12-02]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [15:35:49.938-0800]
]
]
@@ -255,16 +255,16 @@
LiteralExpr [NULL]
+
OperatorExpr [
- FunctionCall test.datetime-from-date-time@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.datetime-from-date-time@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1327-12-02]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [15:35:49.938-0800]
]
]
-
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
]
@@ -274,7 +274,7 @@
LiteralExpr [STRING] [null7]
:
OperatorExpr [
- FunctionCall test.datetime-from-unix-time-in-ms@1[
+ FunctionCall asterix.datetime-from-unix-time-in-ms@1[
LiteralExpr [LONG] [956007429]
]
+
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/day_of_week_01/day_of_week_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/day_of_week_01/day_of_week_01.3.ast
index f549357..3f525c1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/day_of_week_01/day_of_week_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/day_of_week_01/day_of_week_01.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [1970-01-01]
:
- FunctionCall test.day-of-week@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.day-of-week@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1970-01-01]
]
]
@@ -13,8 +13,8 @@
(
LiteralExpr [STRING] [2013-08-06]
:
- FunctionCall test.day-of-week@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.day-of-week@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-08-06]
]
]
@@ -22,8 +22,8 @@
(
LiteralExpr [STRING] [-2013-08-06]
:
- FunctionCall test.day-of-week@1[
- FunctionCall test.date@1[
+ FunctionCall asterix.day-of-week@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-2013-08-06]
]
]
@@ -31,8 +31,8 @@
(
LiteralExpr [STRING] [1913-08-06T15:53:28Z]
:
- FunctionCall test.day-of-week@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.day-of-week@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1913-08-06T15:53:28Z]
]
]
@@ -40,8 +40,8 @@
(
LiteralExpr [STRING] [-1913-08-10T15:53:28Z]
:
- FunctionCall test.day-of-week@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.day-of-week@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1913-08-10T15:53:28Z]
]
]
@@ -49,7 +49,7 @@
(
LiteralExpr [STRING] [null]
:
- FunctionCall test.day-of-week@1[
+ FunctionCall asterix.day-of-week@1[
LiteralExpr [NULL]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_comps/duration_comps.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_comps/duration_comps.3.ast
index e6485e5..45b9b97 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_comps/duration_comps.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_comps/duration_comps.3.ast
@@ -5,11 +5,11 @@
(
LiteralExpr [STRING] [yearMonthGreaterComp]
:
- FunctionCall test.year-month-duration-greater-than@2[
- FunctionCall test.duration@1[
+ FunctionCall asterix.year-month-duration-greater-than@2[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P13M]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1Y]
]
]
@@ -17,11 +17,11 @@
(
LiteralExpr [STRING] [dayTimeGreaterComp]
:
- FunctionCall test.day-time-duration-greater-than@2[
- FunctionCall test.duration@1[
+ FunctionCall asterix.day-time-duration-greater-than@2[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1D]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P3D]
]
]
@@ -29,11 +29,11 @@
(
LiteralExpr [STRING] [yearMonthLessComp]
:
- FunctionCall test.year-month-duration-less-than@2[
- FunctionCall test.duration@1[
+ FunctionCall asterix.year-month-duration-less-than@2[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P13M]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1Y]
]
]
@@ -41,11 +41,11 @@
(
LiteralExpr [STRING] [dayTimeLessComp]
:
- FunctionCall test.day-time-duration-less-than@2[
- FunctionCall test.duration@1[
+ FunctionCall asterix.day-time-duration-less-than@2[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1D]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P3D]
]
]
@@ -53,11 +53,11 @@
(
LiteralExpr [STRING] [equal1]
:
- FunctionCall test.duration-equal@2[
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration-equal@2[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1D]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [PT24H]
]
]
@@ -65,11 +65,11 @@
(
LiteralExpr [STRING] [equal2]
:
- FunctionCall test.duration-equal@2[
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration-equal@2[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P3D]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [PT24H]
]
]
@@ -77,17 +77,17 @@
(
LiteralExpr [STRING] [equal3]
:
- FunctionCall test.duration-equal@2[
- FunctionCall test.duration-from-months@1[
- FunctionCall test.months-from-year-month-duration@1[
- FunctionCall test.get-year-month-duration@1[
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration-equal@2[
+ FunctionCall asterix.duration-from-months@1[
+ FunctionCall asterix.months-from-year-month-duration@1[
+ FunctionCall asterix.get-year-month-duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1Y]
]
]
]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [P1Y]
]
]
@@ -95,17 +95,17 @@
(
LiteralExpr [STRING] [equal4]
:
- FunctionCall test.duration-equal@2[
- FunctionCall test.duration-from-ms@1[
- FunctionCall test.ms-from-day-time-duration@1[
- FunctionCall test.get-day-time-duration@1[
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration-equal@2[
+ FunctionCall asterix.duration-from-ms@1[
+ FunctionCall asterix.ms-from-day-time-duration@1[
+ FunctionCall asterix.get-day-time-duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P3D]
]
]
]
]
- FunctionCall test.duration@1[
+ FunctionCall asterix.duration@1[
LiteralExpr [STRING] [-P3D]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast
index 79baffb..2e34252 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/duration_functions/duration_functions.3.ast
@@ -4,12 +4,12 @@
(
LiteralExpr [STRING] [dr1]
:
- FunctionCall test.duration-from-interval@1[
- FunctionCall test.interval@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.duration-from-interval@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-12-21]
]
]
@@ -18,12 +18,12 @@
(
LiteralExpr [STRING] [dr2]
:
- FunctionCall test.duration-from-interval@1[
- FunctionCall test.interval@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.duration-from-interval@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-06-26T01:01:01.111]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-07-27T02:02:02.222]
]
]
@@ -32,12 +32,12 @@
(
LiteralExpr [STRING] [dr3]
:
- FunctionCall test.duration-from-interval@1[
- FunctionCall test.interval@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.duration-from-interval@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:32:38]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [20:29:20]
]
]
@@ -46,7 +46,7 @@
(
LiteralExpr [STRING] [dr4]
:
- FunctionCall test.duration-from-interval@1[
+ FunctionCall asterix.duration-from-interval@1[
LiteralExpr [NULL]
]
)
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast
index 28fcb19..b0ebd65 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/get_overlapping_interval/get_overlapping_interval.3.ast
@@ -4,20 +4,20 @@
(
LiteralExpr [STRING] [overlap1]
:
- FunctionCall null.get-overlapping-interval@2[
- FunctionCall null.interval@2[
- FunctionCall null.time@1[
+ FunctionCall asterix.get-overlapping-interval@2[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [11:23:39]
]
- FunctionCall null.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [18:27:19]
]
]
- FunctionCall null.interval@2[
- FunctionCall null.time@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:23:39]
]
- FunctionCall null.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [23:18:00]
]
]
@@ -26,20 +26,20 @@
(
LiteralExpr [STRING] [overlap2]
:
- FunctionCall null.get-overlapping-interval@2[
- FunctionCall null.interval@2[
- FunctionCall null.time@1[
+ FunctionCall asterix.get-overlapping-interval@2[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:23:39]
]
- FunctionCall null.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [18:27:19]
]
]
- FunctionCall null.interval@2[
- FunctionCall null.time@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [07:19:39]
]
- FunctionCall null.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [09:18:00]
]
]
@@ -48,20 +48,20 @@
(
LiteralExpr [STRING] [overlap3]
:
- FunctionCall null.get-overlapping-interval@2[
- FunctionCall null.interval@2[
- FunctionCall null.date@1[
+ FunctionCall asterix.get-overlapping-interval@2[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1980-11-30]
]
- FunctionCall null.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1999-09-09]
]
]
- FunctionCall null.interval@2[
- FunctionCall null.date@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-01-01]
]
- FunctionCall null.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2014-01-01]
]
]
@@ -70,20 +70,20 @@
(
LiteralExpr [STRING] [overlap4]
:
- FunctionCall null.get-overlapping-interval@2[
- FunctionCall null.interval@2[
- FunctionCall null.date@1[
+ FunctionCall asterix.get-overlapping-interval@2[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1980-11-30]
]
- FunctionCall null.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2099-09-09]
]
]
- FunctionCall null.interval@2[
- FunctionCall null.date@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-01-01]
]
- FunctionCall null.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2014-01-01]
]
]
@@ -92,20 +92,20 @@
(
LiteralExpr [STRING] [overlap5]
:
- FunctionCall null.get-overlapping-interval@2[
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.get-overlapping-interval@2[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1844-03-03T11:19:39]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-10-30T18:27:19]
]
]
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1989-03-04T12:23:39]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2009-10-10T23:18:00]
]
]
@@ -114,20 +114,20 @@
(
LiteralExpr [STRING] [overlap6]
:
- FunctionCall null.get-overlapping-interval@2[
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.get-overlapping-interval@2[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1989-03-04T12:23:39]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2000-10-30T18:27:19]
]
]
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1844-03-03T11:19:39]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1888-10-10T23:18:00]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_bin/interval_bin.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_bin/interval_bin.3.ast
index 90be652..45098ba 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_bin/interval_bin.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_bin/interval_bin.3.ast
@@ -4,14 +4,14 @@
(
LiteralExpr [STRING] [bin1]
:
- FunctionCall test.interval-bin@3[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval-bin@3[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1990-01-01]
]
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P1Y]
]
]
@@ -19,14 +19,14 @@
(
LiteralExpr [STRING] [bin2]
:
- FunctionCall test.interval-bin@3[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval-bin@3[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-1990-01-01]
]
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P1Y]
]
]
@@ -34,14 +34,14 @@
(
LiteralExpr [STRING] [bin3]
:
- FunctionCall test.interval-bin@3[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval-bin@3[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1987-11-19T23:49:23.938]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1990-01-01T00:00:00.000Z]
]
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P6M]
]
]
@@ -49,14 +49,14 @@
(
LiteralExpr [STRING] [bin4]
:
- FunctionCall test.interval-bin@3[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval-bin@3[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1987-11-19T23:49:23.938]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-1990-01-01T00:00:00.000Z]
]
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT12H]
]
]
@@ -64,14 +64,14 @@
(
LiteralExpr [STRING] [bin5]
:
- FunctionCall test.interval-bin@3[
- FunctionCall test.time@1[
+ FunctionCall asterix.interval-bin@3[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:23:34.930+07:00]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:00:00]
]
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT2H]
]
]
@@ -79,12 +79,12 @@
(
LiteralExpr [STRING] [bin6]
:
- FunctionCall test.interval-bin@3[
+ FunctionCall asterix.interval-bin@3[
LiteralExpr [NULL]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-0023-01-01]
]
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P6M]
]
]
@@ -92,12 +92,12 @@
(
LiteralExpr [STRING] [bin7]
:
- FunctionCall test.interval-bin@3[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval-bin@3[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
LiteralExpr [NULL]
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P6M]
]
]
@@ -105,11 +105,11 @@
(
LiteralExpr [STRING] [bin8]
:
- FunctionCall test.interval-bin@3[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval-bin@3[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-0023-01-01]
]
LiteralExpr [NULL]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_bin_gby_0/interval_bin_gby_0.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_bin_gby_0/interval_bin_gby_0.3.ast
index 4819073..915780c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_bin_gby_0/interval_bin_gby_0.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_bin_gby_0/interval_bin_gby_0.3.ast
@@ -34,15 +34,15 @@
Groupby
Variable [ Name=$d ]
:=
- FunctionCall test.interval-bin@3[
+ FunctionCall asterix.interval-bin@3[
FieldAccessor [
Variable [ Name=$i ]
Field=timestamp
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1990-01-01T00:00:00.000Z]
]
- FunctionCall test.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P20Y]
]
]
@@ -52,7 +52,7 @@
)
Orderby
- FunctionCall test.get-interval-start@1[
+ FunctionCall asterix.get-interval-start@1[
Variable [ Name=$d ]
]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_bin_gby_1/interval_bin_gby_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_bin_gby_1/interval_bin_gby_1.3.ast
index 10467b9..cfbea3d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_bin_gby_1/interval_bin_gby_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_bin_gby_1/interval_bin_gby_1.3.ast
@@ -34,17 +34,17 @@
Groupby
Variable [ Name=$d ]
:=
- FunctionCall test.interval-bin@3[
- FunctionCall test.get-time-from-datetime@1[
+ FunctionCall asterix.interval-bin@3[
+ FunctionCall asterix.get-time-from-datetime@1[
FieldAccessor [
Variable [ Name=$i ]
Field=timestamp
]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [00:00:00.000Z]
]
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT10M]
]
]
@@ -54,7 +54,7 @@
)
Orderby
- FunctionCall test.get-interval-start@1[
+ FunctionCall asterix.get-interval-start@1[
Variable [ Name=$d ]
]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast
index c6dd653..0aaf594 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/interval_functions/interval_functions.3.ast
@@ -2,315 +2,315 @@
Query:
Let Variable [ Name=$itv1 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-12-21]
]
]
Let Variable [ Name=$itv2 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2011-10-30]
]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2012-10-21]
]
]
Let Variable [ Name=$itv3 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-12-21]
]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-01-01]
]
]
Let Variable [ Name=$blnBefore1 ]
:=
- FunctionCall test.interval-before@2[
+ FunctionCall asterix.interval-before@2[
Variable [ Name=$itv1 ]
Variable [ Name=$itv2 ]
]
Let Variable [ Name=$blnAfter1 ]
:=
- FunctionCall test.interval-after@2[
+ FunctionCall asterix.interval-after@2[
Variable [ Name=$itv2 ]
Variable [ Name=$itv1 ]
]
Let Variable [ Name=$blnBefore2 ]
:=
- FunctionCall test.interval-before@2[
+ FunctionCall asterix.interval-before@2[
Variable [ Name=$itv1 ]
Variable [ Name=$itv3 ]
]
Let Variable [ Name=$blnAfter2 ]
:=
- FunctionCall test.interval-after@2[
+ FunctionCall asterix.interval-after@2[
Variable [ Name=$itv3 ]
Variable [ Name=$itv1 ]
]
Let Variable [ Name=$itv4 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-06-26T01:01:01.111]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-07-27T02:02:02.222]
]
]
Let Variable [ Name=$itv5 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [20120727T020202222]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2013-08-08T03:03:03.333]
]
]
Let Variable [ Name=$itv6 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19000707T020202222]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2013-08-07T03:03:03.333]
]
]
Let Variable [ Name=$blnMeet1 ]
:=
- FunctionCall test.interval-meets@2[
+ FunctionCall asterix.interval-meets@2[
Variable [ Name=$itv4 ]
Variable [ Name=$itv5 ]
]
Let Variable [ Name=$blnMetBy1 ]
:=
- FunctionCall test.interval-met-by@2[
+ FunctionCall asterix.interval-met-by@2[
Variable [ Name=$itv5 ]
Variable [ Name=$itv4 ]
]
Let Variable [ Name=$blnMeet2 ]
:=
- FunctionCall test.interval-meets@2[
+ FunctionCall asterix.interval-meets@2[
Variable [ Name=$itv6 ]
Variable [ Name=$itv4 ]
]
Let Variable [ Name=$blnMetBy2 ]
:=
- FunctionCall test.interval-met-by@2[
+ FunctionCall asterix.interval-met-by@2[
Variable [ Name=$itv6 ]
Variable [ Name=$itv4 ]
]
Let Variable [ Name=$itv7 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [12:32:38]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [20:29:20]
]
]
Let Variable [ Name=$itv8 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [17:48:19]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [22:19:49]
]
]
Let Variable [ Name=$itv9 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [01:32:49]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [17:48:19]
]
]
Let Variable [ Name=$blnOverlaps1 ]
:=
- FunctionCall test.interval-overlaps@2[
+ FunctionCall asterix.interval-overlaps@2[
Variable [ Name=$itv7 ]
Variable [ Name=$itv8 ]
]
Let Variable [ Name=$blnOverlapped1 ]
:=
- FunctionCall test.interval-overlapped-by@2[
+ FunctionCall asterix.interval-overlapped-by@2[
Variable [ Name=$itv8 ]
Variable [ Name=$itv7 ]
]
Let Variable [ Name=$blnOverlaps2 ]
:=
- FunctionCall test.interval-overlaps@2[
+ FunctionCall asterix.interval-overlaps@2[
Variable [ Name=$itv9 ]
Variable [ Name=$itv8 ]
]
Let Variable [ Name=$blnOverlapped2 ]
:=
- FunctionCall test.interval-overlapped-by@2[
+ FunctionCall asterix.interval-overlapped-by@2[
Variable [ Name=$itv8 ]
Variable [ Name=$itv9 ]
]
Let Variable [ Name=$blnOverlap1 ]
:=
- FunctionCall test.interval-overlapping@2[
+ FunctionCall asterix.interval-overlapping@2[
Variable [ Name=$itv9 ]
Variable [ Name=$itv7 ]
]
Let Variable [ Name=$blnOverlap2 ]
:=
- FunctionCall test.interval-overlapping@2[
+ FunctionCall asterix.interval-overlapping@2[
Variable [ Name=$itv9 ]
Variable [ Name=$itv8 ]
]
Let Variable [ Name=$itv10 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-10-30]
]
- FunctionCall test.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2010-11-30]
]
]
Let Variable [ Name=$blnStarts1 ]
:=
- FunctionCall test.interval-starts@2[
+ FunctionCall asterix.interval-starts@2[
Variable [ Name=$itv10 ]
Variable [ Name=$itv1 ]
]
Let Variable [ Name=$blnStarts2 ]
:=
- FunctionCall test.interval-starts@2[
+ FunctionCall asterix.interval-starts@2[
Variable [ Name=$itv10 ]
Variable [ Name=$itv2 ]
]
Let Variable [ Name=$blnStartedBy1 ]
:=
- FunctionCall test.interval-started-by@2[
+ FunctionCall asterix.interval-started-by@2[
Variable [ Name=$itv1 ]
Variable [ Name=$itv10 ]
]
Let Variable [ Name=$blnStartedBy2 ]
:=
- FunctionCall test.interval-started-by@2[
+ FunctionCall asterix.interval-started-by@2[
Variable [ Name=$itv10 ]
Variable [ Name=$itv2 ]
]
Let Variable [ Name=$itv10 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19000707T020202222]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2013-08-07T03:03:03.333]
]
]
Let Variable [ Name=$itv11 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [19990707T020202222]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2013-08-07T03:03:03.333]
]
]
Let Variable [ Name=$itv12 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [-19990707T020202222]
]
- FunctionCall test.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2013-08-07T03:03:03.333]
]
]
Let Variable [ Name=$blnCovers1 ]
:=
- FunctionCall test.interval-covers@2[
+ FunctionCall asterix.interval-covers@2[
Variable [ Name=$itv10 ]
Variable [ Name=$itv11 ]
]
Let Variable [ Name=$blnCovers2 ]
:=
- FunctionCall test.interval-covers@2[
+ FunctionCall asterix.interval-covers@2[
Variable [ Name=$itv10 ]
Variable [ Name=$itv12 ]
]
Let Variable [ Name=$blnCoveredBy1 ]
:=
- FunctionCall test.interval-covered-by@2[
+ FunctionCall asterix.interval-covered-by@2[
Variable [ Name=$itv11 ]
Variable [ Name=$itv10 ]
]
Let Variable [ Name=$blnCoveredBy2 ]
:=
- FunctionCall test.interval-covered-by@2[
+ FunctionCall asterix.interval-covered-by@2[
Variable [ Name=$itv12 ]
Variable [ Name=$itv10 ]
]
Let Variable [ Name=$itv11 ]
:=
- FunctionCall test.interval@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [19:00:00.009]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [20:29:20.000]
]
]
Let Variable [ Name=$blnEnds1 ]
:=
- FunctionCall test.interval-ends@2[
+ FunctionCall asterix.interval-ends@2[
Variable [ Name=$itv11 ]
Variable [ Name=$itv7 ]
]
Let Variable [ Name=$blnEnds2 ]
:=
- FunctionCall test.interval-ends@2[
+ FunctionCall asterix.interval-ends@2[
Variable [ Name=$itv11 ]
Variable [ Name=$itv8 ]
]
Let Variable [ Name=$blnEndedBy1 ]
:=
- FunctionCall test.interval-ended-by@2[
+ FunctionCall asterix.interval-ended-by@2[
Variable [ Name=$itv7 ]
Variable [ Name=$itv11 ]
]
Let Variable [ Name=$blnEndedBy2 ]
:=
- FunctionCall test.interval-ended-by@2[
+ FunctionCall asterix.interval-ended-by@2[
Variable [ Name=$itv8 ]
Variable [ Name=$itv11 ]
]
Let Variable [ Name=$null1 ]
:=
- FunctionCall test.interval-before@2[
+ FunctionCall asterix.interval-before@2[
LiteralExpr [NULL]
Variable [ Name=$itv2 ]
]
Let Variable [ Name=$null2 ]
:=
- FunctionCall test.interval-covered-by@2[
+ FunctionCall asterix.interval-covered-by@2[
Variable [ Name=$itv11 ]
LiteralExpr [NULL]
]
Let Variable [ Name=$null3 ]
:=
- FunctionCall test.interval-overlapping@2[
+ FunctionCall asterix.interval-overlapping@2[
LiteralExpr [NULL]
LiteralExpr [NULL]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast
index 01cd805..53a760a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins/overlap_bins.3.ast
@@ -3,19 +3,19 @@
(
LiteralExpr [STRING] [timebins]
:
- FunctionCall null.overlap-bins@3[
- FunctionCall null.interval@2[
- FunctionCall null.time@1[
+ FunctionCall asterix.overlap-bins@3[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [17:23:37]
]
- FunctionCall null.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [18:30:21]
]
]
- FunctionCall null.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [00:00:00]
]
- FunctionCall null.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT30M]
]
]
@@ -23,19 +23,19 @@
(
LiteralExpr [STRING] [datebins]
:
- FunctionCall null.overlap-bins@3[
- FunctionCall null.interval@2[
- FunctionCall null.date@1[
+ FunctionCall asterix.overlap-bins@3[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1984-03-17]
]
- FunctionCall null.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [2013-08-22]
]
]
- FunctionCall null.date@1[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [1990-01-01]
]
- FunctionCall null.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P10Y]
]
]
@@ -43,19 +43,19 @@
(
LiteralExpr [STRING] [datetimebins]
:
- FunctionCall null.overlap-bins@3[
- FunctionCall null.interval@2[
- FunctionCall null.datetime@1[
+ FunctionCall asterix.overlap-bins@3[
+ FunctionCall asterix.interval@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1800-01-01T23:59:48.938]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2015-07-26T13:28:30.218]
]
]
- FunctionCall null.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1900-01-01T00:00:00.000]
]
- FunctionCall null.year-month-duration@1[
+ FunctionCall asterix.year-month-duration@1[
LiteralExpr [STRING] [P100Y]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.ast
index ea0f18c..52ee3be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_0/overlap_bins_gby_0.3.ast
@@ -18,7 +18,7 @@
(
LiteralExpr [STRING] [overlap]
:
- FunctionCall test.get-overlapping-interval@2[
+ FunctionCall asterix.get-overlapping-interval@2[
FieldAccessor [
Variable [ Name=$gen0 ]
Field=bin
@@ -72,8 +72,8 @@
)
AS Variable [ Name=$i ]
,
- FunctionCall test.overlap-bins@3[
- FunctionCall test.interval-start-from-time@2[
+ FunctionCall asterix.overlap-bins@3[
+ FunctionCall asterix.interval-start-from-time@2[
FieldAccessor [
Variable [ Name=$i ]
Field=time
@@ -83,10 +83,10 @@
Field=duration
]
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [00:00:00]
]
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT1H30M]
]
]
@@ -103,7 +103,7 @@
)
Orderby
- FunctionCall test.get-interval-start@1[
+ FunctionCall asterix.get-interval-start@1[
Variable [ Name=$bin ]
]
ASC
@@ -119,7 +119,7 @@
]
Let Variable [ Name=$itv ]
:=
- FunctionCall test.interval-start-from-time@2[
+ FunctionCall asterix.interval-start-from-time@2[
FieldAccessor [
Variable [ Name=$x ]
Field=time
@@ -130,7 +130,7 @@
]
]
Orderby
- FunctionCall test.get-interval-start@1[
+ FunctionCall asterix.get-interval-start@1[
FieldAccessor [
Variable [ Name=$gen0 ]
Field=bin
@@ -139,7 +139,7 @@
ASC
Variable [ Name=$itv ]
ASC
- FunctionCall test.get-overlapping-interval@2[
+ FunctionCall asterix.get-overlapping-interval@2[
FieldAccessor [
Variable [ Name=$gen0 ]
Field=bin
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.ast
index f30c61a..9bab832 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_1/overlap_bins_gby_1.3.ast
@@ -27,9 +27,9 @@
FunctionCall asterix.sum@1[
(
SELECT ELEMENT [
- FunctionCall test.ms-from-day-time-duration@1[
- FunctionCall test.duration-from-interval@1[
- FunctionCall test.get-overlapping-interval@2[
+ FunctionCall asterix.ms-from-day-time-duration@1[
+ FunctionCall asterix.duration-from-interval@1[
+ FunctionCall asterix.get-overlapping-interval@2[
Variable [ Name=$bin ]
FieldAccessor [
FieldAccessor [
@@ -56,7 +56,7 @@
(
LiteralExpr [STRING] [interval]
:
- FunctionCall test.interval-start-from-time@2[
+ FunctionCall asterix.interval-start-from-time@2[
FieldAccessor [
Variable [ Name=$i1 ]
Field=time
@@ -84,15 +84,15 @@
)
AS Variable [ Name=$i2 ]
,
- FunctionCall test.overlap-bins@3[
+ FunctionCall asterix.overlap-bins@3[
FieldAccessor [
Variable [ Name=$i2 ]
Field=interval
]
- FunctionCall test.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [00:00:00]
]
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT1H30M]
]
]
@@ -109,7 +109,7 @@
)
Orderby
- FunctionCall test.get-interval-start@1[
+ FunctionCall asterix.get-interval-start@1[
Variable [ Name=$bin ]
]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast
index 2a3e8f2..e8b8b9e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/overlap_bins_gby_3/overlap_bins_gby_3.3.ast
@@ -43,14 +43,14 @@
AS Variable [ Name=$i ]
]
Where
- FunctionCall multitask.interval-covers@2[
+ FunctionCall asterix.interval-covers@2[
Variable [ Name=$bin ]
- FunctionCall multitask.interval-start-from-time@2[
+ FunctionCall asterix.interval-start-from-time@2[
FieldAccessor [
Variable [ Name=$i ]
Field=time
]
- FunctionCall multitask.duration-from-ms@1[
+ FunctionCall asterix.duration-from-ms@1[
FieldAccessor [
Variable [ Name=$i ]
Field=duration
@@ -92,8 +92,8 @@
)
]
]
-FROM [ FunctionCall multitask.overlap-bins@3[
- FunctionCall multitask.interval@2[
+FROM [ FunctionCall asterix.overlap-bins@3[
+ FunctionCall asterix.interval@2[
FunctionCall asterix.min@1[
(
SELECT ELEMENT [
@@ -118,7 +118,7 @@
Field=time
]
+
- FunctionCall multitask.duration-from-ms@1[
+ FunctionCall asterix.duration-from-ms@1[
OperatorExpr [
FieldAccessor [
Variable [ Name=$i ]
@@ -138,17 +138,17 @@
)
]
]
- FunctionCall multitask.time@1[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [00:00:00.000]
]
- FunctionCall multitask.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT1M]
]
]
AS Variable [ Name=$bin ]
]
Orderby
- FunctionCall multitask.get-interval-start@1[
+ FunctionCall asterix.get-interval-start@1[
Variable [ Name=$bin ]
]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_01/parse_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_01/parse_01.3.ast
index 8f307fa..08e0b89 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_01/parse_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_01/parse_01.3.ast
@@ -5,7 +5,7 @@
(
LiteralExpr [STRING] [date1]
:
- FunctionCall test.parse-date@2[
+ FunctionCall asterix.parse-date@2[
LiteralExpr [STRING] [2013-8-23]
LiteralExpr [STRING] [YY-M-D]
]
@@ -13,7 +13,7 @@
(
LiteralExpr [STRING] [date2]
:
- FunctionCall test.parse-date@2[
+ FunctionCall asterix.parse-date@2[
LiteralExpr [STRING] [Aug 12 -12]
LiteralExpr [STRING] [MMM D Y]
]
@@ -21,7 +21,7 @@
(
LiteralExpr [STRING] [date3]
:
- FunctionCall test.parse-date@2[
+ FunctionCall asterix.parse-date@2[
LiteralExpr [STRING] [-1234-01-01]
LiteralExpr [STRING] [YYYY-MM-DD]
]
@@ -29,7 +29,7 @@
(
LiteralExpr [STRING] [date4]
:
- FunctionCall test.parse-date@2[
+ FunctionCall asterix.parse-date@2[
LiteralExpr [STRING] [09/11/-1980]
LiteralExpr [STRING] [D/M/Y]
]
@@ -37,7 +37,7 @@
(
LiteralExpr [STRING] [date5]
:
- FunctionCall test.parse-date@2[
+ FunctionCall asterix.parse-date@2[
LiteralExpr [STRING] [09/11/-1990]
LiteralExpr [STRING] [YY-M-D|MMM D Y|D/M/Y]
]
@@ -45,7 +45,7 @@
(
LiteralExpr [STRING] [date6]
:
- FunctionCall test.parse-date@2[
+ FunctionCall asterix.parse-date@2[
LiteralExpr [STRING] [Mon Aug 19 2013]
LiteralExpr [STRING] [W MMM D Y]
]
@@ -53,7 +53,7 @@
(
LiteralExpr [STRING] [data7]
:
- FunctionCall test.parse-date@2[
+ FunctionCall asterix.parse-date@2[
LiteralExpr [STRING] [SKIPMEPLEASE Mon Aug SKIPME1ALSO 19 2013]
LiteralExpr [STRING] [O W MMM O D Y]
]
@@ -61,7 +61,7 @@
(
LiteralExpr [STRING] [time1]
:
- FunctionCall test.parse-time@2[
+ FunctionCall asterix.parse-time@2[
LiteralExpr [STRING] [8:23:49]
LiteralExpr [STRING] [h:m:s]
]
@@ -69,7 +69,7 @@
(
LiteralExpr [STRING] [time2]
:
- FunctionCall test.parse-time@2[
+ FunctionCall asterix.parse-time@2[
LiteralExpr [STRING] [8.19.23:32]
LiteralExpr [STRING] [h.m.s:nn]
]
@@ -77,7 +77,7 @@
(
LiteralExpr [STRING] [time3]
:
- FunctionCall test.parse-time@2[
+ FunctionCall asterix.parse-time@2[
LiteralExpr [STRING] [08.19.23:32 pm]
LiteralExpr [STRING] [h.m.s:nn a]
]
@@ -85,7 +85,7 @@
(
LiteralExpr [STRING] [time4]
:
- FunctionCall test.parse-time@2[
+ FunctionCall asterix.parse-time@2[
LiteralExpr [STRING] [6:30:40.948 pm PST]
LiteralExpr [STRING] [h:mm:ss.nnn a z]
]
@@ -93,7 +93,7 @@
(
LiteralExpr [STRING] [time5]
:
- FunctionCall test.parse-time@2[
+ FunctionCall asterix.parse-time@2[
LiteralExpr [STRING] [6:30:40.948 pm PST]
LiteralExpr [STRING] [h:m:s|h.m.s:nn|h.m.s:nn a|h:mm:ss.nnn a z]
]
@@ -101,7 +101,7 @@
(
LiteralExpr [STRING] [datetime1]
:
- FunctionCall test.parse-datetime@2[
+ FunctionCall asterix.parse-datetime@2[
LiteralExpr [STRING] [Dec 30 -1203 3:48:27 PM]
LiteralExpr [STRING] [MMM DD YYYY h:m:s a]
]
@@ -109,7 +109,7 @@
(
LiteralExpr [STRING] [datetime2]
:
- FunctionCall test.parse-datetime@2[
+ FunctionCall asterix.parse-datetime@2[
LiteralExpr [STRING] [12/30/-1203 03:48:27.392 PM Asia/Shanghai]
LiteralExpr [STRING] [MM/DD/YYY hh:mm:ss.nnn a z]
]
@@ -117,7 +117,7 @@
(
LiteralExpr [STRING] [datetime3]
:
- FunctionCall test.parse-datetime@2[
+ FunctionCall asterix.parse-datetime@2[
LiteralExpr [STRING] [1723-12-03T23:59:23.392Z]
LiteralExpr [STRING] [YYYY-MM-DDThh:mm:ss.nnnz]
]
@@ -125,7 +125,7 @@
(
LiteralExpr [STRING] [datetime4]
:
- FunctionCall test.parse-datetime@2[
+ FunctionCall asterix.parse-datetime@2[
LiteralExpr [STRING] [1723-12-03T23:59:23.392-04:00]
LiteralExpr [STRING] [YYYY-MM-DDThh:mm:ss.nnnz]
]
@@ -133,7 +133,7 @@
(
LiteralExpr [STRING] [datetime5]
:
- FunctionCall test.parse-datetime@2[
+ FunctionCall asterix.parse-datetime@2[
LiteralExpr [STRING] [1723-12-03T23:59:23.392-04:00]
LiteralExpr [STRING] [MMM DD YYYY h:m:s a|MM/DD/YYY hh:mm:ss.nnn a z|YYYY-MM-DDThh:mm:ss.nnnz]
]
@@ -141,7 +141,7 @@
(
LiteralExpr [STRING] [datetime6]
:
- FunctionCall test.parse-datetime@2[
+ FunctionCall asterix.parse-datetime@2[
LiteralExpr [STRING] [1970-01-01 Thu 23:59:23.392-04:00]
LiteralExpr [STRING] [MMM DD YYYY h:m:s a|MM/DD/YYY hh:mm:ss.nnn a z|YYYY-MM-DD W hh:mm:ss.nnnz]
]
@@ -149,7 +149,7 @@
(
LiteralExpr [STRING] [datetime7]
:
- FunctionCall test.parse-datetime@2[
+ FunctionCall asterix.parse-datetime@2[
LiteralExpr [STRING] [1723-12-03 What3v3r STRINGHERE 23:59:23.392-04:00]
LiteralExpr [STRING] [MMM DD YYYY h:m:s a|MM/DD/YYY hh:mm:ss.nnn a z|YYYY-MM-DD O O hh:mm:ss.nnnz]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_02/parse_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_02/parse_02.3.ast
index 5ff0efc..ea8c109 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_02/parse_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_02/parse_02.3.ast
@@ -4,8 +4,8 @@
(
LiteralExpr [STRING] [date-string-1]
:
- FunctionCall test.print-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.print-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-0123-01-30]
]
LiteralExpr [STRING] [YY/M/D]
@@ -14,8 +14,8 @@
(
LiteralExpr [STRING] [date-string-2]
:
- FunctionCall test.print-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.print-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-0123-01-30]
]
LiteralExpr [STRING] [MMM DD, YYYY]
@@ -24,8 +24,8 @@
(
LiteralExpr [STRING] [date-string-3]
:
- FunctionCall test.print-date@2[
- FunctionCall test.date@1[
+ FunctionCall asterix.print-date@2[
+ FunctionCall asterix.date@1[
LiteralExpr [STRING] [-0123-01-30]
]
LiteralExpr [STRING] [YYYY/MM/DD]
@@ -34,8 +34,8 @@
(
LiteralExpr [STRING] [time-string-1]
:
- FunctionCall test.print-time@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.print-time@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [08:07:29.030Z]
]
LiteralExpr [STRING] [h.m.s.nn a z]
@@ -44,8 +44,8 @@
(
LiteralExpr [STRING] [time-string-2]
:
- FunctionCall test.print-time@2[
- FunctionCall test.time@1[
+ FunctionCall asterix.print-time@2[
+ FunctionCall asterix.time@1[
LiteralExpr [STRING] [08:07:29.030Z]
]
LiteralExpr [STRING] [hh.mm.ss.nnn a z]
@@ -54,8 +54,8 @@
(
LiteralExpr [STRING] [datetime-string-1]
:
- FunctionCall test.print-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.print-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [0137-12-31T23:59:59.999+08:00]
]
LiteralExpr [STRING] [MMM DD h:m:s.nnn a YY z]
@@ -64,8 +64,8 @@
(
LiteralExpr [STRING] [datetime-string-2]
:
- FunctionCall test.print-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.print-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [0137-12-31T23:59:59.999+08:00]
]
LiteralExpr [STRING] [YYYY/MMM/DD h:m:s.nnnz a]
@@ -74,8 +74,8 @@
(
LiteralExpr [STRING] [datetime-string-3]
:
- FunctionCall test.print-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.print-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [0137-12-31T23:59:59.999+08:00]
]
LiteralExpr [STRING] [YYYY-MM-DDThh:mm:ss.nnnz]
@@ -84,8 +84,8 @@
(
LiteralExpr [STRING] [datetime-string-4]
:
- FunctionCall test.print-datetime@2[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.print-datetime@2[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1000-10-10T10:10:10.100+00:00]
]
LiteralExpr [STRING] [YYYY-MM-DDThh:mm:ss.nnnz]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/time_functions/time_functions.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/time_functions/time_functions.3.ast
index 2baf9252d..57002df 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/time_functions/time_functions.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/time_functions/time_functions.3.ast
@@ -5,15 +5,15 @@
(
LiteralExpr [STRING] [time1]
:
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [LONG] [1560074]
]
)
(
LiteralExpr [STRING] [time2]
:
- FunctionCall test.get-time-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-time-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
@@ -21,8 +21,8 @@
(
LiteralExpr [STRING] [time3]
:
- FunctionCall test.get-time-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-time-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-10-11T02:30:23+03:00]
]
]
@@ -31,11 +31,11 @@
LiteralExpr [STRING] [time4]
:
OperatorExpr [
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [LONG] [1560074]
]
+
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [-PT30H]
]
]
@@ -44,13 +44,13 @@
LiteralExpr [STRING] [time5]
:
OperatorExpr [
- FunctionCall test.get-time-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-time-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
+
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT36M]
]
]
@@ -58,8 +58,8 @@
(
LiteralExpr [STRING] [unix1]
:
- FunctionCall test.unix-time-from-time-in-ms@1[
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.unix-time-from-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [LONG] [1560074]
]
]
@@ -69,19 +69,19 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.get-time-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-time-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
+
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT36M]
]
]
-
- FunctionCall test.get-time-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-time-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
@@ -92,16 +92,16 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [LONG] [1560074]
]
+
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [-PT30H]
]
]
-
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [LONG] [1560074]
]
]
@@ -110,33 +110,33 @@
LiteralExpr [STRING] [c1]
:
OperatorExpr [
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [LONG] [1560074]
]
=
OperatorExpr [
OperatorExpr [
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [LONG] [1560074]
]
-
OperatorExpr [
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [LONG] [1560074]
]
+
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [-PT30H]
]
]
]
+
OperatorExpr [
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [LONG] [1560074]
]
+
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [-PT30H]
]
]
@@ -147,40 +147,40 @@
LiteralExpr [STRING] [c2]
:
OperatorExpr [
- FunctionCall test.get-time-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-time-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
=
OperatorExpr [
OperatorExpr [
- FunctionCall test.get-time-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-time-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
+
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT36M]
]
]
+
OperatorExpr [
- FunctionCall test.get-time-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-time-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
-
OperatorExpr [
- FunctionCall test.get-time-from-datetime@1[
- FunctionCall test.datetime@1[
+ FunctionCall asterix.get-time-from-datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [1327-12-02T23:35:49.938Z]
]
]
+
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [PT36M]
]
]
@@ -191,21 +191,21 @@
(
LiteralExpr [STRING] [null1]
:
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [nullunix1]
:
- FunctionCall test.unix-time-from-time-in-ms@1[
+ FunctionCall asterix.unix-time-from-time-in-ms@1[
LiteralExpr [NULL]
]
)
(
LiteralExpr [STRING] [null2]
:
- FunctionCall test.get-time-from-datetime@1[
+ FunctionCall asterix.get-time-from-datetime@1[
LiteralExpr [NULL]
]
)
@@ -215,7 +215,7 @@
OperatorExpr [
LiteralExpr [NULL]
+
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [-PT30H]
]
]
@@ -224,7 +224,7 @@
LiteralExpr [STRING] [null4]
:
OperatorExpr [
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [LONG] [1560074]
]
+
@@ -237,7 +237,7 @@
OperatorExpr [
LiteralExpr [NULL]
-
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [LONG] [1560074]
]
]
@@ -247,11 +247,11 @@
:
OperatorExpr [
OperatorExpr [
- FunctionCall test.time-from-unix-time-in-ms@1[
+ FunctionCall asterix.time-from-unix-time-in-ms@1[
LiteralExpr [LONG] [1560074]
]
+
- FunctionCall test.day-time-duration@1[
+ FunctionCall asterix.day-time-duration@1[
LiteralExpr [STRING] [-PT30H]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.10.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.10.ast
index 212935c..3f12340 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.10.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.10.ast
@@ -33,7 +33,7 @@
]
Where
OperatorExpr [
- FunctionCall TinySocial.spatial-distance@2[
+ FunctionCall asterix.spatial-distance@2[
FieldAccessor [
Variable [ Name=$t ]
Field=sender-location
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.23.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.23.ast
index 32e545b..cb6ebeb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.23.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.23.ast
@@ -36,7 +36,7 @@
Groupby
Variable [ Name=$min ]
:=
- FunctionCall TinySocial.get-minute@1[
+ FunctionCall asterix.get-minute@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$k ]
@@ -65,7 +65,7 @@
Groupby
Variable [ Name=$h ]
:=
- FunctionCall TinySocial.get-hour@1[
+ FunctionCall asterix.get-hour@1[
FieldAccessor [
Variable [ Name=$t ]
Field=send-time
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.24.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.24.ast
index 0da93150..15f7143 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.24.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.24.ast
@@ -64,7 +64,7 @@
]
Let Variable [ Name=#3 ]
:=
- FunctionCall TinySocial.substring@2[
+ FunctionCall asterix.substring@2[
FieldAccessor [
Variable [ Name=$message ]
Field=message
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.25.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.25.ast
index a1377a6..f130474 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.25.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.25.ast
@@ -4,7 +4,7 @@
FunctionCall asterix.avg@1[
(
SELECT ELEMENT [
- FunctionCall TinySocial.string-length@1[
+ FunctionCall asterix.string-length@1[
FieldAccessor [
Variable [ Name=$message ]
Field=message
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.26.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.26.ast
index eb31c41..6e0bcfb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.26.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.26.ast
@@ -6,7 +6,7 @@
FunctionCall asterix.sql-avg@1[
(
SELECT ELEMENT [
- FunctionCall TinySocial.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=#2 ]
@@ -42,7 +42,7 @@
FunctionCall asterix.sql-sum@1[
(
SELECT ELEMENT [
- FunctionCall TinySocial.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=#4 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.27.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.27.ast
index 7df69ee..ad577cc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.27.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.27.ast
@@ -4,7 +4,7 @@
FunctionCall asterix.sql-avg@1[
(
SELECT ELEMENT [
- FunctionCall TinySocial.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=#2 ]
@@ -40,7 +40,7 @@
FunctionCall asterix.sql-sum@1[
(
SELECT ELEMENT [
- FunctionCall TinySocial.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=#4 ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.6.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.6.ast
index 1447bdc..85f493c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.6.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite-open/tinysocial-suite.6.ast
@@ -16,7 +16,7 @@
Field=user-since
]
>=
- FunctionCall TinySocial.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2010-07-22T00:00:00]
]
]
@@ -27,7 +27,7 @@
Field=user-since
]
<=
- FunctionCall TinySocial.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-07-29T23:59:59]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.10.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.10.ast
index 212935c..3f12340 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.10.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.10.ast
@@ -33,7 +33,7 @@
]
Where
OperatorExpr [
- FunctionCall TinySocial.spatial-distance@2[
+ FunctionCall asterix.spatial-distance@2[
FieldAccessor [
Variable [ Name=$t ]
Field=sender-location
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.23.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.23.ast
index 32e545b..cb6ebeb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.23.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.23.ast
@@ -36,7 +36,7 @@
Groupby
Variable [ Name=$min ]
:=
- FunctionCall TinySocial.get-minute@1[
+ FunctionCall asterix.get-minute@1[
FieldAccessor [
FieldAccessor [
Variable [ Name=$k ]
@@ -65,7 +65,7 @@
Groupby
Variable [ Name=$h ]
:=
- FunctionCall TinySocial.get-hour@1[
+ FunctionCall asterix.get-hour@1[
FieldAccessor [
Variable [ Name=$t ]
Field=send-time
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.24.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.24.ast
index 0da93150..15f7143 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.24.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.24.ast
@@ -64,7 +64,7 @@
]
Let Variable [ Name=#3 ]
:=
- FunctionCall TinySocial.substring@2[
+ FunctionCall asterix.substring@2[
FieldAccessor [
Variable [ Name=$message ]
Field=message
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.25.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.25.ast
index a1377a6..f130474 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.25.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.25.ast
@@ -4,7 +4,7 @@
FunctionCall asterix.avg@1[
(
SELECT ELEMENT [
- FunctionCall TinySocial.string-length@1[
+ FunctionCall asterix.string-length@1[
FieldAccessor [
Variable [ Name=$message ]
Field=message
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.6.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.6.ast
index 1447bdc..85f493c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.6.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tinysocial/tinysocial-suite/tinysocial-suite.6.ast
@@ -16,7 +16,7 @@
Field=user-since
]
>=
- FunctionCall TinySocial.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2010-07-22T00:00:00]
]
]
@@ -27,7 +27,7 @@
Field=user-since
]
<=
- FunctionCall TinySocial.datetime@1[
+ FunctionCall asterix.datetime@1[
LiteralExpr [STRING] [2012-07-29T23:59:59]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/counthashed-gram-tokens_01/counthashed-gram-tokens_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/counthashed-gram-tokens_01/counthashed-gram-tokens_01.3.ast
index 1a0f2bfc..d08ba3b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/counthashed-gram-tokens_01/counthashed-gram-tokens_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/counthashed-gram-tokens_01/counthashed-gram-tokens_01.3.ast
@@ -6,7 +6,7 @@
LiteralExpr [STRING] [Jürgen S. Generic's Car]
Let Variable [ Name=$tokens ]
:=
- FunctionCall test.counthashed-gram-tokens@3[
+ FunctionCall asterix.counthashed-gram-tokens@3[
Variable [ Name=$txt ]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/counthashed-gram-tokens_02/counthashed-gram-tokens_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/counthashed-gram-tokens_02/counthashed-gram-tokens_02.3.ast
index da0deb1..0e91f28 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/counthashed-gram-tokens_02/counthashed-gram-tokens_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/counthashed-gram-tokens_02/counthashed-gram-tokens_02.3.ast
@@ -6,7 +6,7 @@
LiteralExpr [STRING] [Jürgen S. Generic's Car]
Let Variable [ Name=$tokens ]
:=
- FunctionCall test.counthashed-gram-tokens@3[
+ FunctionCall asterix.counthashed-gram-tokens@3[
Variable [ Name=$txt ]
LiteralExpr [LONG] [3]
LiteralExpr [TRUE]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/counthashed-word-tokens_01/counthashed-word-tokens_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/counthashed-word-tokens_01/counthashed-word-tokens_01.3.ast
index 3e31997..5f3ff16 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/counthashed-word-tokens_01/counthashed-word-tokens_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/counthashed-word-tokens_01/counthashed-word-tokens_01.3.ast
@@ -6,7 +6,7 @@
LiteralExpr [STRING] [Hello World, I would like to inform you of the importance of Foo Bar. Yes, Foo Bar. Jürgen.]
Let Variable [ Name=$tokens ]
:=
- FunctionCall test.counthashed-word-tokens@1[
+ FunctionCall asterix.counthashed-word-tokens@1[
Variable [ Name=$txt ]
]
SELECT ELEMENT [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/gram-tokens_01/gram-tokens_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/gram-tokens_01/gram-tokens_01.3.ast
index ffcb3aa..f172403 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/gram-tokens_01/gram-tokens_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/gram-tokens_01/gram-tokens_01.3.ast
@@ -6,7 +6,7 @@
LiteralExpr [STRING] [Jürgen S. Generic's Car]
Let Variable [ Name=$tokens ]
:=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
Variable [ Name=$txt ]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/gram-tokens_02/gram-tokens_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/gram-tokens_02/gram-tokens_02.3.ast
index 38fa7a41..f92151c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/gram-tokens_02/gram-tokens_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/gram-tokens_02/gram-tokens_02.3.ast
@@ -6,7 +6,7 @@
LiteralExpr [STRING] [Jürgen S. Generic's Car]
Let Variable [ Name=$tokens ]
:=
- FunctionCall test.gram-tokens@3[
+ FunctionCall asterix.gram-tokens@3[
Variable [ Name=$txt ]
LiteralExpr [LONG] [3]
LiteralExpr [TRUE]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/hashed-gram-tokens_01/hashed-gram-tokens_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/hashed-gram-tokens_01/hashed-gram-tokens_01.3.ast
index 3fe7f85..367ea0a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/hashed-gram-tokens_01/hashed-gram-tokens_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/hashed-gram-tokens_01/hashed-gram-tokens_01.3.ast
@@ -6,7 +6,7 @@
LiteralExpr [STRING] [Jürgen S. Generic's Car]
Let Variable [ Name=$tokens ]
:=
- FunctionCall test.hashed-gram-tokens@3[
+ FunctionCall asterix.hashed-gram-tokens@3[
Variable [ Name=$txt ]
LiteralExpr [LONG] [3]
LiteralExpr [FALSE]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/hashed-gram-tokens_02/hashed-gram-tokens_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/hashed-gram-tokens_02/hashed-gram-tokens_02.3.ast
index 650c19b..155258f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/hashed-gram-tokens_02/hashed-gram-tokens_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/hashed-gram-tokens_02/hashed-gram-tokens_02.3.ast
@@ -6,7 +6,7 @@
LiteralExpr [STRING] [Jürgen S. Generic's Car]
Let Variable [ Name=$tokens ]
:=
- FunctionCall test.hashed-gram-tokens@3[
+ FunctionCall asterix.hashed-gram-tokens@3[
Variable [ Name=$txt ]
LiteralExpr [LONG] [3]
LiteralExpr [TRUE]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/hashed-word-tokens_01/hashed-word-tokens_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/hashed-word-tokens_01/hashed-word-tokens_01.3.ast
index 686b329..858964c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/hashed-word-tokens_01/hashed-word-tokens_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/hashed-word-tokens_01/hashed-word-tokens_01.3.ast
@@ -6,7 +6,7 @@
LiteralExpr [STRING] [Hello World, I would like to inform you of the importance of Foo Bar. Yes, Foo Bar. Jürgen.]
Let Variable [ Name=$tokens ]
:=
- FunctionCall test.hashed-word-tokens@1[
+ FunctionCall asterix.hashed-word-tokens@1[
Variable [ Name=$txt ]
]
SELECT ELEMENT [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/word-tokens_01/word-tokens_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/word-tokens_01/word-tokens_01.3.ast
index 7e5a36d..5e432d6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/word-tokens_01/word-tokens_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/word-tokens_01/word-tokens_01.3.ast
@@ -5,7 +5,7 @@
LiteralExpr [STRING] [Hello World, I would like to inform you of the importance of Foo Bar. Yes, Foo Bar. Jürgen.]
Let Variable [ Name=$tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
Variable [ Name=$txt ]
]
SELECT ELEMENT [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/word-tokens_02/word-tokens_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/word-tokens_02/word-tokens_02.3.ast
index ffc58ee..0a608d5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/word-tokens_02/word-tokens_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tokenizers/word-tokens_02/word-tokens_02.3.ast
@@ -5,7 +5,7 @@
LiteralExpr [STRING] [ΩΣ]
Let Variable [ Name=$tokens ]
:=
- FunctionCall test.word-tokens@1[
+ FunctionCall asterix.word-tokens@1[
Variable [ Name=$txt ]
]
SELECT ELEMENT [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast
index 162701b..e715133 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast
@@ -337,7 +337,7 @@
(
LiteralExpr [STRING] [ps_min_supplycost]
:
- FunctionCall asterix.min@1[
+ FunctionCall tpch.STRICT_MIN@1[
(
SELECT ELEMENT [
FieldAccessor [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q07_volume_shipping/q07_volume_shipping.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q07_volume_shipping/q07_volume_shipping.3.ast
index 4de6f4e..1d4ed44 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q07_volume_shipping/q07_volume_shipping.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q07_volume_shipping/q07_volume_shipping.3.ast
@@ -317,7 +317,7 @@
]
Let Variable [ Name=$l_year0 ]
:=
- FunctionCall tpch.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
Variable [ Name=$locs ]
Field=l_shipdate
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q08_national_market_share/q08_national_market_share.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q08_national_market_share/q08_national_market_share.3.ast
index 148fe1d..30243af 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q08_national_market_share/q08_national_market_share.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q08_national_market_share/q08_national_market_share.3.ast
@@ -450,7 +450,7 @@
]
Let Variable [ Name=$o_year ]
:=
- FunctionCall tpch.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
Variable [ Name=$slnrcop ]
Field=o_orderdate
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast
index 683f2f2..52159a3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast
@@ -344,7 +344,7 @@
]
Where
OperatorExpr [
- FunctionCall tpch.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$p ]
Field=p_name
@@ -400,7 +400,7 @@
]
Let Variable [ Name=$o_year ]
:=
- FunctionCall tpch.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
Variable [ Name=$o ]
Field=o_orderdate
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q15_top_supplier/q15_top_supplier.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q15_top_supplier/q15_top_supplier.3.ast
index 8ae41ce..872bfc4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q15_top_supplier/q15_top_supplier.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q15_top_supplier/q15_top_supplier.3.ast
@@ -11,7 +11,7 @@
(
LiteralExpr [STRING] [total_revenue]
:
- FunctionCall asterix.sum@1[
+ FunctionCall tpch.STRICT_SUM@1[
(
SELECT ELEMENT [
OperatorExpr [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.ast
index de332e6..61d2e5e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q17_small_quantity_order_revenue/q17_small_quantity_order_revenue.3.ast
@@ -14,7 +14,7 @@
OperatorExpr [
LiteralExpr [DOUBLE] [0.2]
*
- FunctionCall asterix.avg@1[
+ FunctionCall tpch.strict_avg@1[
(
SELECT ELEMENT [
FieldAccessor [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q19_discounted_revenue/q19_discounted_revenue.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q19_discounted_revenue/q19_discounted_revenue.3.ast
index 3314c43..0ceadd4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q19_discounted_revenue/q19_discounted_revenue.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q19_discounted_revenue/q19_discounted_revenue.3.ast
@@ -56,7 +56,7 @@
LiteralExpr [STRING] [Brand#12]
]
and
- FunctionCall tpch.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$p ]
Field=p_container
@@ -100,7 +100,7 @@
LiteralExpr [LONG] [5]
]
and
- FunctionCall tpch.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$l ]
Field=l_shipmode
@@ -128,7 +128,7 @@
LiteralExpr [STRING] [Brand#23]
]
and
- FunctionCall tpch.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$p ]
Field=p_container
@@ -172,7 +172,7 @@
LiteralExpr [LONG] [10]
]
and
- FunctionCall tpch.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$l ]
Field=l_shipmode
@@ -200,7 +200,7 @@
LiteralExpr [STRING] [Brand#34]
]
and
- FunctionCall tpch.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$p ]
Field=p_container
@@ -244,7 +244,7 @@
LiteralExpr [LONG] [15]
]
and
- FunctionCall tpch.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$l ]
Field=l_shipmode
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast
index 4b1fa29..06a76d7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast
@@ -11,7 +11,7 @@
(
LiteralExpr [STRING] [count_suppkey]
:
- FunctionCall asterix.count@1[
+ FunctionCall tpch.strict_count@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -38,7 +38,7 @@
(
LiteralExpr [STRING] [max_suppkey]
:
- FunctionCall asterix.max@1[
+ FunctionCall tpch.strict_max@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -123,7 +123,7 @@
(
LiteralExpr [STRING] [count_suppkey]
:
- FunctionCall asterix.count@1[
+ FunctionCall tpch.strict_count@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -150,7 +150,7 @@
(
LiteralExpr [STRING] [max_suppkey]
:
- FunctionCall asterix.max@1[
+ FunctionCall tpch.strict_max@1[
(
SELECT ELEMENT [
FieldAccessor [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast
index 7474a00..4df5c9e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast
@@ -22,7 +22,7 @@
(
LiteralExpr [STRING] [cntrycode]
:
- FunctionCall tpch.substring@3[
+ FunctionCall tpch.SUBSTR@3[
FieldAccessor [
Variable [ Name=$c ]
Field=c_phone
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue638/query-issue638.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue638/query-issue638.3.ast
index 7dd2855..0f2d9c4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue638/query-issue638.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch-sql-like/query-issue638/query-issue638.3.ast
@@ -344,7 +344,7 @@
]
Where
OperatorExpr [
- FunctionCall tpch.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$p ]
Field=p_name
@@ -400,7 +400,7 @@
]
Let Variable [ Name=$o_year ]
:=
- FunctionCall tpch.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
Variable [ Name=$o ]
Field=o_orderdate
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast
index 162701b..e715133 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q02_minimum_cost_supplier/q02_minimum_cost_supplier.3.ast
@@ -337,7 +337,7 @@
(
LiteralExpr [STRING] [ps_min_supplycost]
:
- FunctionCall asterix.min@1[
+ FunctionCall tpch.STRICT_MIN@1[
(
SELECT ELEMENT [
FieldAccessor [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q07_volume_shipping/q07_volume_shipping.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q07_volume_shipping/q07_volume_shipping.3.ast
index 4de6f4e..1d4ed44 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q07_volume_shipping/q07_volume_shipping.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q07_volume_shipping/q07_volume_shipping.3.ast
@@ -317,7 +317,7 @@
]
Let Variable [ Name=$l_year0 ]
:=
- FunctionCall tpch.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
Variable [ Name=$locs ]
Field=l_shipdate
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q08_national_market_share/q08_national_market_share.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q08_national_market_share/q08_national_market_share.3.ast
index 979a913..26016cc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q08_national_market_share/q08_national_market_share.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q08_national_market_share/q08_national_market_share.3.ast
@@ -464,7 +464,7 @@
]
Let Variable [ Name=$o_year ]
:=
- FunctionCall tpch.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
Variable [ Name=$slnrcop ]
Field=o_orderdate
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast
index 6d23830..a2db84b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q09_product_type_profit_nt/q09_product_type_profit_nt.3.ast
@@ -350,7 +350,7 @@
AS Variable [ Name=$l2 ]
ON
OperatorExpr [
- FunctionCall tpch.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$p ]
Field=p_name
@@ -407,7 +407,7 @@
]
Let Variable [ Name=$o_year ]
:=
- FunctionCall tpch.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
Variable [ Name=$o ]
Field=o_orderdate
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q15_top_supplier/q15_top_supplier.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q15_top_supplier/q15_top_supplier.3.ast
index 8ae41ce..872bfc4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q15_top_supplier/q15_top_supplier.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q15_top_supplier/q15_top_supplier.3.ast
@@ -11,7 +11,7 @@
(
LiteralExpr [STRING] [total_revenue]
:
- FunctionCall asterix.sum@1[
+ FunctionCall tpch.STRICT_SUM@1[
(
SELECT ELEMENT [
OperatorExpr [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q19_discounted_revenue/q19_discounted_revenue.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q19_discounted_revenue/q19_discounted_revenue.3.ast
index 3314c43..0ceadd4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q19_discounted_revenue/q19_discounted_revenue.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q19_discounted_revenue/q19_discounted_revenue.3.ast
@@ -56,7 +56,7 @@
LiteralExpr [STRING] [Brand#12]
]
and
- FunctionCall tpch.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$p ]
Field=p_container
@@ -100,7 +100,7 @@
LiteralExpr [LONG] [5]
]
and
- FunctionCall tpch.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$l ]
Field=l_shipmode
@@ -128,7 +128,7 @@
LiteralExpr [STRING] [Brand#23]
]
and
- FunctionCall tpch.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$p ]
Field=p_container
@@ -172,7 +172,7 @@
LiteralExpr [LONG] [10]
]
and
- FunctionCall tpch.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$l ]
Field=l_shipmode
@@ -200,7 +200,7 @@
LiteralExpr [STRING] [Brand#34]
]
and
- FunctionCall tpch.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$p ]
Field=p_container
@@ -244,7 +244,7 @@
LiteralExpr [LONG] [15]
]
and
- FunctionCall tpch.matches@2[
+ FunctionCall asterix.matches@2[
FieldAccessor [
Variable [ Name=$l ]
Field=l_shipmode
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast
index 4b1fa29..06a76d7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q21_suppliers_who_kept_orders_waiting/q21_suppliers_who_kept_orders_waiting.3.ast
@@ -11,7 +11,7 @@
(
LiteralExpr [STRING] [count_suppkey]
:
- FunctionCall asterix.count@1[
+ FunctionCall tpch.strict_count@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -38,7 +38,7 @@
(
LiteralExpr [STRING] [max_suppkey]
:
- FunctionCall asterix.max@1[
+ FunctionCall tpch.strict_max@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -123,7 +123,7 @@
(
LiteralExpr [STRING] [count_suppkey]
:
- FunctionCall asterix.count@1[
+ FunctionCall tpch.strict_count@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -150,7 +150,7 @@
(
LiteralExpr [STRING] [max_suppkey]
:
- FunctionCall asterix.max@1[
+ FunctionCall tpch.strict_max@1[
(
SELECT ELEMENT [
FieldAccessor [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast
index 7474a00..4df5c9e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/q22_global_sales_opportunity/q22_global_sales_opportunity.3.ast
@@ -22,7 +22,7 @@
(
LiteralExpr [STRING] [cntrycode]
:
- FunctionCall tpch.substring@3[
+ FunctionCall tpch.SUBSTR@3[
FieldAccessor [
Variable [ Name=$c ]
Field=c_phone
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue562/query-issue562.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue562/query-issue562.3.ast
index 6dce02e..7fd66dd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue562/query-issue562.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue562/query-issue562.3.ast
@@ -104,7 +104,7 @@
]
Let Variable [ Name=$phone_substr ]
:=
- FunctionCall tpch.substring@3[
+ FunctionCall asterix.substring@3[
FieldAccessor [
Variable [ Name=$c ]
Field=c_phone
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue638/query-issue638.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue638/query-issue638.3.ast
index 7dd2855..0f2d9c4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue638/query-issue638.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/tpch/query-issue638/query-issue638.3.ast
@@ -344,7 +344,7 @@
]
Where
OperatorExpr [
- FunctionCall tpch.contains@2[
+ FunctionCall asterix.contains@2[
FieldAccessor [
Variable [ Name=$p ]
Field=p_name
@@ -400,7 +400,7 @@
]
Let Variable [ Name=$o_year ]
:=
- FunctionCall tpch.get-year@1[
+ FunctionCall asterix.get-year@1[
FieldAccessor [
Variable [ Name=$o ]
Field=o_orderdate
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_01/promotion_closedtype_field_vs_constant_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_01/promotion_closedtype_field_vs_constant_01.3.ast
index fe649d3..6ff3869 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_01/promotion_closedtype_field_vs_constant_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_01/promotion_closedtype_field_vs_constant_01.3.ast
@@ -32,7 +32,7 @@
Field=age
]
=
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_02/promotion_closedtype_field_vs_constant_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_02/promotion_closedtype_field_vs_constant_02.3.ast
index 50c76b7..26b7b66 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_02/promotion_closedtype_field_vs_constant_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_02/promotion_closedtype_field_vs_constant_02.3.ast
@@ -32,7 +32,7 @@
Field=age
]
=
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_03/promotion_closedtype_field_vs_constant_03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_03/promotion_closedtype_field_vs_constant_03.3.ast
index eccf7e9..85759ec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_03/promotion_closedtype_field_vs_constant_03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_03/promotion_closedtype_field_vs_constant_03.3.ast
@@ -32,7 +32,7 @@
Field=age
]
=
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_04/promotion_closedtype_field_vs_constant_04.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_04/promotion_closedtype_field_vs_constant_04.3.ast
index 2c542a9..8dcc843 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_04/promotion_closedtype_field_vs_constant_04.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_04/promotion_closedtype_field_vs_constant_04.3.ast
@@ -32,7 +32,7 @@
Field=age
]
=
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_05/promotion_closedtype_field_vs_constant_05.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_05/promotion_closedtype_field_vs_constant_05.3.ast
index 22095c4..73fa45b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_05/promotion_closedtype_field_vs_constant_05.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_05/promotion_closedtype_field_vs_constant_05.3.ast
@@ -32,7 +32,7 @@
Field=age
]
=
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_06/promotion_closedtype_field_vs_constant_06.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_06/promotion_closedtype_field_vs_constant_06.3.ast
index 2c542a9..8dcc843 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_06/promotion_closedtype_field_vs_constant_06.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_06/promotion_closedtype_field_vs_constant_06.3.ast
@@ -32,7 +32,7 @@
Field=age
]
=
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_07/promotion_closedtype_field_vs_constant_07.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_07/promotion_closedtype_field_vs_constant_07.3.ast
index 8245e3f..8e6b404 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_07/promotion_closedtype_field_vs_constant_07.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_07/promotion_closedtype_field_vs_constant_07.3.ast
@@ -32,7 +32,7 @@
Field=worksince
]
=
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [2001]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_08/promotion_closedtype_field_vs_constant_08.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_08/promotion_closedtype_field_vs_constant_08.3.ast
index 41f6c6c..47a8bd9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_08/promotion_closedtype_field_vs_constant_08.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_08/promotion_closedtype_field_vs_constant_08.3.ast
@@ -32,7 +32,7 @@
Field=worksince
]
=
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [2001]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_09/promotion_closedtype_field_vs_constant_09.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_09/promotion_closedtype_field_vs_constant_09.3.ast
index 09dbd79..bef4e53 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_09/promotion_closedtype_field_vs_constant_09.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_09/promotion_closedtype_field_vs_constant_09.3.ast
@@ -32,7 +32,7 @@
Field=worksince
]
=
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [2001]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_10/promotion_closedtype_field_vs_constant_10.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_10/promotion_closedtype_field_vs_constant_10.3.ast
index 1c1aa07..f4ce0de 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_10/promotion_closedtype_field_vs_constant_10.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_10/promotion_closedtype_field_vs_constant_10.3.ast
@@ -32,7 +32,7 @@
Field=worksince
]
=
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [2001]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_11/promotion_closedtype_field_vs_constant_11.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_11/promotion_closedtype_field_vs_constant_11.3.ast
index dbbce3a..2c8499a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_11/promotion_closedtype_field_vs_constant_11.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_closedtype_field_vs_constant_11/promotion_closedtype_field_vs_constant_11.3.ast
@@ -32,7 +32,7 @@
Field=worksince
]
=
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [2001]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_01/promotion_opentype_field_vs_constant_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_01/promotion_opentype_field_vs_constant_01.3.ast
index d3f9a59..4b7c66e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_01/promotion_opentype_field_vs_constant_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_01/promotion_opentype_field_vs_constant_01.3.ast
@@ -32,7 +32,7 @@
Field=supvrid
]
=
- FunctionCall test.int8@1[
+ FunctionCall asterix.int8@1[
LiteralExpr [STRING] [1]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_02/promotion_opentype_field_vs_constant_02.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_02/promotion_opentype_field_vs_constant_02.3.ast
index 02a69df..3612d89 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_02/promotion_opentype_field_vs_constant_02.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_02/promotion_opentype_field_vs_constant_02.3.ast
@@ -32,7 +32,7 @@
Field=supvrid
]
=
- FunctionCall test.int16@1[
+ FunctionCall asterix.int16@1[
LiteralExpr [STRING] [1]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_03/promotion_opentype_field_vs_constant_03.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_03/promotion_opentype_field_vs_constant_03.3.ast
index d2fddef..8a2016e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_03/promotion_opentype_field_vs_constant_03.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_03/promotion_opentype_field_vs_constant_03.3.ast
@@ -32,7 +32,7 @@
Field=supvrid
]
=
- FunctionCall test.int32@1[
+ FunctionCall asterix.int32@1[
LiteralExpr [STRING] [1]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_04/promotion_opentype_field_vs_constant_04.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_04/promotion_opentype_field_vs_constant_04.3.ast
index f0a7742..b74cf5c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_04/promotion_opentype_field_vs_constant_04.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_04/promotion_opentype_field_vs_constant_04.3.ast
@@ -32,7 +32,7 @@
Field=supvrid
]
=
- FunctionCall test.int64@1[
+ FunctionCall asterix.int64@1[
LiteralExpr [STRING] [1]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_05/promotion_opentype_field_vs_constant_05.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_05/promotion_opentype_field_vs_constant_05.3.ast
index dfbe5db..9c049be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_05/promotion_opentype_field_vs_constant_05.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_05/promotion_opentype_field_vs_constant_05.3.ast
@@ -32,7 +32,7 @@
Field=supvrid
]
=
- FunctionCall test.float@1[
+ FunctionCall asterix.float@1[
LiteralExpr [STRING] [1.0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_06/promotion_opentype_field_vs_constant_06.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_06/promotion_opentype_field_vs_constant_06.3.ast
index 38e4915..a616718 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_06/promotion_opentype_field_vs_constant_06.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_06/promotion_opentype_field_vs_constant_06.3.ast
@@ -32,7 +32,7 @@
Field=supvrid
]
=
- FunctionCall test.double@1[
+ FunctionCall asterix.double@1[
LiteralExpr [STRING] [1.0]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_08/promotion_opentype_field_vs_constant_08.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_08/promotion_opentype_field_vs_constant_08.3.ast
index b6ab37e..ddc32ca 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_08/promotion_opentype_field_vs_constant_08.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/types/promotion_opentype_field_vs_constant_08/promotion_opentype_field_vs_constant_08.3.ast
@@ -32,7 +32,7 @@
Field=supvrid
]
=
- FunctionCall test.point@1[
+ FunctionCall asterix.point@1[
LiteralExpr [STRING] [80.10d, -10E5]
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/f01/f01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/f01/f01.3.ast
index 0b153e1..9245cca 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/f01/f01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/f01/f01.3.ast
@@ -1,4 +1,4 @@
DataverseUse test
Query:
-FunctionCall test.tinyint@0[
+FunctionCall asterix.tinyint@0[
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/invoke-private-function/invoke-private-function.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/invoke-private-function/invoke-private-function.3.ast
index 259fce4..3808e5e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/invoke-private-function/invoke-private-function.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/invoke-private-function/invoke-private-function.3.ast
@@ -91,35 +91,35 @@
Let Variable [ Name=$results ]
:=
OrderedListConstructor [
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$a ]
Variable [ Name=$b ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$b ]
Variable [ Name=$a ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$c ]
Variable [ Name=$d ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$d ]
Variable [ Name=$c ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$e ]
Variable [ Name=$f ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$f ]
Variable [ Name=$e ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$g ]
Variable [ Name=$h ]
]
- FunctionCall test.similarity-jaccard@2[
+ FunctionCall asterix.similarity-jaccard@2[
Variable [ Name=$h ]
Variable [ Name=$g ]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/query-issue172/query-issue172.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/query-issue172/query-issue172.3.ast
index 0246049..0b6182d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/query-issue172/query-issue172.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/query-issue172/query-issue172.3.ast
@@ -1,6 +1,6 @@
Query:
-FunctionCall null.string-length@1[
- FunctionCall null.string-concat@1[
+FunctionCall asterix.string-length@1[
+ FunctionCall asterix.string-concat@1[
OrderedListConstructor [
LiteralExpr [STRING] [this is a ]
LiteralExpr [STRING] [test string]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/query-issue201/query-issue201.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/query-issue201/query-issue201.3.ast
index 5560bd3..3ab1947 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/query-issue201/query-issue201.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/query-issue201/query-issue201.3.ast
@@ -2,7 +2,7 @@
Query:
Let Variable [ Name=$x ]
:=
- FunctionCall null.range@2[
+ FunctionCall asterix.range@2[
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [100]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/udf16/udf16.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/udf16/udf16.3.ast
index e095df3..61af8ef 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/udf16/udf16.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/user-defined-functions/udf16/udf16.3.ast
@@ -1,6 +1,6 @@
DataverseUse test
Query:
-FunctionCall test.string-length@1[
+FunctionCall asterix.string-length@1[
FunctionCall test.fn02@0[
]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.3.ast
index 528b379..86cd5b1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.3.ast
@@ -14,12 +14,12 @@
(
SELECT ELEMENT [
FieldAccessor [
- Variable [ Name=#2 ]
+ Variable [ Name=#4 ]
Field=rank_result_delta
]
]
FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#2 ]
+ AS Variable [ Name=#4 ]
]
)
]
@@ -28,12 +28,12 @@
(
SELECT ELEMENT [
FieldAccessor [
- Variable [ Name=#3 ]
+ Variable [ Name=#5 ]
Field=rank_result_delta
]
]
FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#3 ]
+ AS Variable [ Name=#5 ]
]
)
]
@@ -42,12 +42,12 @@
(
SELECT ELEMENT [
FieldAccessor [
- Variable [ Name=#4 ]
+ Variable [ Name=#6 ]
Field=percent_rank_result_delta
]
]
FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#4 ]
+ AS Variable [ Name=#6 ]
]
)
]
@@ -56,12 +56,12 @@
(
SELECT ELEMENT [
FieldAccessor [
- Variable [ Name=#5 ]
+ Variable [ Name=#7 ]
Field=percent_rank_result_delta
]
]
FROM [ Variable [ Name=#1 ]
- AS Variable [ Name=#5 ]
+ AS Variable [ Name=#7 ]
]
)
]
@@ -72,7 +72,7 @@
]
AS Variable [ Name=$t1 ]
,
- FunctionCall test.range@2[
+ FunctionCall asterix.range@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=one
@@ -81,7 +81,7 @@
]
AS Variable [ Name=$p ]
,
- FunctionCall test.range@2[
+ FunctionCall asterix.range@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=one
@@ -90,7 +90,7 @@
]
AS Variable [ Name=$n ]
,
- FunctionCall test.range@2[
+ FunctionCall asterix.range@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=one
@@ -116,8 +116,16 @@
]
Let Variable [ Name=$rank_result_actual ]
:=
- WINDOW test.rank@0[
+ WINDOW asterix.rank-impl[
]
+ AS Variable [ Name=#2 ]
+ (
+ t1:=Variable [ Name=$t1 ]
+ p:=Variable [ Name=$p ]
+ n:=Variable [ Name=$n ]
+ d:=Variable [ Name=$d ]
+ rank_result_expected:=Variable [ Name=$rank_result_expected ]
+ )
OVER (
PARTITION BY
FieldAccessor [
@@ -157,8 +165,19 @@
]
Let Variable [ Name=$percent_rank_result_actual ]
:=
- WINDOW test.percent_rank@0[
+ WINDOW asterix.percent-rank-impl[
]
+ AS Variable [ Name=#3 ]
+ (
+ t1:=Variable [ Name=$t1 ]
+ p:=Variable [ Name=$p ]
+ n:=Variable [ Name=$n ]
+ d:=Variable [ Name=$d ]
+ rank_result_expected:=Variable [ Name=$rank_result_expected ]
+ rank_result_actual:=Variable [ Name=$rank_result_actual ]
+ rank_result_delta:=Variable [ Name=$rank_result_delta ]
+ percent_rank_result_expected:=Variable [ Name=$percent_rank_result_expected ]
+ )
OVER (
PARTITION BY
FieldAccessor [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.4.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.4.ast
index 7330fe9..1bb139c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.4.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.4.ast
@@ -6,8 +6,14 @@
SELECT [
Variable [ Name=$p ]
p
-WINDOW test.row_number@0[
+WINDOW asterix.row-number-impl@0[
]
+ AS Variable [ Name=#2 ]
+ (
+ p:=Variable [ Name=$p ]
+ p:=Variable [ Name=$p ]
+ #1:=Variable [ Name=#1 ]
+ )
OVER (
ORDER BY
Variable [ Name=$p ]
@@ -20,7 +26,7 @@
]
AS Variable [ Name=$t1 ]
,
- FunctionCall test.range@2[
+ FunctionCall asterix.range@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=one
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.5.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.5.ast
index cfad0ae..b8a9f3c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.5.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.5.ast
@@ -16,8 +16,12 @@
Field=c1
]
c1
- WINDOW test.row_number@0[
+ WINDOW asterix.row-number-impl@0[
]
+ AS Variable [ Name=#1 ]
+ (
+ g:=Variable [ Name=$g ]
+ )
OVER (
ORDER BY
FieldAccessor [
@@ -52,7 +56,7 @@
]
AS Variable [ Name=$t1 ]
,
- FunctionCall test.range@2[
+ FunctionCall asterix.range@2[
FieldAccessor [
Variable [ Name=$t1 ]
Field=one
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.6.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.6.ast
index b9f6792..094fbd4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.6.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.6.ast
@@ -6,7 +6,7 @@
Field=c1
]
c1
-WINDOW test.array_sum@1[
+WINDOW asterix.sql-sum@1[
(
SELECT ELEMENT [
FieldAccessor [
@@ -23,6 +23,9 @@
)
]
AS Variable [ Name=$w ]
+ (
+ t1:=Variable [ Name=$t1 ]
+ )
OVER (
PARTITION BY
OperatorExpr [
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.7.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.7.ast
index 2271af5..4aed6da 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.7.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.7.ast
@@ -4,13 +4,26 @@
m
Variable [ Name=$t ]
t
-WINDOW null.sum@1[
- OperatorExpr [
- Variable [ Name=$t ]
- mod
- LiteralExpr [LONG] [4]
- ]
+WINDOW asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=#5 ]
+ Field=#2
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#5 ]
+ ]
+ )
]
+ AS Variable [ Name=#1 ]
+ (
+ t:=Variable [ Name=$t ]
+ m:=Variable [ Name=$m ]
+ #2:=Variable [ Name=#2 ]
+ #4:=Variable [ Name=#4 ]
+ )
OVER (
PARTITION BY
Variable [ Name=$m ]
@@ -20,13 +33,26 @@
rows between unbounded preceding and current row exclude no others
)
sum
-WINDOW null.sum-distinct@1[
- OperatorExpr [
- Variable [ Name=$t ]
- mod
- LiteralExpr [LONG] [4]
- ]
+WINDOW asterix.sql-sum-distinct@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=#6 ]
+ Field=#4
+ ]
+ ]
+ FROM [ Variable [ Name=#3 ]
+ AS Variable [ Name=#6 ]
+ ]
+ )
]
+ AS Variable [ Name=#3 ]
+ (
+ t:=Variable [ Name=$t ]
+ m:=Variable [ Name=$m ]
+ #2:=Variable [ Name=#2 ]
+ #4:=Variable [ Name=#4 ]
+ )
OVER (
PARTITION BY
Variable [ Name=$m ]
@@ -37,7 +63,7 @@
)
sum_distinct
]
-FROM [ FunctionCall null.range@2[
+FROM [ FunctionCall asterix.range@2[
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [20]
]
@@ -50,6 +76,20 @@
mod
LiteralExpr [LONG] [4]
]
+Let Variable [ Name=#2 ]
+ :=
+ OperatorExpr [
+ Variable [ Name=$t ]
+ mod
+ LiteralExpr [LONG] [4]
+ ]
+Let Variable [ Name=#4 ]
+ :=
+ OperatorExpr [
+ Variable [ Name=$t ]
+ mod
+ LiteralExpr [LONG] [4]
+ ]
Orderby
Variable [ Name=$m ]
ASC
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.8.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.8.ast
index 6204b11..115334b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.8.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.8.ast
@@ -2,19 +2,22 @@
SELECT [
Variable [ Name=$x ]
x
-WINDOW null.array_sum@1[
- FunctionCall null.to-array@1[
+WINDOW asterix.sql-sum@1[
+ FunctionCall asterix.to-array@1[
FunctionCall asterix.sql-count@1[
Variable [ Name=$w ]
]
]
]
AS Variable [ Name=$w ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
sum
]
-FROM [ FunctionCall null.range@2[
+FROM [ FunctionCall asterix.range@2[
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [4]
]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.9.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.9.ast
index ebedcaa..b3b78f0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.9.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/window/misc_01/misc_01.9.ast
@@ -2,7 +2,7 @@
SELECT ELEMENT [
Variable [ Name=$x ]
]
-FROM [ FunctionCall null.range@2[
+FROM [ FunctionCall asterix.range@2[
LiteralExpr [LONG] [1]
LiteralExpr [LONG] [10]
]
@@ -11,8 +11,8 @@
Where
OperatorExpr [
OperatorExpr [
- FunctionCall null.to-bigint@1[
- FunctionCall null.to-double@1[
+ FunctionCall asterix.to-bigint@1[
+ FunctionCall asterix.to-double@1[
Variable [ Name=$x ]
]
]
@@ -21,9 +21,23 @@
]
and
OperatorExpr [
- WINDOW null.sum@1[
- Variable [ Name=$x ]
+ WINDOW asterix.sql-sum@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=#3 ]
+ Field=x
+ ]
+ ]
+ FROM [ Variable [ Name=#1 ]
+ AS Variable [ Name=#3 ]
+ ]
+ )
]
+ AS Variable [ Name=#1 ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
=
@@ -37,12 +51,26 @@
]
and
OperatorExpr [
- WINDOW null.count@1[
- Variable [ Name=$x ]
+ WINDOW asterix.sql-count@1[
+ (
+ SELECT ELEMENT [
+ FieldAccessor [
+ Variable [ Name=#4 ]
+ Field=x
+ ]
+ ]
+ FROM [ Variable [ Name=#2 ]
+ AS Variable [ Name=#4 ]
+ ]
+ )
]
+ AS Variable [ Name=#2 ]
+ (
+ x:=Variable [ Name=$x ]
+ )
OVER (
)
=
LiteralExpr [LONG] [10]
]
- ]
\ No newline at end of file
+ ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
index 924fd37..35afe28 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -464,7 +464,7 @@
<test-case FilePath="fuzzyjoin">
<compilation-unit name="dblp-aqlplus_2">
<output-dir compare="Text">dblp-aqlplus_2</output-dir>
- <expected-error>Type mismatch: expected value of type array or multiset, but got the value of type string</expected-error>
+ <expected-error>ASX0002: Type mismatch: function similarity-jaccard expects its 1st input parameter to be of type array or multiset, but the actual input type is string</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="fuzzyjoin">
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset.xml
index ad17afe..3a4f03e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset.xml
@@ -232,7 +232,16 @@
<test-case FilePath="external-dataset">
<compilation-unit name="aws/s3/include-exclude/include-10">
<output-dir compare="Text">aws/s3/include-exclude/include-10</output-dir>
- <expected-error>Invalid pattern *[abc][.*</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset">
+ <compilation-unit name="aws/s3/include-exclude/include-11">
+ <output-dir compare="Text">aws/s3/include-exclude/include-11</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset">
+ <compilation-unit name="aws/s3/include-exclude/include-12">
+ <output-dir compare="Text">aws/s3/include-exclude/include-12</output-dir>
</compilation-unit>
</test-case>
</test-group>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_python.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_python.xml
index 6d03162..e4669da 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_python.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_python.xml
@@ -22,7 +22,6 @@
ResultOffsetPath="results"
QueryOffsetPath="queries_sqlpp"
QueryFileExtension=".sqlpp">
-
<test-group name="external-library-python">
<test-case FilePath="external-library">
<compilation-unit name="mysentiment">
@@ -32,7 +31,18 @@
<test-case FilePath="external-library">
<compilation-unit name="python-fn-escape">
<output-dir compare="Text">python-fn-escape</output-dir>
- <expected-error>'NoneType' object is not callable</expected-error>
+ <expected-error>ImportError: Module was not found in library</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-library">
+ <compilation-unit name="py_nested_access">
+ <output-dir compare="Clean-JSON">py_nested_access</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-library" check-warnings="true">
+ <compilation-unit name="py_function_error">
+ <output-dir compare="Clean-JSON">py_function_error</output-dir>
+ <expected-warn>ASX0201: External UDF returned exception. Returned exception was: ArithmeticError: oof</expected-warn>
</compilation-unit>
</test-case>
</test-group>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml
index 156d5a0..ea5d279 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml
@@ -24,6 +24,11 @@
<test-group name="external-library">
<test-case FilePath="external-library">
+ <compilation-unit name="create-or-replace-function-1">
+ <output-dir compare="Text">create-or-replace-function-1</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-library">
<compilation-unit name="type_validation">
<output-dir compare="Text">type_validation</output-dir>
</compilation-unit>
@@ -46,7 +51,7 @@
<test-case FilePath="external-library">
<compilation-unit name="mysum_dropinuse">
<output-dir compare="Text">mysum_dropinuse</output-dir>
- <expected-error>Cannot drop library externallibtest.testlib being used by funciton externallibtest.mysum@2</expected-error>
+ <expected-error>Cannot drop library externallibtest.testlib being used by funciton externallibtest.mysum(2)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="external-library">
@@ -79,11 +84,6 @@
<output-dir compare="Text">deterministic</output-dir>
</compilation-unit>
</test-case>
- <test-case FilePath="feeds">
- <compilation-unit name="feed-with-external-function">
- <output-dir compare="Text">feed-with-external-function</output-dir>
- </compilation-unit>
- </test-case>
<test-case FilePath="external-library">
<compilation-unit name="return_invalid_type">
<output-dir compare="Text">getCapital</output-dir>
@@ -107,5 +107,10 @@
<output-dir compare="Text">feed-with-external-adapter</output-dir>
</compilation-unit>
</test-case>
+ <test-case FilePath="feeds">
+ <compilation-unit name="feed-with-external-adapter-cross-dv">
+ <output-dir compare="Text">feed-with-external-adapter-cross-dv</output-dir>
+ </compilation-unit>
+ </test-case>
</test-group>
</test-suite>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 4b2a209..883a9e3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -2843,7 +2843,7 @@
<test-case FilePath="aggregate-sql-sugar">
<compilation-unit name="array_agg_negative">
<output-dir compare="Text">array_agg</output-dir>
- <expected-error>ASX1079: Compilation error: array_agg is a SQL-92 aggregate function. The SQL++ core aggregate function strict_arrayagg could potentially express the intent.</expected-error>
+ <expected-error>ASX1079: Compilation error: arrayagg is a SQL-92 aggregate function. The SQL++ core aggregate function strict_arrayagg could potentially express the intent.</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="aggregate-sql-sugar">
@@ -3013,7 +3013,7 @@
<test-case FilePath="array_fun">
<compilation-unit name="array_slice/array_slice_exception_result">
<output-dir compare="Text">array_slice/array_slice_exception_result</output-dir>
- <expected-error>Compilation error</expected-error>
+ <expected-error>ASX1081: Cannot find function with name TinySocial.array_slice</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="array_fun">
@@ -3967,6 +3967,11 @@
<expected-error>Syntax error: In line 53 >>create primary index if exists sec_primary_idx1 on LineItem;<< Encountered "exists" at column 26.</expected-error>
</compilation-unit>
</test-case>
+ <test-case FilePath="ddl/create-index">
+ <compilation-unit name="create-inverted-index-with-variable-length-primary-key">
+ <output-dir compare="Text">create-inverted-index-with-variable-length-primary-key</output-dir>
+ </compilation-unit>
+ </test-case>
<test-case FilePath="ddl">
<compilation-unit name="bad-type-ddl">
<output-dir compare="Text">none</output-dir>
@@ -4010,6 +4015,11 @@
<output-dir compare="Text">dataset-and-index-same-dataverse</output-dir>
</compilation-unit>
</test-case>
+ <test-case FilePath="ddl">
+ <compilation-unit name="create_dataset_with_filter_on_meta">
+ <output-dir compare="Text">create_dataset_with_filter_on_meta</output-dir>
+ </compilation-unit>
+ </test-case>
</test-group>
<test-group name="dml">
<test-case FilePath="dml">
@@ -4525,6 +4535,12 @@
</compilation-unit>
</test-case>
<test-case FilePath="dml">
+ <compilation-unit name="scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key">
+ <output-dir compare="Text">scan-insert-inverted-index-ngram-secondary-index-string-as-primary-key</output-dir>
+ </compilation-unit>
+ </test-case>
+
+ <test-case FilePath="dml">
<compilation-unit name="scan-insert-inverted-index-ngram-correlated-secondary-index">
<output-dir compare="Text">scan-insert-inverted-index-ngram-secondary-index</output-dir>
</compilation-unit>
@@ -4535,26 +4551,51 @@
</compilation-unit>
</test-case>
<test-case FilePath="dml">
+ <compilation-unit name="scan-insert-inverted-index-word-secondary-index-string-as-primary-key">
+ <output-dir compare="Text">scan-insert-inverted-index-word-secondary-index-string-as-primary-key</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="dml">
<compilation-unit name="scan-insert-inverted-index-word-correlated-secondary-index">
<output-dir compare="Text">scan-insert-inverted-index-word-secondary-index</output-dir>
</compilation-unit>
</test-case>
<test-case FilePath="dml">
+ <compilation-unit name="scan-insert-inverted-index-word-correlated-secondary-index-string-as-primary-key">
+ <output-dir compare="Text">scan-insert-inverted-index-word-secondary-index-string-as-primary-key</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="dml">
<compilation-unit name="scan-insert-inverted-index-ngram-secondary-index-nullable">
<output-dir compare="Text">scan-insert-inverted-index-ngram-secondary-index-nullable</output-dir>
</compilation-unit>
</test-case>
<test-case FilePath="dml">
+ <compilation-unit name="scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key">
+ <output-dir compare="Text">scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="dml">
<compilation-unit name="scan-insert-inverted-index-ngram-correlated-secondary-index-nullable">
<output-dir compare="Text">scan-insert-inverted-index-ngram-secondary-index-nullable</output-dir>
</compilation-unit>
</test-case>
<test-case FilePath="dml">
+ <compilation-unit name="scan-insert-inverted-index-ngram-correlated-secondary-index-nullable-string-as-primary-key">
+ <output-dir compare="Text">scan-insert-inverted-index-ngram-secondary-index-nullable-string-as-primary-key</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="dml">
<compilation-unit name="scan-insert-inverted-index-word-secondary-index-nullable">
<output-dir compare="Text">scan-insert-inverted-index-word-secondary-index-nullable</output-dir>
</compilation-unit>
</test-case>
<test-case FilePath="dml">
+ <compilation-unit name="scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key">
+ <output-dir compare="Text">scan-insert-inverted-index-word-secondary-index-nullable-string-as-primary-key</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="dml">
<compilation-unit name="scan-insert-inverted-index-word-correlated-secondary-index-nullable">
<output-dir compare="Text">scan-insert-inverted-index-word-secondary-index-nullable</output-dir>
</compilation-unit>
@@ -4565,6 +4606,11 @@
</compilation-unit>
</test-case>
<test-case FilePath="dml">
+ <compilation-unit name="scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key">
+ <output-dir compare="Text">scan-delete-inverted-index-ngram-secondary-index-string-as-primary-key</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="dml">
<compilation-unit name="scan-delete-inverted-index-ngram-correlated-secondary-index">
<output-dir compare="Text">scan-delete-inverted-index-ngram-secondary-index</output-dir>
</compilation-unit>
@@ -4837,6 +4883,11 @@
<output-dir compare="Text">basic-1_1_3</output-dir>
</compilation-unit>
</test-case>
+ <test-case FilePath="fuzzyjoin">
+ <compilation-unit name="dblp-string-as-primary-key">
+ <output-dir compare="Text">dblp-string-as-primary-key</output-dir>
+ </compilation-unit>
+ </test-case>
</test-group>
<!--
<test-group name="flwor">
@@ -5393,7 +5444,7 @@
<test-case FilePath="global-aggregate">
<compilation-unit name="q07_error">
<output-dir compare="Text">q01</output-dir>
- <expected-error>COUNT is a SQL-92 aggregate function. The SQL++ core aggregate function array_count could potentially express the intent.</expected-error>
+ <expected-error>count is a SQL-92 aggregate function. The SQL++ core aggregate function array_count could potentially express the intent.</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="global-aggregate">
@@ -5602,16 +5653,6 @@
</compilation-unit>
</test-case>
<test-case FilePath="group-by">
- <compilation-unit name="gby-expr-2">
- <output-dir compare="Text">gby-expr-2</output-dir>
- </compilation-unit>
- </test-case>
- <test-case FilePath="group-by">
- <compilation-unit name="gby-expr-3">
- <output-dir compare="Text">gby-expr-3</output-dir>
- </compilation-unit>
- </test-case>
- <test-case FilePath="group-by">
<compilation-unit name="grouping-sets-1">
<output-dir compare="Text">grouping-sets-1</output-dir>
</compilation-unit>
@@ -5632,6 +5673,7 @@
<expected-error>ASX1119: Invalid argument to grouping() function</expected-error>
<expected-error>ASX1119: Invalid argument to grouping() function</expected-error>
<expected-error>ASX1118: Too many grouping sets in group by clause: 512. Maximum allowed: 128.</expected-error>
+ <expected-error>ASX1129: Cannot compile SELECT variable.* with GROUP BY GROUPING SETS/ROLLUP/CUBE followed by ORDER BY/LIMIT</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="group-by">
@@ -6192,6 +6234,11 @@
<output-dir compare="Text">hash_join_record</output-dir>
</compilation-unit>
</test-case>
+ <test-case FilePath="join">
+ <compilation-unit name="join-with-empty-dataset">
+ <output-dir compare="Text">join-with-empty-dataset</output-dir>
+ </compilation-unit>
+ </test-case>
</test-group>
<test-group name="list">
<test-case FilePath="list">
@@ -6260,6 +6307,11 @@
</compilation-unit>
</test-case>
<test-case FilePath="list">
+ <compilation-unit name="list-star_01">
+ <output-dir compare="Text">list-star_01</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="list">
<compilation-unit name="listify_01">
<output-dir compare="Text">listify_01</output-dir>
</compilation-unit>
@@ -6766,6 +6818,11 @@
</compilation-unit>
</test-case>
<test-case FilePath="multipart-dataverse">
+ <compilation-unit name="special_chars_2">
+ <output-dir compare="Text">special_chars_2</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="multipart-dataverse">
<compilation-unit name="udf_1">
<output-dir compare="Text">udf_1</output-dir>
</compilation-unit>
@@ -9158,6 +9215,11 @@
</test-group>
<test-group name="statement-params">
<test-case FilePath="statement-params">
+ <compilation-unit name="index_01">
+ <output-dir compare="Text">index_01</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="statement-params">
<compilation-unit name="mixed_01">
<output-dir compare="Text">mixed_01</output-dir>
</compilation-unit>
@@ -9391,6 +9453,11 @@
</compilation-unit>
</test-case>
<test-case FilePath="string">
+ <compilation-unit name="length_multi_code_point_01">
+ <output-dir compare="Text">length_multi_code_point_01</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="string">
<compilation-unit name="like_01">
<output-dir compare="Text">like_01</output-dir>
</compilation-unit>
@@ -9418,11 +9485,6 @@
</compilation-unit>
</test-case>
<test-case FilePath="string">
- <compilation-unit name="ltrim">
- <output-dir compare="Text">ltrim</output-dir>
- </compilation-unit>
- </test-case>
- <test-case FilePath="string">
<compilation-unit name="matches02">
<output-dir compare="Text">matches02</output-dir>
</compilation-unit>
@@ -9508,6 +9570,11 @@
</compilation-unit>
</test-case>
<test-case FilePath="string">
+ <compilation-unit name="position/offset0/pos0_multi_code_point">
+ <output-dir compare="Text">position/offset0/pos0_multi_code_point</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="string">
<compilation-unit name="position/offset1/position1">
<output-dir compare="Text">position/offset1/position1</output-dir>
</compilation-unit>
@@ -9518,6 +9585,11 @@
</compilation-unit>
</test-case>
<test-case FilePath="string">
+ <compilation-unit name="position/offset1/pos1_multi_code_point">
+ <output-dir compare="Text">position/offset1/pos1_multi_code_point</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="string">
<compilation-unit name="regexp_contains/regexp_contains">
<output-dir compare="Text">regexp_contains/regexp_contains</output-dir>
</compilation-unit>
@@ -9778,11 +9850,6 @@
</compilation-unit>
</test-case>
<test-case FilePath="string">
- <compilation-unit name="rtrim">
- <output-dir compare="Text">rtrim</output-dir>
- </compilation-unit>
- </test-case>
- <test-case FilePath="string">
<compilation-unit name="split">
<output-dir compare="Text">split</output-dir>
</compilation-unit>
@@ -9848,6 +9915,11 @@
</compilation-unit>
</test-case>
<test-case FilePath="string">
+ <compilation-unit name="string_to_codepoint_multi_codepoints_01">
+ <output-dir compare="Text">string_to_codepoint_multi_codepoints_01</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="string">
<compilation-unit name="strlen02">
<output-dir compare="Text">strlen02</output-dir>
</compilation-unit>
@@ -9918,6 +9990,11 @@
</compilation-unit>
</test-case>
<test-case FilePath="string">
+ <compilation-unit name="substring_multi_codepoint_01">
+ <output-dir compare="Text">substring_multi_codepoint_01</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="string">
<compilation-unit name="substring-after-1">
<output-dir compare="Text">substring-after-1</output-dir>
</compilation-unit>
@@ -10028,6 +10105,16 @@
</compilation-unit>
</test-case>
<test-case FilePath="string">
+ <compilation-unit name="ltrim">
+ <output-dir compare="Text">ltrim</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="string">
+ <compilation-unit name="rtrim">
+ <output-dir compare="Text">rtrim</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="string">
<compilation-unit name="uppercase">
<output-dir compare="Text">uppercase</output-dir>
</compilation-unit>
@@ -11697,13 +11784,13 @@
<test-case FilePath="user-defined-functions">
<compilation-unit name="bad-function-ddl-5">
<output-dir compare="Text">bad-function-ddl-5</output-dir>
- <expected-error>function experiments.function_that_does_not_exist@0 is not defined</expected-error>
+ <expected-error>ASX1081: Cannot find function with name experiments.function_that_does_not_exist</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
<compilation-unit name="bad-function-ddl-6">
<output-dir compare="Text">bad-function-ddl-6</output-dir>
- <expected-error>function experiments.function_that_does_not_exist@2 is not defined</expected-error>
+ <expected-error>ASX1081: Cannot find function with name experiments.function_that_does_not_exist</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
@@ -11721,13 +11808,13 @@
<test-case FilePath="user-defined-functions">
<compilation-unit name="bad-function-ddl-9">
<output-dir compare="Text">bad-function-ddl-9</output-dir>
- <expected-error>function experiments.function_that_does_not_exist@0 which is undefined</expected-error>
+ <expected-error>ASX1081: Cannot find function with name experiments.function_that_does_not_exist</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
<compilation-unit name="bad-function-ddl-10">
<output-dir compare="Text">bad-function-ddl-10</output-dir>
- <expected-error>function experiments.f0@2 which is undefined</expected-error>
+ <expected-error>ASX1081: Cannot find function with name experiments.f0</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
@@ -11743,48 +11830,59 @@
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
+ <compilation-unit name="create-or-replace-function-1">
+ <output-dir compare="Text">create-or-replace-function-1</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="user-defined-functions">
<compilation-unit name="drop-dependency-1">
<output-dir compare="Text">drop-dependency-1</output-dir>
- <expected-error>Cannot drop dataverse. Function B.f0@2 depends on function C.f1@2</expected-error>
+ <expected-error>Cannot drop dataverse. Function B.f0(2) depends on function C.f1(2)</expected-error>
<source-location>false</source-location>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
<compilation-unit name="drop-dependency-2">
<output-dir compare="Text">drop-dependency-2</output-dir>
- <expected-error>Cannot drop dataverse. Function B.f2@2 depends on dataset C.TweetMessages</expected-error>
+ <expected-error>Cannot drop dataverse. Function B.f2(2) depends on dataset C.TweetMessages</expected-error>
<source-location>false</source-location>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
<compilation-unit name="drop-dependency-3">
<output-dir compare="Text">drop-dependency-3</output-dir>
- <expected-error>Cannot drop function C.f1@2 being used by function B.f0@2</expected-error>
+ <expected-error>Cannot drop function C.f1(2) being used by function B.f0(2)</expected-error>
<source-location>false</source-location>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
<compilation-unit name="drop-dependency-4">
<output-dir compare="Text">drop-dependency-4</output-dir>
- <expected-error>Cannot drop dataset C.TweetMessages being used by function B.f2@2</expected-error>
+ <expected-error>Cannot drop dataset C.TweetMessages being used by function B.f2(2)</expected-error>
<source-location>false</source-location>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
<compilation-unit name="drop-dependency-5">
<output-dir compare="Text">drop-dependency-5</output-dir>
- <expected-error>Cannot drop function C.f1@2 being used by function C.f0@2</expected-error>
+ <expected-error>Cannot drop function C.f1(2) being used by function C.f0(2)</expected-error>
<source-location>false</source-location>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
<compilation-unit name="drop-dependency-6">
<output-dir compare="Text">drop-dependency-6</output-dir>
- <expected-error>Cannot drop dataset C.TweetMessages being used by function C.f2@2</expected-error>
+ <expected-error>Cannot drop dataset C.TweetMessages being used by function C.f2(2)</expected-error>
<source-location>false</source-location>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
+ <compilation-unit name="drop-function-1">
+ <output-dir compare="Text">drop-function-1</output-dir>
+ <expected-error>ASX1081: Cannot find function with name experiments.my_sum</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="user-defined-functions">
<compilation-unit name="single-line-definition">
<output-dir compare="Text">single-line-definition</output-dir>
</compilation-unit>
@@ -11797,7 +11895,7 @@
<test-case FilePath="user-defined-functions">
<compilation-unit name="query-ASTERIXDB-1652">
<output-dir compare="Text">query-ASTERIXDB-1652-2</output-dir>
- <expected-error>In function call "test.length(...)", the dataverse "test" cannot be found!</expected-error>
+ <expected-error>ASX1063: Cannot find dataverse with name test</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
@@ -11828,7 +11926,7 @@
<test-case FilePath="user-defined-functions">
<compilation-unit name="query-issue455">
<output-dir compare="Text">query-issue455</output-dir>
- <expected-error>function test.printName@0 is not defined</expected-error>
+ <expected-error>ASX1081: Cannot find function with name test.printName</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
@@ -11994,9 +12092,19 @@
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
+ <compilation-unit name="udf33_overloading">
+ <output-dir compare="Text">udf33_overloading</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="user-defined-functions">
+ <compilation-unit name="udf34">
+ <output-dir compare="Text">udf34</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="user-defined-functions">
<compilation-unit name="f01">
<output-dir compare="Text">f01</output-dir>
- <expected-error>function test.tinyint@0 is not defined</expected-error>
+ <expected-error>ASX1081: Cannot find function with name test.tinyint</expected-error>
</compilation-unit>
</test-case>
<!-- This test case is not valid anymore since we do not required "IMPORT_PRIVATE_FUNCTIONS" flag anymore -->
@@ -12290,6 +12398,11 @@
</compilation-unit>
</test-case>
<test-case FilePath="feeds">
+ <compilation-unit name="change-feed-filter-on-meta-dataset">
+ <output-dir compare="Text">change-feed-filter-on-meta-dataset</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="feeds">
<compilation-unit name="change-feed-with-meta-pk-index">
<output-dir compare="Text">change-feed-with-meta-pk-index</output-dir>
</compilation-unit>
@@ -12454,7 +12567,7 @@
<test-case FilePath="feeds">
<compilation-unit name="drop-function-used-by-feed">
<output-dir compare="Text">drop-function-used-by-feed</output-dir>
- <expected-error>Cannot drop function experiments.test_func0@1 being used by feed connection TwitterUsers.UserFeed</expected-error>
+ <expected-error>Cannot drop function experiments.test_func0(1) being used by feed connection TwitterUsers.UserFeed</expected-error>
<source-location>false</source-location>
</compilation-unit>
</test-case>
@@ -12466,7 +12579,7 @@
<test-case FilePath="feeds">
<compilation-unit name="drop-dataverse-with-function-used-by-feed">
<output-dir compare="Text">drop-dataverse-with-function-used-by-feed</output-dir>
- <expected-error>Cannot drop dataverse. Feed connection feeddv.UserFeed depends on function fundv.test_func0@1</expected-error>
+ <expected-error>Cannot drop dataverse. Feed connection feeddv.UserFeed depends on function fundv.test_func0(1)</expected-error>
<source-location>false</source-location>
</compilation-unit>
</test-case>
@@ -12481,8 +12594,8 @@
</compilation-unit>
</test-case>
<test-case FilePath="feeds">
- <compilation-unit name="change-feed-with-filter-on-meta">
- <output-dir compare="Text">change-feed-with-filter-on-meta</output-dir>
+ <compilation-unit name="change-feed-with-where-on-meta">
+ <output-dir compare="Text">change-feed-with-where-on-meta</output-dir>
</compilation-unit>
</test-case>
</test-group>
@@ -13350,6 +13463,11 @@
</compilation-unit>
</test-case>
<test-case FilePath="union">
+ <compilation-unit name="union_opt_1">
+ <output-dir compare="Text">union_opt_1</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="union">
<compilation-unit name="union_orderby">
<output-dir compare="Text">union_orderby</output-dir>
</compilation-unit>
@@ -13791,7 +13909,7 @@
<expected-warn>ASX1107: Unexpected hint: indexnl. "hash" expected at this location</expected-warn>
<expected-warn>ASX1107: Unexpected hint: hash. "indexnl", "skip-index", "hash-bcast" expected at this location</expected-warn>
<expected-warn>ASX1107: Unexpected hint: auto. "indexnl", "skip-index" expected at this location</expected-warn>
- <expected-warn>ASX1107: Unexpected hint: hash. "indexnl", "skip-index" expected at this location</expected-warn>
+ <expected-warn>ASX1107: Unexpected hint: hash. "indexnl", "skip-index", "range" expected at this location</expected-warn>
<expected-warn>ASX1107: Unexpected hint: hash. None expected at this location</expected-warn>
</compilation-unit>
</test-case>
@@ -13814,7 +13932,7 @@
<expected-warn>ASX1107: Unexpected hint: unknown_hint_groupby. "hash" expected at this location</expected-warn>
<expected-warn>ASX1107: Unexpected hint: unknown_hint_relexpr. "indexnl", "skip-index", "hash-bcast" expected at this location</expected-warn>
<expected-warn>ASX1107: Unexpected hint: unknown_hint_between. "indexnl", "skip-index" expected at this location</expected-warn>
- <expected-warn>ASX1107: Unexpected hint: unknown_hint_funcall. "indexnl", "skip-index" expected at this location</expected-warn>
+ <expected-warn>ASX1107: Unexpected hint: unknown_hint_funcall. "indexnl", "skip-index", "range" expected at this location</expected-warn>
<expected-warn>ASX1107: Unexpected hint: unknown_hint_elsewhere. None expected at this location</expected-warn>
</compilation-unit>
</test-case>
@@ -14277,7 +14395,7 @@
<expected-error>ASX0002: Type mismatch</expected-error>
<expected-error>ASX1104: Invalid modifier FROM FIRST/LAST for function</expected-error>
<expected-error>ASX1037: Invalid query parameter compiler.windowmemory</expected-error>
- <expected-error>ASX1102: Expected window or aggregate function, got: unknown_func</expected-error>
+ <expected-error>ASX1102: Expected window or aggregate function, got: lowercase</expected-error>
<expected-error>ASX1079: Compilation error: count is a SQL-92 aggregate function</expected-error>
<expected-error>ASX1104: Invalid modifier RESPECT/IGNORE NULLS for function</expected-error>
<expected-error>ASX1104: Invalid modifier RESPECT/IGNORE NULLS for function</expected-error>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
index 9c4bb41..7177797 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp_parser.xml
@@ -6732,4 +6732,11 @@
</compilation-unit>
</test-case>
</test-group>
+ <test-group name="list">
+ <test-case FilePath="list">
+ <compilation-unit name="list-star_01">
+ <output-dir compare="AST">list-star_01</output-dir>
+ </compilation-unit>
+ </test-case>
+ </test-group>
</test-suite>
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/enlist_data.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/enlist_data.aql
index 650bd33..9bf9403 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/enlist_data.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/enlist_data.aql
@@ -107,21 +107,21 @@
asterix-005, asterix-006, asterix-007, asterix-008, asterix-009, asterix-010;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
enlist dataset Customers;
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/load_data_adm.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/load_data_adm.aql
index 5318479..41161af 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/load_data_adm.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/load_data_adm.aql
@@ -107,21 +107,21 @@
asterix-005, asterix-006, asterix-007, asterix-008, asterix-009, asterix-010;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
load dataset LineItems
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/load_data_tbl_100x.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/load_data_tbl_100x.aql
index 83600b9..eec9c69 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/load_data_tbl_100x.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/load_data_tbl_100x.aql
@@ -107,21 +107,21 @@
asterix-005, asterix-006, asterix-007, asterix-008, asterix-009, asterix-010;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
load dataset Customers
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/load_data_tbl_1x.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/load_data_tbl_1x.aql
index bbd823f..55c8f03 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/load_data_tbl_1x.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/load_data_tbl_1x.aql
@@ -107,21 +107,21 @@
asterix-005, asterix-006, asterix-007, asterix-008, asterix-009, asterix-010;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
load dataset Customers
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/q03_shipping_priority.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/q03_shipping_priority.aql
index b85bef5..3e53ea6 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/q03_shipping_priority.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/asterix/q03_shipping_priority.aql
@@ -64,11 +64,11 @@
asterix-005, asterix-006, asterix-007, asterix-008, asterix-009, asterix-010;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
write output to asterix-001:"/home/onose/hyracks-asterix/results/q3_shipping_priority.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/inlined_q18_large_volume_customer.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/inlined_q18_large_volume_customer.aql
index 3986f00..7d391f5 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/inlined_q18_large_volume_customer.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/inlined_q18_large_volume_customer.aql
@@ -63,11 +63,11 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/inlined_q18_large_volume_customer.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_adm_data.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_adm_data.aql
index 28559cd..d2512a0 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_adm_data.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_adm_data.aql
@@ -106,21 +106,21 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
load dataset LineItems
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_0.001x_2nodes.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_0.001x_2nodes.aql
index 3f081f3..cab0315 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_0.001x_2nodes.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_0.001x_2nodes.aql
@@ -106,21 +106,21 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
load dataset LineItems
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_10x_1node.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_10x_1node.aql
index f4cbbb6..0c55e17 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_10x_1node.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_10x_1node.aql
@@ -106,21 +106,21 @@
declare nodegroup group1 on asterix_nc1;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
load dataset LineItems
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_1x_1node.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_1x_1node.aql
index 5eb5d79..606f6b8 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_1x_1node.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_1x_1node.aql
@@ -106,21 +106,21 @@
declare nodegroup group1 on asterix_nc1;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
load dataset LineItems
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_20x_2node.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_20x_2node.aql
index 5bad6f9..5bfa238 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_20x_2node.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/load_tbl_data_20x_2node.aql
@@ -106,21 +106,21 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
load dataset LineItems
using localfs
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/orders-index-create.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/orders-index-create.aql
index 0938de7..bfec649 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/orders-index-create.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/orders-index-create.aql
@@ -35,6 +35,6 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
create index idx_Orders_Custkey on Orders(o_custkey);
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/orders-index-search.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/orders-index-search.aql
index 0a4c208..d473058 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/orders-index-search.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/orders-index-search.aql
@@ -35,7 +35,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare index idx_Orders_Custkey on Orders(o_custkey);
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q01_pricing_summary_report.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q01_pricing_summary_report.aql
index a9248b4..e05c636 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q01_pricing_summary_report.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q01_pricing_summary_report.aql
@@ -40,7 +40,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
// for external datasets, use:
//
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q03_shipping_priority.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q03_shipping_priority.aql
index 005b887..4f1199c 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q03_shipping_priority.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q03_shipping_priority.aql
@@ -63,11 +63,11 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/q3_shipping_priority.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q05_local_supplier_volume.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q05_local_supplier_volume.aql
index 0a4d752..1832129 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q05_local_supplier_volume.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q05_local_supplier_volume.aql
@@ -86,17 +86,17 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Regions(RegionType)
- primary key r_regionkey on group1;
+ primary key r_regionkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/q5_local_supplier_volume.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q09_product_type_profit.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q09_product_type_profit.aql
index b603363..6638e7a 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q09_product_type_profit.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/q09_product_type_profit.aql
@@ -90,17 +90,17 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Suppliers(SupplierType)
- primary key s_suppkey on group1;
+ primary key s_suppkey with {"node-group":{"name":"group1"}};
declare dataset Nations(NationType)
- primary key n_nationkey on group1;
+ primary key n_nationkey with {"node-group":{"name":"group1"}};
declare dataset Parts(PartType)
- primary key p_partkey on group1;
+ primary key p_partkey with {"node-group":{"name":"group1"}};
declare dataset PartSupp(PartSuppType)
- primary key ps_partkey, ps_suppkey on group1;
+ primary key ps_partkey, ps_suppkey with {"node-group":{"name":"group1"}};
write output to asterix_nc1:"/tmp/q9_product_type_profit.adm";
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/scan_filter_lineitem.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/scan_filter_lineitem.aql
index e851841..25bb8d0 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/scan_filter_lineitem.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/scan_filter_lineitem.aql
@@ -40,7 +40,7 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
// load dataset LineItems from asterix_nc1:"/opt/tpch/tengigs/lineitem.tbl" delimited by "|";
diff --git a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/write-custorder.aql b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/write-custorder.aql
index a205199..6c67591 100644
--- a/asterixdb/asterix-app/src/test/resources/tpch/queries/local/write-custorder.aql
+++ b/asterixdb/asterix-app/src/test/resources/tpch/queries/local/write-custorder.aql
@@ -68,13 +68,13 @@
declare nodegroup group1 on asterix_nc1, asterix_nc2;
declare dataset LineItems(LineItemType)
- primary key l_orderkey, l_linenumber on group1;
+ primary key l_orderkey, l_linenumber with {"node-group":{"name":"group1"}};
declare dataset Orders(OrderType)
- primary key o_orderkey on group1;
+ primary key o_orderkey with {"node-group":{"name":"group1"}};
declare dataset Customers(CustomerType)
- primary key c_custkey on group1;
+ primary key c_custkey with {"node-group":{"name":"group1"}};
declare dataset CustOrder(CustOrderType)
- primary key co_custkey on group1;
+ primary key co_custkey with {"node-group":{"name":"group1"}};
insert into dataset CustOrder
( for $c in dataset('Customers')
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/annotations/RangeAnnotation.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/annotations/RangeAnnotation.java
new file mode 100644
index 0000000..4465167
--- /dev/null
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/annotations/RangeAnnotation.java
@@ -0,0 +1,45 @@
+/*
+ * 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.common.annotations;
+
+import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionAnnotation;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public class RangeAnnotation implements IExpressionAnnotation {
+
+ private RangeMap map;
+
+ @Override
+ public Object getObject() {
+ return map;
+ }
+
+ @Override
+ public void setObject(Object side) {
+ this.map = (RangeMap) side;
+ }
+
+ @Override
+ public IExpressionAnnotation copy() {
+ RangeAnnotation rangAnn = new RangeAnnotation();
+ rangAnn.map = map;
+ return rangAnn;
+ }
+
+}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetLifecycleManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetLifecycleManager.java
index 10eddb1..f7cbf18 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetLifecycleManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetLifecycleManager.java
@@ -25,6 +25,7 @@
import org.apache.asterix.common.context.IndexInfo;
import org.apache.asterix.common.context.PrimaryIndexOperationTracker;
import org.apache.asterix.common.replication.IReplicationStrategy;
+import org.apache.asterix.common.storage.StorageIOStats;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentIdGenerator;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
@@ -143,4 +144,9 @@
* @throws HyracksDataException
*/
void waitForIO(IReplicationStrategy replicationStrategy) throws HyracksDataException;
+
+ /**
+ * @return the current datasets io stats
+ */
+ StorageIOStats getDatasetsIOStats();
}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
index b0c6472..9ec6279 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
@@ -72,7 +72,11 @@
POSITIVE_INTEGER,
AlgebricksConfig.SORT_SAMPLES,
"The number of samples which parallel sorting should take from each partition"),
- COMPILER_INDEXONLY(BOOLEAN, AlgebricksConfig.INDEX_ONLY_DEFAULT, "Enabling/disabling index-only plans");
+ COMPILER_INDEXONLY(BOOLEAN, AlgebricksConfig.INDEX_ONLY_DEFAULT, "Enabling/disabling index-only plans"),
+ COMPILER_INTERNAL_SANITYCHECK(
+ BOOLEAN,
+ AlgebricksConfig.SANITYCHECK_DEFAULT,
+ "Enable/disable compiler sanity check");
private final IOptionType type;
private final Object defaultValue;
@@ -123,6 +127,8 @@
public static final String COMPILER_INDEXONLY_KEY = Option.COMPILER_INDEXONLY.ini();
+ public static final String COMPILER_INTERNAL_SANITYCHECK_KEY = Option.COMPILER_INTERNAL_SANITYCHECK.ini();
+
public static final int COMPILER_PARALLELISM_AS_STORAGE = 0;
public CompilerProperties(PropertiesAccessor accessor) {
@@ -168,4 +174,8 @@
public boolean isIndexOnly() {
return accessor.getBoolean(Option.COMPILER_INDEXONLY);
}
+
+ public boolean isSanityCheck() {
+ return accessor.getBoolean(Option.COMPILER_INTERNAL_SANITYCHECK);
+ }
}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/OptimizationConfUtil.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/OptimizationConfUtil.java
index 55f3f4f..4f2a124 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/OptimizationConfUtil.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/OptimizationConfUtil.java
@@ -58,8 +58,12 @@
compilerProperties.getWindowMemorySize(), frameSize, MIN_FRAME_LIMIT_FOR_WINDOW, sourceLoc);
int textSearchFrameLimit = getTextSearchNumFrames(compilerProperties, querySpecificConfig, sourceLoc);
int sortNumSamples = getSortSamples(compilerProperties, querySpecificConfig, sourceLoc);
- boolean fullParallelSort = getSortParallel(compilerProperties, querySpecificConfig);
- boolean indexOnly = isIndexOnly(compilerProperties, querySpecificConfig);
+ boolean fullParallelSort = getBoolean(querySpecificConfig, CompilerProperties.COMPILER_SORT_PARALLEL_KEY,
+ compilerProperties.getSortParallel());
+ boolean indexOnly = getBoolean(querySpecificConfig, CompilerProperties.COMPILER_INDEXONLY_KEY,
+ compilerProperties.isIndexOnly());
+ boolean sanityCheck = getBoolean(querySpecificConfig, CompilerProperties.COMPILER_INTERNAL_SANITYCHECK_KEY,
+ compilerProperties.isSanityCheck());
PhysicalOptimizationConfig physOptConf = new PhysicalOptimizationConfig();
physOptConf.setFrameSize(frameSize);
@@ -71,6 +75,7 @@
physOptConf.setSortParallel(fullParallelSort);
physOptConf.setSortSamples(sortNumSamples);
physOptConf.setIndexOnly(indexOnly);
+ physOptConf.setSanityCheckEnabled(sanityCheck);
return physOptConf;
}
@@ -109,15 +114,6 @@
return Math.max(frameLimit, minFrameLimit);
}
- private static boolean getSortParallel(CompilerProperties compilerProperties,
- Map<String, Object> querySpecificConfig) {
- String valueInQuery = (String) querySpecificConfig.get(CompilerProperties.COMPILER_SORT_PARALLEL_KEY);
- if (valueInQuery != null) {
- return OptionTypes.BOOLEAN.parse(valueInQuery);
- }
- return compilerProperties.getSortParallel();
- }
-
@SuppressWarnings("squid:S1166") // Either log or rethrow this exception
private static int getSortSamples(CompilerProperties compilerProperties, Map<String, Object> querySpecificConfig,
SourceLocation sourceLoc) throws AsterixException {
@@ -131,11 +127,11 @@
}
}
- private static boolean isIndexOnly(CompilerProperties compilerProperties, Map<String, Object> querySpecificConfig) {
- String valueInQuery = (String) querySpecificConfig.get(CompilerProperties.COMPILER_INDEXONLY_KEY);
+ private static boolean getBoolean(Map<String, Object> queryConfig, String queryConfigKey, boolean defaultValue) {
+ String valueInQuery = (String) queryConfig.get(queryConfigKey);
if (valueInQuery != null) {
return OptionTypes.BOOLEAN.parse(valueInQuery);
}
- return compilerProperties.isIndexOnly();
+ return defaultValue;
}
}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java
index ed0bf9a..adf57fd 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java
@@ -66,7 +66,13 @@
@Override
public Section section() {
- return Section.NC;
+ switch (this) {
+ case STORAGE_COMPRESSION_BLOCK:
+ case STORAGE_LSM_BLOOMFILTER_FALSEPOSITIVERATE:
+ return Section.COMMON;
+ default:
+ return Section.NC;
+ }
}
@Override
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/BaseOperationTracker.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/BaseOperationTracker.java
index 3ff13cb..f8a81e4 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/BaseOperationTracker.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/BaseOperationTracker.java
@@ -18,6 +18,8 @@
*/
package org.apache.asterix.common.context;
+import static org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperation.LSMIOOperationType.REPLICATE;
+
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
@@ -38,7 +40,7 @@
public void beforeOperation(ILSMIndex index, LSMOperationType opType, ISearchOperationCallback searchCallback,
IModificationOperationCallback modificationCallback) throws HyracksDataException {
if (opType == LSMOperationType.REPLICATE) {
- dsInfo.declareActiveIOOperation();
+ dsInfo.declareActiveIOOperation(REPLICATE);
}
}
@@ -54,7 +56,7 @@
public void completeOperation(ILSMIndex index, LSMOperationType opType, ISearchOperationCallback searchCallback,
IModificationOperationCallback modificationCallback) throws HyracksDataException {
if (opType == LSMOperationType.REPLICATE) {
- dsInfo.undeclareActiveIOOperation();
+ dsInfo.undeclareActiveIOOperation(REPLICATE);
}
}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetInfo.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetInfo.java
index 3fcc528..72dacc4 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetInfo.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetInfo.java
@@ -28,6 +28,7 @@
import org.apache.asterix.common.transactions.LogRecord;
import org.apache.asterix.common.transactions.LogType;
import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperation;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -42,6 +43,8 @@
private final ILogManager logManager;
private final LogRecord waitLog = new LogRecord();
private int numActiveIOOps;
+ private int pendingFlushes;
+ private int pendingMerges;
private long lastAccess;
private boolean isExternal;
private boolean isRegistered;
@@ -70,12 +73,32 @@
setLastAccess(System.currentTimeMillis());
}
- public synchronized void declareActiveIOOperation() {
+ public synchronized void declareActiveIOOperation(ILSMIOOperation.LSMIOOperationType opType) {
numActiveIOOps++;
+ switch (opType) {
+ case FLUSH:
+ pendingFlushes++;
+ break;
+ case MERGE:
+ pendingMerges++;
+ break;
+ default:
+ break;
+ }
}
- public synchronized void undeclareActiveIOOperation() {
+ public synchronized void undeclareActiveIOOperation(ILSMIOOperation.LSMIOOperationType opType) {
numActiveIOOps--;
+ switch (opType) {
+ case FLUSH:
+ pendingFlushes--;
+ break;
+ case MERGE:
+ pendingMerges--;
+ break;
+ default:
+ break;
+ }
//notify threads waiting on this dataset info
notifyAll();
}
@@ -204,7 +227,7 @@
while (numActiveIOOps > 0) {
try {
/**
- * Will be Notified by {@link DatasetInfo#undeclareActiveIOOperation()}
+ * Will be Notified by {@link DatasetInfo#undeclareActiveIOOperation(ILSMIOOperation.LSMIOOperationType)}
*/
wait();
} catch (InterruptedException e) {
@@ -220,4 +243,12 @@
}
}
}
+
+ public synchronized int getPendingFlushes() {
+ return pendingFlushes;
+ }
+
+ public synchronized int getPendingMerges() {
+ return pendingMerges;
+ }
}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
index 0750749..5ea79b3 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
@@ -38,6 +38,7 @@
import org.apache.asterix.common.storage.IIndexCheckpointManager;
import org.apache.asterix.common.storage.IIndexCheckpointManagerProvider;
import org.apache.asterix.common.storage.ResourceReference;
+import org.apache.asterix.common.storage.StorageIOStats;
import org.apache.asterix.common.transactions.ILogManager;
import org.apache.asterix.common.transactions.LogRecord;
import org.apache.asterix.common.transactions.LogType;
@@ -519,6 +520,16 @@
}
}
+ @Override
+ public StorageIOStats getDatasetsIOStats() {
+ StorageIOStats stats = new StorageIOStats();
+ for (DatasetResource dsr : datasets.values()) {
+ stats.addPendingFlushes(dsr.getDatasetInfo().getPendingFlushes());
+ stats.addPendingMerges(dsr.getDatasetInfo().getPendingMerges());
+ }
+ return stats;
+ }
+
private void closeIndex(IndexInfo indexInfo) throws HyracksDataException {
if (indexInfo.isOpen()) {
ILSMOperationTracker opTracker = indexInfo.getIndex().getOperationTracker();
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java
index 5e4b5a1..2ad2f7a 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java
@@ -48,11 +48,11 @@
public class LSMInsertDeleteOperatorNodePushable extends LSMIndexInsertUpdateDeleteOperatorNodePushable {
public static final String KEY_INDEX = "Index";
- private final boolean isPrimary;
- private final SourceLocation sourceLoc;
+ protected final boolean isPrimary;
+ protected final SourceLocation sourceLoc;
// This class has both lsmIndex and index (in super class) pointing to the same object
private AbstractLSMIndex lsmIndex;
- private int i = 0;
+ protected int i = 0;
/**
* The following three variables are used to keep track of the information regarding flushing partial frame such as
@@ -64,9 +64,9 @@
* ==> captured in currentTupleIdx variable
* These variables are reset for each frame, i.e., whenever nextFrame() is called, these variables are reset.
*/
- private boolean flushedPartialTuples;
- private int currentTupleIdx;
- private int lastFlushedTupleIdx;
+ protected boolean flushedPartialTuples;
+ protected int currentTupleIdx;
+ protected int lastFlushedTupleIdx;
public LSMInsertDeleteOperatorNodePushable(IHyracksTaskContext ctx, int partition, int[] fieldPermutation,
RecordDescriptor inputRecDesc, IndexOperation op, boolean isPrimary,
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMTreeInsertDeleteOperatorDescriptor.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMTreeInsertDeleteOperatorDescriptor.java
index 45661e4..2226ca0 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMTreeInsertDeleteOperatorDescriptor.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMTreeInsertDeleteOperatorDescriptor.java
@@ -33,7 +33,7 @@
public class LSMTreeInsertDeleteOperatorDescriptor extends LSMTreeIndexInsertUpdateDeleteOperatorDescriptor {
private static final long serialVersionUID = 1L;
- private final boolean isPrimary;
+ protected final boolean isPrimary;
public LSMTreeInsertDeleteOperatorDescriptor(IOperatorDescriptorRegistry spec, RecordDescriptor outRecDesc,
int[] fieldPermutation, IndexOperation op, IIndexDataflowHelperFactory indexHelperFactory,
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
index b277d8f..df28148 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
@@ -88,6 +88,7 @@
public static final int UNSUPPORTED_JRE = 100;
public static final int EXTERNAL_UDF_RESULT_TYPE_ERROR = 200;
+ public static final int EXTERNAL_UDF_EXCEPTION = 201;
// Compilation errors
public static final int PARSE_ERROR = 1001;
@@ -113,8 +114,6 @@
public static final int COMPILATION_PRIMARY_KEY_CANNOT_BE_NULLABLE = 1021;
public static final int COMPILATION_ILLEGAL_PRIMARY_KEY_TYPE = 1022;
public static final int COMPILATION_CANT_DROP_ACTIVE_DATASET = 1023;
- public static final int COMPILATION_AQLPLUS_IDENTIFIER_NOT_FOUND = 1024;
- public static final int COMPILATION_AQLPLUS_NO_SUCH_JOIN_TYPE = 1025;
public static final int COMPILATION_FUNC_EXPRESSION_CANNOT_UTILIZE_INDEX = 1026;
public static final int COMPILATION_DATASET_TYPE_DOES_NOT_HAVE_PRIMARY_INDEX = 1027;
public static final int COMPILATION_UNSUPPORTED_QUERY_PARAMETER = 1028;
@@ -211,6 +210,14 @@
public static final int COMPILATION_GROUPING_OPERATION_INVALID_ARG = 1119;
public static final int COMPILATION_UNEXPECTED_ALIAS = 1120;
public static final int COMPILATION_ILLEGAL_USE_OF_FILTER_CLAUSE = 1121;
+ public static final int COMPILATION_BAD_FUNCTION_DEFINITION = 1122;
+ public static final int FUNCTION_EXISTS = 1123;
+ public static final int ADAPTER_EXISTS = 1124;
+ public static final int UNKNOWN_ADAPTER = 1125;
+ public static final int INVALID_EXTERNAL_IDENTIFIER_SIZE = 1126;
+ public static final int UNSUPPORTED_ADAPTER_LANGUAGE = 1127;
+ public static final int INCONSISTENT_FILTER_INDICATOR = 1128;
+ public static final int UNSUPPORTED_GBY_OBY_SELECT_COMBO = 1129;
// Feed errors
public static final int DATAFLOW_ILLEGAL_STATE = 3001;
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/functions/FunctionSignature.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/functions/FunctionSignature.java
index 9bbf2e7..1efdd42 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/functions/FunctionSignature.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/functions/FunctionSignature.java
@@ -51,8 +51,12 @@
return false;
}
FunctionSignature f = ((FunctionSignature) o);
- return Objects.equals(dataverseName, f.dataverseName) && name.equals(f.name)
- && (arity == f.arity || arity == FunctionIdentifier.VARARGS || f.arity == FunctionIdentifier.VARARGS);
+ return Objects.equals(dataverseName, f.dataverseName) && name.equals(f.name) && arity == f.arity;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(dataverseName, name, arity);
}
@Override
@@ -61,22 +65,32 @@
}
public String toString(boolean includeArity) {
- String namespaceCanonicalForm = dataverseName != null ? dataverseName.getCanonicalForm() : null;
- int len = (namespaceCanonicalForm != null ? namespaceCanonicalForm.length() : 4) + 1 + name.length()
- + (includeArity ? 3 : 0);
+ boolean dataverseNameExists = dataverseName != null;
+ String dataverseCanonicalName = dataverseNameExists ? dataverseName.getCanonicalForm() : null;
+ int len = (dataverseNameExists ? dataverseCanonicalName.length() + 1 : 0) + name.length()
+ + (includeArity ? 5 : 0);
StringBuilder sb = new StringBuilder(len);
- sb.append(namespaceCanonicalForm).append('.').append(name);
+ if (dataverseNameExists) {
+ sb.append(dataverseCanonicalName).append('.');
+ }
+ sb.append(name);
if (includeArity) {
- sb.append('@').append(arity);
+ sb.append('(');
+ switch (arity) {
+ case FunctionIdentifier.VARARGS:
+ sb.append("...");
+ break;
+ case 0:
+ break;
+ default:
+ sb.append(arity);
+ break;
+ }
+ sb.append(')');
}
return sb.toString();
}
- @Override
- public int hashCode() {
- return Objects.hash(dataverseName, name);
- }
-
public DataverseName getDataverseName() {
return dataverseName;
}
@@ -105,15 +119,11 @@
return createFunctionIdentifier(dataverseName, name, arity);
}
- public static FunctionIdentifier createFunctionIdentifier(DataverseName dataverseName, String functionName,
+ private static FunctionIdentifier createFunctionIdentifier(DataverseName dataverseName, String functionName,
int arity) {
return new FunctionIdentifier(dataverseName.getCanonicalForm(), functionName, arity);
}
- public static FunctionIdentifier createFunctionIdentifier(DataverseName dataverseName, String functionName) {
- return new FunctionIdentifier(dataverseName.getCanonicalForm(), functionName);
- }
-
public static DataverseName getDataverseName(FunctionIdentifier fi) {
String dataverseCanonicalName = fi.getNamespace();
switch (dataverseCanonicalName) {
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMIOOperationCallback.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMIOOperationCallback.java
index c3737da..ce6d253 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMIOOperationCallback.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMIOOperationCallback.java
@@ -259,7 +259,7 @@
@Override
public synchronized void scheduled(ILSMIOOperation operation) throws HyracksDataException {
- dsInfo.declareActiveIOOperation();
+ dsInfo.declareActiveIOOperation(operation.getIOOpertionType());
if (operation.getIOOpertionType() == LSMIOOperationType.FLUSH) {
pendingFlushes++;
FlushOperation flush = (FlushOperation) operation;
@@ -282,7 +282,7 @@
pendingFlushes == 0 ? firstLsnForCurrentMemoryComponent : (Long) map.get(KEY_FLUSH_LOG_LSN);
}
}
- dsInfo.undeclareActiveIOOperation();
+ dsInfo.undeclareActiveIOOperation(operation.getIOOpertionType());
}
public synchronized boolean hasPendingFlush() {
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/library/ILibraryManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/library/ILibraryManager.java
index 83f1d71..047018b 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/library/ILibraryManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/library/ILibraryManager.java
@@ -20,8 +20,10 @@
package org.apache.asterix.common.library;
import org.apache.asterix.common.metadata.DataverseName;
+import org.apache.asterix.external.ipc.ExternalFunctionResultRouter;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.api.io.FileReference;
+import org.apache.hyracks.ipc.impl.IPCSystem;
public interface ILibraryManager {
@@ -36,4 +38,8 @@
void dropLibraryPath(FileReference fileRef) throws HyracksDataException;
byte[] serializeLibraryDescriptor(LibraryDescriptor libraryDescriptor) throws HyracksDataException;
+
+ ExternalFunctionResultRouter getRouter();
+
+ IPCSystem getIPCI();
}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/DataverseName.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/DataverseName.java
index 5ec3f1a..83bf94c 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/DataverseName.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/DataverseName.java
@@ -36,14 +36,15 @@
* <p>
* Each dataverse name can be encoded into a single string (called a canonical form) by
* {@link #getCanonicalForm()} and decoded back from it with {@link #createFromCanonicalForm(String)}.
- * The canonical form encoding concatenates name parts together with {@link #SEPARATOR_CHAR '.'} character.
- * The {@link #ESCAPE_CHAR '@'} character is used to escape {@link #SEPARATOR_CHAR '.'} and itself in each name part
- * prior to concatenation.
+ * The canonical form encoding concatenates name parts together with {@link #CANONICAL_FORM_SEPARATOR_CHAR '.'}
+ * character. The {@link #CANONICAL_FORM_ESCAPE_CHAR '@'} character is used to escape
+ * {@link #CANONICAL_FORM_SEPARATOR_CHAR '.'} and itself in each name part prior to concatenation.
* <p>
* E.g. the canonical form for a dataverse name {@code ["a", "b", "c"]} is {@code "a.b.c"}
* <p>
- * {@link #toString()} returns a display form which is a {@link #SEPARATOR_CHAR '.'} separated concatenation
- * of name parts without escaping. In general it's impossible to reconstruct a dataverse name from its display form.
+ * {@link #toString()} returns a display form which is a {@link #CANONICAL_FORM_SEPARATOR_CHAR '.'} separated
+ * concatenation of name parts without escaping. In general it's impossible to reconstruct a dataverse name from
+ * its display form.
* <p>
* Notes:
* <li>
@@ -61,11 +62,18 @@
private static final long serialVersionUID = 1L;
- public static final char SEPARATOR_CHAR = '.';
+ public static final char CANONICAL_FORM_SEPARATOR_CHAR = '.';
- private static final char ESCAPE_CHAR = '@';
+ private static final char CANONICAL_FORM_ESCAPE_CHAR = '@';
- private static final char[] SEPARATOR_AND_ESCAPE_CHARS = new char[] { SEPARATOR_CHAR, ESCAPE_CHAR };
+ public static final char DISPLAY_FORM_SEPARATOR_CHAR = '.';
+
+ private static final char DISPLAY_FORM_QUOTE_CHAR = '`';
+
+ private static final char DISPLAY_FORM_ESCAPE_CHAR = '\\';
+
+ private static final char[] CANONICAL_FORM_SEPARATOR_AND_ESCAPE_CHARS =
+ new char[] { CANONICAL_FORM_SEPARATOR_CHAR, CANONICAL_FORM_ESCAPE_CHAR };
private final boolean isMultiPart;
@@ -106,9 +114,24 @@
}
/**
- * Appends dataverse name parts into a given list
+ * Appends dataverse name parts into a given output collection
*/
public void getParts(Collection<? super String> outParts) {
+ getPartsFromCanonicalForm(canonicalForm, isMultiPart, outParts);
+ }
+
+ /**
+ * Appends dataverse name parts into a given output collection
+ */
+ public static void getPartsFromCanonicalForm(String canonicalForm, Collection<? super String> outParts) {
+ getPartsFromCanonicalForm(canonicalForm, isMultiPartCanonicalForm(canonicalForm), outParts);
+ }
+
+ /**
+ * Appends dataverse name parts into a given output collection
+ */
+ private static void getPartsFromCanonicalForm(String canonicalForm, boolean isMultiPart,
+ Collection<? super String> outParts) {
if (isMultiPart) {
decodeCanonicalForm(canonicalForm, DataverseName::addPartToCollection, outParts);
} else {
@@ -117,9 +140,7 @@
}
/**
- * Returns a display form which is a {@link #SEPARATOR_CHAR '.'} separated concatenation of name parts without
- * escaping. In general it's impossible to reconstruct a dataverse name from its display form, so this method
- * should not be used when roundtripability is required.
+ * Returns a display form which suitable for error messages, and is a valid SQL++ multi-part identifier.
*/
@Override
public String toString() {
@@ -129,19 +150,29 @@
private String getDisplayForm() {
String result = displayForm;
if (result == null) {
- displayForm = result = createDisplayForm();
+ StringBuilder sb = new StringBuilder(canonicalForm.length() + 1);
+ getDisplayForm(sb);
+ displayForm = result = sb.toString();
}
return result;
}
- private String createDisplayForm() {
+ public void getDisplayForm(StringBuilder out) {
+ getDisplayFormFromCanonicalForm(canonicalForm, isMultiPart, out);
+ }
+
+ public static void getDisplayFormFromCanonicalForm(String canonicalForm, StringBuilder out) {
+ getDisplayFormFromCanonicalForm(canonicalForm, isMultiPartCanonicalForm(canonicalForm), out);
+ }
+
+ private static void getDisplayFormFromCanonicalForm(String canonicalForm, boolean isMultiPart, StringBuilder out) {
if (isMultiPart) {
- StringBuilder displayForm = new StringBuilder(canonicalForm.length() + 1);
- decodeCanonicalForm(canonicalForm, DataverseName::addPartToDisplayForm, displayForm);
- return displayForm.substring(0, displayForm.length() - 1); // remove last separator char
+ decodeCanonicalForm(canonicalForm, DataverseName::addPartToDisplayForm, out);
} else {
- return decodeSinglePartNameFromCanonicalForm(canonicalForm);
+ String singlePart = decodeSinglePartNameFromCanonicalForm(canonicalForm);
+ addPartToDisplayForm(singlePart, out);
}
+ out.setLength(out.length() - 1); // remove last separator char
}
@Override
@@ -209,7 +240,7 @@
* Validates that the canonical form of the created dataverse name is the same as its given single name part.
*/
public static DataverseName createBuiltinDataverseName(String singlePart) {
- if (StringUtils.containsAny(singlePart, SEPARATOR_AND_ESCAPE_CHARS)) {
+ if (StringUtils.containsAny(singlePart, CANONICAL_FORM_SEPARATOR_AND_ESCAPE_CHARS)) {
throw new IllegalArgumentException(singlePart);
}
DataverseName dataverseName = createSinglePartName(singlePart); // 1-part name
@@ -234,7 +265,7 @@
StringBuilder sb = new StringBuilder(32);
for (int i = 0; i < partCount; i++) {
if (i > 0) {
- sb.append(SEPARATOR_CHAR);
+ sb.append(CANONICAL_FORM_SEPARATOR_CHAR);
}
encodePartIntoCanonicalForm(parts.get(fromIndex + i), sb);
}
@@ -242,7 +273,7 @@
}
private static String encodeSinglePartNamePartIntoCanonicalForm(String singlePart) {
- if (StringUtils.indexOfAny(singlePart, SEPARATOR_AND_ESCAPE_CHARS) < 0) {
+ if (StringUtils.indexOfAny(singlePart, CANONICAL_FORM_SEPARATOR_AND_ESCAPE_CHARS) < 0) {
// no escaping needed
return singlePart;
}
@@ -254,8 +285,8 @@
private static void encodePartIntoCanonicalForm(String part, StringBuilder out) {
for (int i = 0, ln = part.length(); i < ln; i++) {
char c = part.charAt(i);
- if (c == SEPARATOR_CHAR || c == ESCAPE_CHAR) {
- out.append(ESCAPE_CHAR);
+ if (c == CANONICAL_FORM_SEPARATOR_CHAR || c == CANONICAL_FORM_ESCAPE_CHAR) {
+ out.append(CANONICAL_FORM_ESCAPE_CHAR);
}
out.append(c);
}
@@ -268,11 +299,11 @@
for (int i = 0; i < ln; i++) {
char c = canonicalForm.charAt(i);
switch (c) {
- case SEPARATOR_CHAR:
+ case CANONICAL_FORM_SEPARATOR_CHAR:
partConsumer.accept(sb, partConsumerArg);
sb.setLength(0);
break;
- case ESCAPE_CHAR:
+ case CANONICAL_FORM_ESCAPE_CHAR:
i++;
c = canonicalForm.charAt(i);
// fall through to 'default'
@@ -287,8 +318,8 @@
}
// optimization for a single part name
- private String decodeSinglePartNameFromCanonicalForm(String canonicalForm) {
- if (canonicalForm.indexOf(ESCAPE_CHAR) < 0) {
+ private static String decodeSinglePartNameFromCanonicalForm(String canonicalForm) {
+ if (canonicalForm.indexOf(CANONICAL_FORM_ESCAPE_CHAR) < 0) {
// no escaping was done
return canonicalForm;
}
@@ -297,9 +328,9 @@
for (int i = 0, ln = canonicalForm.length(); i < ln; i++) {
char c = canonicalForm.charAt(i);
switch (c) {
- case SEPARATOR_CHAR:
+ case CANONICAL_FORM_SEPARATOR_CHAR:
throw new IllegalStateException(canonicalForm); // should never happen
- case ESCAPE_CHAR:
+ case CANONICAL_FORM_ESCAPE_CHAR:
i++;
c = canonicalForm.charAt(i);
// fall through to 'default'
@@ -315,9 +346,9 @@
for (int i = 0, ln = canonicalForm.length(); i < ln; i++) {
char c = canonicalForm.charAt(i);
switch (c) {
- case SEPARATOR_CHAR:
+ case CANONICAL_FORM_SEPARATOR_CHAR:
return true;
- case ESCAPE_CHAR:
+ case CANONICAL_FORM_ESCAPE_CHAR:
i++;
break;
}
@@ -330,6 +361,36 @@
}
private static void addPartToDisplayForm(CharSequence part, StringBuilder out) {
- out.append(part).append(SEPARATOR_CHAR);
+ boolean needQuote = false;
+ for (int i = 0, ln = part.length(); i < ln; i++) {
+ char c = part.charAt(i);
+ boolean noQuote = isLetter(c) || c == '_' || (i > 0 && (isDigit(c) || c == '$'));
+ if (!noQuote) {
+ needQuote = true;
+ break;
+ }
+ }
+ if (needQuote) {
+ out.append(DISPLAY_FORM_QUOTE_CHAR);
+ }
+ for (int i = 0, ln = part.length(); i < ln; i++) {
+ char c = part.charAt(i);
+ if (c == DISPLAY_FORM_ESCAPE_CHAR || c == DISPLAY_FORM_QUOTE_CHAR) {
+ out.append(DISPLAY_FORM_ESCAPE_CHAR);
+ }
+ out.append(c);
+ }
+ if (needQuote) {
+ out.append(DISPLAY_FORM_QUOTE_CHAR);
+ }
+ out.append(DISPLAY_FORM_SEPARATOR_CHAR);
+ }
+
+ private static boolean isLetter(char c) {
+ return ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z');
+ }
+
+ private static boolean isDigit(char c) {
+ return '0' <= c && c <= '9';
}
}
\ No newline at end of file
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/IMetadataLockUtil.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/IMetadataLockUtil.java
index b788c1a..b3a7f54 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/IMetadataLockUtil.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/IMetadataLockUtil.java
@@ -83,7 +83,7 @@
// Function helpers
void createFunctionBegin(IMetadataLockManager lockManager, LockList locks, DataverseName dataverseName,
- String functionName, String libraryName) throws AlgebricksException;
+ String functionName, DataverseName libraryDataverseName, String libraryName) throws AlgebricksException;
void dropFunctionBegin(IMetadataLockManager lockManager, LockList locks, DataverseName dataverseName,
String functionName) throws AlgebricksException;
@@ -91,7 +91,7 @@
// Adapter helpers
void createAdapterBegin(IMetadataLockManager lockManager, LockList locks, DataverseName dataverseName,
- String adapterName, String libraryName) throws AlgebricksException;
+ String adapterName, DataverseName libraryDataverseName, String libraryName) throws AlgebricksException;
void dropAdapterBegin(IMetadataLockManager lockManager, LockList locks, DataverseName dataverseName,
String adapterName) throws AlgebricksException;
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/DatasetResourceReference.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/DatasetResourceReference.java
index dc37fc2..6fd1c6a 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/DatasetResourceReference.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/DatasetResourceReference.java
@@ -19,6 +19,7 @@
package org.apache.asterix.common.storage;
import java.nio.file.Paths;
+import java.util.Objects;
import org.apache.asterix.common.dataflow.DatasetLocalResource;
import org.apache.asterix.common.utils.StorageConstants;
@@ -35,6 +36,7 @@
}
public static DatasetResourceReference of(LocalResource localResource) {
+ Objects.requireNonNull(localResource);
return parse(localResource);
}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IndexCheckpoint.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IndexCheckpoint.java
index 3d0b9cb..878c94e 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IndexCheckpoint.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IndexCheckpoint.java
@@ -38,7 +38,7 @@
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
private static final long INITIAL_CHECKPOINT_ID = 0;
// TODO(mblow): remove this marker & related logic once we no longer are able to read indexes prior to the fix
- private static final long HAS_NULL_MISSING_VALUES_FIX = -1;
+ private static final long HAS_NULL_MISSING_VALUES_FIX = -2;
private long id;
private long validComponentSequence;
private long lowWatermark;
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/StorageIOStats.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/StorageIOStats.java
new file mode 100644
index 0000000..0b44f76
--- /dev/null
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/StorageIOStats.java
@@ -0,0 +1,41 @@
+/*
+ * 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.common.storage;
+
+public class StorageIOStats {
+
+ private int pendingFlushes;
+ private int pendingMerges;
+
+ public void addPendingFlushes(int pending) {
+ pendingFlushes += pending;
+ }
+
+ public void addPendingMerges(int pending) {
+ pendingMerges += pending;
+ }
+
+ public int getPendingFlushes() {
+ return pendingFlushes;
+ }
+
+ public int getPendingMerges() {
+ return pendingMerges;
+ }
+}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/external/ipc/ExternalFunctionResultRouter.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/external/ipc/ExternalFunctionResultRouter.java
new file mode 100644
index 0000000..8d56eb7
--- /dev/null
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/external/ipc/ExternalFunctionResultRouter.java
@@ -0,0 +1,127 @@
+/*
+ * 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.external.ipc;
+
+import java.nio.ByteBuffer;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.apache.hyracks.api.exceptions.ErrorCode;
+import org.apache.hyracks.api.exceptions.HyracksException;
+import org.apache.hyracks.ipc.api.IIPCHandle;
+import org.apache.hyracks.ipc.api.IIPCI;
+import org.apache.hyracks.ipc.api.IPayloadSerializerDeserializer;
+import org.apache.hyracks.ipc.impl.JavaSerializationBasedPayloadSerializerDeserializer;
+import org.apache.hyracks.ipc.impl.Message;
+
+public class ExternalFunctionResultRouter implements IIPCI {
+
+ AtomicLong maxId = new AtomicLong(0);
+ ConcurrentHashMap<Long, MutableObject<ByteBuffer>> activeClients = new ConcurrentHashMap<>();
+ ConcurrentHashMap<Long, Exception> exceptionInbox = new ConcurrentHashMap<>();
+ private static int MAX_BUF_SIZE = 32 * 1024 * 1024; //32MB
+
+ @Override
+ public void deliverIncomingMessage(IIPCHandle handle, long mid, long rmid, Object payload) {
+ int rewind = handle.getAttachmentLen();
+ ByteBuffer buf = (ByteBuffer) payload;
+ int end = buf.position();
+ buf.position(end - rewind);
+ ByteBuffer copyTo = activeClients.get(rmid).getValue();
+ if (copyTo.capacity() < handle.getAttachmentLen()) {
+ int nextSize = closestPow2(handle.getAttachmentLen());
+ if (nextSize > MAX_BUF_SIZE) {
+ onError(handle, mid, rmid, HyracksException.create(ErrorCode.RECORD_IS_TOO_LARGE));
+ return;
+ }
+ copyTo = ByteBuffer.allocate(nextSize);
+ activeClients.get(rmid).setValue(copyTo);
+ }
+ copyTo.position(0);
+ System.arraycopy(buf.array(), buf.position() + buf.arrayOffset(), copyTo.array(), copyTo.arrayOffset(),
+ handle.getAttachmentLen());
+ synchronized (copyTo) {
+ copyTo.limit(handle.getAttachmentLen() + 1);
+ copyTo.notify();
+ }
+ buf.position(end);
+ }
+
+ @Override
+ public void onError(IIPCHandle handle, long mid, long rmid, Exception exception) {
+ exceptionInbox.put(rmid, exception);
+ ByteBuffer route = activeClients.get(rmid).getValue();
+ synchronized (route) {
+ route.notify();
+ }
+ }
+
+ public Long insertRoute(ByteBuffer buf) {
+ Long id = maxId.incrementAndGet();
+ activeClients.put(id, new MutableObject<>(buf));
+ return id;
+ }
+
+ public Exception getException(Long id) {
+ return exceptionInbox.remove(id);
+ }
+
+ public boolean hasException(long id) {
+ return exceptionInbox.get(id) == null;
+ }
+
+ public void removeRoute(Long id) {
+ activeClients.remove(id);
+ exceptionInbox.remove(id);
+ }
+
+ public static int closestPow2(int n) {
+ return (int) Math.pow(2, Math.ceil(Math.log(n) / Math.log(2)));
+ }
+
+ public static class NoOpNoSerJustDe implements IPayloadSerializerDeserializer {
+
+ private static byte[] noop = new byte[] { (byte) 0 };
+
+ @Override
+ public Object deserializeObject(ByteBuffer buffer, int length, byte flag) throws Exception {
+ if (flag == Message.INITIAL_REQ) {
+ return new JavaSerializationBasedPayloadSerializerDeserializer().deserializeObject(buffer, length,
+ flag);
+ }
+ return buffer;
+ }
+
+ @Override
+ public Exception deserializeException(ByteBuffer buffer, int length) throws Exception {
+ return null;
+ }
+
+ @Override
+ public byte[] serializeObject(Object object) throws Exception {
+ return noop;
+ }
+
+ @Override
+ public byte[] serializeException(Exception object) throws Exception {
+ return noop;
+ }
+ }
+}
diff --git a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
index 426c592..e48a0d7 100644
--- a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
+++ b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
@@ -90,6 +90,7 @@
100 = Unsupported JRE: %1$s
200 = External UDF cannot produce expected result. Please check the UDF configuration
+201 = External UDF returned exception. Returned exception was: %1$s
# Compile-time check errors
1001 = Syntax error: %1$s
@@ -109,8 +110,8 @@
1021 = The primary key field \"%1$s\" cannot be nullable
1022 = Field of type %1$s cannot be used as a primary key field
1023 = Cannot drop dataset %1$s since it is connected to active entity: %2$s
-1024 = Identifier %1$s is not found in AQL+ meta-scope
-1025 = There is no such join type in AQL+
+#1024 is no longer used
+#1025 is no longer used
1026 = The given function expression %1$s cannot utilize index
1027 = Dataset of type %1$s does not have a primary index
1028 = Query parameter %1$s is not supported
@@ -206,6 +207,14 @@
1119 = Invalid argument to grouping() function
1120 = Unexpected alias: %1$s
1121 = Illegal use of aggregate FILTER clause
+1122 = Error compiling function %1$s. %2$s
+1123 = A function with this name %1$s already exists
+1124 = An adapter with this name %1$s already exists
+1125 = Cannot find adapter with name %1$s
+1126 = Invalid number of elements in external identifier. Expected %1$s elements for %2$s language
+1127 = Unsupported adapter language: %1$s
+1128 = Filter field is not defined properly
+1129 = Cannot compile SELECT variable.* with GROUP BY GROUPING SETS/ROLLUP/CUBE followed by ORDER BY/LIMIT
# Feed Errors
3001 = Illegal state.
diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/common/metadata/DataverseNameTest.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/common/metadata/DataverseNameTest.java
index 1a47a3f..2f0dff5 100644
--- a/asterixdb/asterix-common/src/test/java/org/apache/asterix/common/metadata/DataverseNameTest.java
+++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/common/metadata/DataverseNameTest.java
@@ -28,7 +28,7 @@
import java.util.function.Supplier;
import org.apache.commons.collections4.ListUtils;
-import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.common.utils.Triple;
import org.apache.hyracks.algebricks.core.algebra.functions.AlgebricksBuiltinFunctions;
import org.junit.Assert;
import org.junit.Test;
@@ -55,97 +55,114 @@
// escape character is not allowed
"c@d");
- private static final List<Pair<String, String>> TEST_SINGLE_PART_NAME_PARAMS = Arrays.asList(
- // <1-part-name, canonical-form>
- new Pair<>("abc", "abc"),
- // with escape character
- new Pair<>("a@b", "a@@b"),
- // with separator character
- new Pair<>("a.b", "a@.b"),
- // with both escape and separator characters
- new Pair<>("a@.b", "a@@@.b"));
+ private static final List<Triple<String, String, String>> TEST_SINGLE_PART_NAME_PARAMS = Arrays.asList(
+ // <1-part-name, canonical-form, display-form>
+ new Triple<>("abz", "abz", "abz"),
+ // upper-case letters
+ new Triple<>("ABZ", "ABZ", "ABZ"),
+ // letters and digits
+ new Triple<>("aA09", "aA09", "aA09"),
+ // with canonical form escape character
+ new Triple<>("a@b", "a@@b", "`a@b`"),
+ // with canonical form separator character
+ new Triple<>("a.b", "a@.b", "`a.b`"),
+ // with canonical form escape and separator characters
+ new Triple<>("a@.b", "a@@@.b", "`a@.b`"),
+ // with display form escape character
+ new Triple<>("a\\b", "a\\b", "`a\\\\b`"));
- private static final List<Pair<List<String>, String>> TEST_MULTI_PART_NAME_PARAMS = Arrays.asList(
- // <multi-part-name, canonical-form>
- new Pair<>(Arrays.asList("aa", "bb", "cc"), "aa.bb.cc"),
- // with escape character
- new Pair<>(Arrays.asList("a@a@", "@b@b", "@c@c"), "a@@a@@.@@b@@b.@@c@@c"),
- // with separator character
- new Pair<>(Arrays.asList("a.a.", ".b.b.", ".c.c"), "a@.a@..@.b@.b@..@.c@.c"),
- // with both escape and separator characters
- new Pair<>(Arrays.asList("a@a.", "@b.b@", ".c@c"), "a@@a@..@@b@.b@@.@.c@@c"),
- // with both escape and separator characters repeated
- new Pair<>(Arrays.asList("a@@a..", "@@b..b@@", "..c@@c"), "a@@@@a@.@..@@@@b@.@.b@@@@.@.@.c@@@@c"));
+ private static final List<Triple<List<String>, String, String>> TEST_MULTI_PART_NAME_PARAMS = Arrays.asList(
+ // <multi-part-name, canonical-form, display-form>
+ new Triple<>(Arrays.asList("aa", "bb", "cc"), "aa.bb.cc", "aa.bb.cc"),
+ // mixed case letters, digits
+ new Triple<>(Arrays.asList("az", "AZ", "a09Z"), "az.AZ.a09Z", "az.AZ.a09Z"),
+ // with canonical form escape character
+ new Triple<>(Arrays.asList("a@a@", "@b@b", "@c@c"), "a@@a@@.@@b@@b.@@c@@c", "`a@a@`.`@b@b`.`@c@c`"),
+ // with canonical form separator character
+ new Triple<>(Arrays.asList("a.a.", ".b.b.", ".c.c"), "a@.a@..@.b@.b@..@.c@.c", "`a.a.`.`.b.b.`.`.c.c`"),
+ // with canonical form escape and separator characters
+ new Triple<>(Arrays.asList("a@a.", "@b.b@", ".c@c"), "a@@a@..@@b@.b@@.@.c@@c", "`a@a.`.`@b.b@`.`.c@c`"),
+ // with canonical form escape and separator characters repeated
+ new Triple<>(Arrays.asList("a@@a..", "@@b..b@@", "..c@@c"), "a@@@@a@.@..@@@@b@.@.b@@@@.@.@.c@@@@c",
+ "`a@@a..`.`@@b..b@@`.`..c@@c`"),
+ // with display form escape character
+ new Triple<>(Arrays.asList("a\\b", "c\\d"), "a\\b.c\\d", "`a\\\\b`.`c\\\\d`"));
@Test
- public void testBuiltinDataverseName() {
+ public void testBuiltinDataverseName() throws Exception {
for (String p : TEST_BUILTIN_DATAVERSE_NAME_PARAMS) {
testBuiltinDataverseNameImpl(p);
}
}
@Test
- public void testSinglePartName() {
- for (Pair<String, String> p : TEST_SINGLE_PART_NAME_PARAMS) {
- String singlePart = p.first;
- String expectedCanonicalForm = p.second;
- testSinglePartNameImpl(singlePart, expectedCanonicalForm);
+ public void testSinglePartName() throws Exception {
+ for (Triple<String, String, String> t : TEST_SINGLE_PART_NAME_PARAMS) {
+ String singlePart = t.first;
+ String expectedCanonicalForm = t.second;
+ String expectedDisplayForm = t.third;
+ testSinglePartNameImpl(singlePart, expectedCanonicalForm, expectedDisplayForm);
}
}
@Test
- public void testMultiPartName() {
+ public void testMultiPartName() throws Exception {
// test single part names
- for (Pair<String, String> p : TEST_SINGLE_PART_NAME_PARAMS) {
- List<String> parts = Collections.singletonList(p.first);
- String expectedCanonicalForm = p.second;
- testMultiPartNameImpl(parts, expectedCanonicalForm);
+ for (Triple<String, String, String> t : TEST_SINGLE_PART_NAME_PARAMS) {
+ List<String> parts = Collections.singletonList(t.first);
+ String expectedCanonicalForm = t.second;
+ String expectedDisplayForm = t.third;
+ testMultiPartNameImpl(parts, expectedCanonicalForm, expectedDisplayForm);
}
// test multi part names
- for (Pair<List<String>, String> p : TEST_MULTI_PART_NAME_PARAMS) {
- List<String> parts = p.first;
- String expectedCanonicalForm = p.second;
- testMultiPartNameImpl(parts, expectedCanonicalForm);
+ for (Triple<List<String>, String, String> t : TEST_MULTI_PART_NAME_PARAMS) {
+ List<String> parts = t.first;
+ String expectedCanonicalForm = t.second;
+ String expectedDisplayForm = t.third;
+ testMultiPartNameImpl(parts, expectedCanonicalForm, expectedDisplayForm);
}
}
- private void testBuiltinDataverseNameImpl(String singlePart) {
+ private void testBuiltinDataverseNameImpl(String singlePart) throws Exception {
DataverseName dvBuiltin = DataverseName.createBuiltinDataverseName(singlePart);
DataverseName dv = DataverseName.createSinglePartName(singlePart);
Assert.assertEquals("same-builtin", dv, dvBuiltin);
- // part = canonical-form = persistent-form for builtins
- testSinglePartNameImpl(singlePart, singlePart);
+ // part = canonical-form = display-form for builtins
+ testSinglePartNameImpl(singlePart, singlePart, singlePart);
}
- private void testSinglePartNameImpl(String singlePart, String expectedCanonicalForm) {
+ private void testSinglePartNameImpl(String singlePart, String expectedCanonicalForm, String expectedDisplayForm)
+ throws Exception {
List<String> parts = Collections.singletonList(singlePart);
// construction using createSinglePartName()
DataverseName dvConstr1 = DataverseName.createSinglePartName(singlePart);
- testDataverseNameImpl(dvConstr1, parts, expectedCanonicalForm);
+ testDataverseNameImpl(dvConstr1, parts, expectedCanonicalForm, expectedDisplayForm);
// construction using create(list)
DataverseName dvConstr2 = DataverseName.create(Collections.singletonList(singlePart));
- testDataverseNameImpl(dvConstr2, parts, expectedCanonicalForm);
+ testDataverseNameImpl(dvConstr2, parts, expectedCanonicalForm, expectedDisplayForm);
// construction using create(list, from, to)
DataverseName dvConstr3 = DataverseName.create(Arrays.asList(null, null, singlePart, null, null), 2, 3);
- testDataverseNameImpl(dvConstr3, parts, expectedCanonicalForm);
+ testDataverseNameImpl(dvConstr3, parts, expectedCanonicalForm, expectedDisplayForm);
}
- private void testMultiPartNameImpl(List<String> parts, String expectedCanonicalForm) {
+ private void testMultiPartNameImpl(List<String> parts, String expectedCanonicalForm, String expectedDisplayForm)
+ throws Exception {
// construction using create(list)
DataverseName dvConstr1 = DataverseName.create(parts);
- testDataverseNameImpl(dvConstr1, parts, expectedCanonicalForm);
+ testDataverseNameImpl(dvConstr1, parts, expectedCanonicalForm, expectedDisplayForm);
// construction using create(list, from, to)
List<String> dv2InputParts =
ListUtils.union(ListUtils.union(Arrays.asList(null, null), parts), Arrays.asList(null, null));
DataverseName dvConstr2 = DataverseName.create(dv2InputParts, 2, 2 + parts.size());
- testDataverseNameImpl(dvConstr2, parts, expectedCanonicalForm);
+ testDataverseNameImpl(dvConstr2, parts, expectedCanonicalForm, expectedDisplayForm);
}
- private void testDataverseNameImpl(DataverseName dataverseName, List<String> parts, String expectedCanonicalForm) {
+ protected void testDataverseNameImpl(DataverseName dataverseName, List<String> parts, String expectedCanonicalForm,
+ String expectedDisplayForm) throws Exception {
boolean isMultiPart = parts.size() > 1;
Assert.assertEquals("is-multipart", isMultiPart, dataverseName.isMultiPart());
@@ -156,15 +173,16 @@
Assert.assertArrayEquals("get-parts-1", parts.toArray(), outParts.toArray());
// test canonical form
- Assert.assertEquals("canonical-form", expectedCanonicalForm, dataverseName.getCanonicalForm());
+ String canonicalForm = dataverseName.getCanonicalForm();
+ Assert.assertEquals("canonical-form", expectedCanonicalForm, canonicalForm);
DataverseName dvFromCanonical = DataverseName.createFromCanonicalForm(expectedCanonicalForm);
Assert.assertEquals("canonical-form-round-trip", dataverseName, dvFromCanonical);
Assert.assertEquals("canonical-form-round-trip-cmp", 0, dataverseName.compareTo(dvFromCanonical));
Assert.assertEquals("canonical-form-round-trip-hash", dataverseName.hashCode(), dvFromCanonical.hashCode());
// test display form
- String expectedDisplayForm = String.join(".", parts);
- Assert.assertEquals("display-form", expectedDisplayForm, dataverseName.toString());
+ String displayForm = dataverseName.toString();
+ Assert.assertEquals("display-form", expectedDisplayForm, displayForm);
}
@Test
diff --git a/asterixdb/asterix-doc/pom.xml b/asterixdb/asterix-doc/pom.xml
index c46a9aa..98e86b3 100644
--- a/asterixdb/asterix-doc/pom.xml
+++ b/asterixdb/asterix-doc/pom.xml
@@ -52,7 +52,7 @@
<configuration>
<target>
<concat destfile="${project.build.directory}/generated-site/markdown/sqlpp/manual.md">
- <filelist dir="${project.basedir}/src/main/markdown/sqlpp" files="0_toc.md,1_intro.md,2_expr_title.md,2_expr.md,3_query_title.md,3_declare_dataverse.md,3_declare_function.md,3_query.md,4_error_title.md,4_error.md,5_ddl_head.md,5_ddl_dataset_index.md,5_ddl_function_removal.md,5_ddl_dml.md,appendix_1_title.md,appendix_1_keywords.md,appendix_2_title.md,appendix_2_parameters.md,appendix_2_parallel_sort.md,appendix_2_index_only.md,appendix_3_title.md,appendix_3_resolution.md" />
+ <filelist dir="${project.basedir}/src/main/markdown/sqlpp" files="0_toc.md,1_intro.md,2_expr_title.md,2_expr.md,3_query_title.md,3_declare_dataverse.md,3_declare_function.md,3_query.md,4_error_title.md,4_error.md,5_ddl_head.md,5_ddl_dataset_index.md,5_ddl_function_removal.md,5_ddl_dml.md,appendix_1_title.md,appendix_1_keywords.md,appendix_2_title.md,appendix_2_parameters.md,appendix_2_parallel_sort.md,appendix_2_index_only.md,appendix_2_interval_joins.md,appendix_3_title.md,appendix_3_resolution.md" />
</concat>
<concat destfile="${project.build.directory}/generated-site/markdown/sqlpp/builtins.md">
<filelist dir="${project.basedir}/src/main/markdown/builtins" files="0_toc.md,0_toc_sqlpp.md,0_toc_common.md,1_numeric_common.md,1_numeric_delta.md,2_string_common.md,2_string_delta.md,3_binary.md,4_spatial.md,5_similarity.md,6_tokenizing.md,7_temporal.md,7_allens.md,8_record.md,9_aggregate_sql.md,10_comparison.md,11_type.md,13_conditional.md,12_misc.md,15_bitwise.md,14_window.md" />
@@ -81,6 +81,18 @@
<goal>run</goal>
</goals>
</execution>
+ <execution>
+ <id>sqlpp</id>
+ <phase>prepare-package</phase>
+ <configuration>
+ <target>
+ <copy file="${project.basedir}/../asterix-lang-sqlpp/target/site/jjdoc/SQLPP.html" tofile="${project.build.directory}/site/SQLPP.html"/>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
</executions>
</plugin>
<plugin>
diff --git a/asterixdb/asterix-doc/src/main/markdown/builtins/2_string_common.md b/asterixdb/asterix-doc/src/main/markdown/builtins/2_string_common.md
index 58d0e10..b4a7a87 100644
--- a/asterixdb/asterix-doc/src/main/markdown/builtins/2_string_common.md
+++ b/asterixdb/asterix-doc/src/main/markdown/builtins/2_string_common.md
@@ -132,6 +132,8 @@
length(string)
* Returns the length of the string `string`.
+ Note that the length is in the unit of code point.
+ See the following examples for more details.
* Arguments:
* `string` : a `string` or `null` that represents the string to be checked.
* Return Value:
@@ -144,11 +146,18 @@
length("test string");
-
* The expected result is:
11
+ * Example:
+
+ length("đŠđŠđ§đŚ");
+
+ * The expected result is (the emoji character đŠđŠđ§đŚ has 7 code points):
+
+ 7
+
### lower ###
* Syntax:
@@ -181,6 +190,10 @@
* Returns a new string with all leading characters that appear in `chars` removed.
By default, white space is the character to trim.
+ Note that here one character means one code point.
+ For example, the emoji 4-people-family notation "đŠđŠđ§đŚ" contains 7 code points,
+ and it is possible to trim a few code points (such as a 2-people-family "đ¨đŚ") from it.
+ See the following example for more details.
* Arguments:
* `string` : a `string` to be trimmed,
* `chars` : a `string` that contains characters that are used to trim.
@@ -189,27 +202,37 @@
* `missing` if any argument is a `missing` value,
* `null` if any argument is a `null` value but no argument is a `missing` value,
* any other non-string input value will cause a type error.
-
+ * Related functions: see `trim()`, `rtrim()`
* Example:
ltrim("me like x-phone", "eml");
-
* The expected result is:
" like x-phone"
+ * Example with multi-codepoint notation (trim the man and boy from the family of man, woman, girl and boy):
+
+ ltrim("đ¨đŠđ§đŚ", "đ¨đŚ")
+
+ * The expected result is (only woman, girl and boy are left in the family):
+
+ "đŠđ§đŚ"
+
### position ###
* Syntax:
position(string, string_pattern)
- * Returns the first position of `string_pattern` within `string`. The function returns the 0-based position. Another
+ * Returns the first position of `string_pattern` within `string`.
+ The result is counted in the unit of code points.
+ See the following example for more details.
+
+ * The function returns the 0-based position. Another
version of the function returns the 1-based position. Below are the aliases for each version:
- * Aliases:
* 0-based: `position`, `pos`, `position0`, `pos0`.
* 1-based: `position1`, `pos1`.
@@ -229,14 +252,21 @@
"v1": position("ppphonepp", "phone"),
"v2": position("hone", "phone"),
"v3": position1("ppphonepp", "phone"),
- "v4": position1("hone", "phone"),
+ "v4": position1("hone", "phone")
};
-
* The expected result is:
{ "v1": 2, "v2": -1, v3": 3, "v4": -1 }
+ * Example of multi-code-point character:
+
+ position("đŠđŠđ§đŚđ", "đ");
+
+ * The expected result is (the emoji family character has 7 code points):
+
+ 7
+
### regexp_contains ###
* Syntax:
@@ -449,6 +479,8 @@
reverse(string)
* Returns a string formed by reversing characters in the input `string`.
+ For characters of multiple code points, code point is the minimal unit to reverse.
+ See the following examples for more details.
* Arguments:
* `string` : a `string` to be reversed
* Return Value:
@@ -462,11 +494,20 @@
reverse("hello");
-
* The expected result is:
"olleh"
+* Example of multi-code-point character (Korean):
+
+ reverse("áá
ĄáŤáá
łáŻ");
+
+* The expected result is
+ (the Korean characters are splitted into code points and then the code points are reversed):
+
+ "áŻá
łááŤá
Ąá"
+
+
### rtrim ###
* Syntax:
@@ -474,6 +515,10 @@
* Returns a new string with all trailing characters that appear in `chars` removed.
By default, white space is the character to trim.
+ Note that here one character means one code point.
+ For example, the emoji 4-people-family notation "đŠđŠđ§đŚ" contains 7 code points,
+ and it is possible to trim a few code points (such as a 2-people-family "đ¨đŚ") from it.
+ See the following example for more details.
* Arguments:
* `string` : a `string` to be trimmed,
* `chars` : a `string` that contains characters that are used to trim.
@@ -482,7 +527,7 @@
* `missing` if any argument is a `missing` value,
* `null` if any argument is a `null` value but no argument is a `missing` value,
* any other non-string input value will cause a type error.
-
+ * Related functions: see `trim()`, `ltrim()`
* Example:
@@ -493,7 +538,16 @@
* The expected result is:
- { "v1": "i like ", "v2": "i like " }
+ { "v1": "i like ", "v2": "i like x-" }
+
+ * Example with multi-codepoint notation (trim the man and boy from the family of man, woman, girl and boy):
+
+ rtrim("đ¨đŠđ§đŚ", "đ¨đŚ")
+
+ * The expected result is (only man, woman and girl are left in the family):
+
+ "đ¨đŠđ§"
+
### split ###
* Syntax:
@@ -505,6 +559,7 @@
* `string` : a `string` to be split.
* Return Value:
* an array of substrings by splitting the input `string` by `sep`,
+ * in case of two consecutive `sep`s in the `string`, the result of splitting the two consecutive `sep`s will be the empty string `""`,
* `missing` if the argument is a `missing` value,
* `null` if the argument is a `null` value,
* any other non-string input value will cause a type error.
@@ -519,6 +574,16 @@
[ "test", "driven", "development" ]
+ * Example with two consecutive `sep`s in the `string`:
+
+ split("123//456", "/");
+
+
+ * The expected result is:
+
+ [ "123", "", "456" ]
+
+
### starts_with ###
* Syntax:
@@ -554,6 +619,8 @@
substr(string, offset[, length])
* Returns the substring from the given string `string` based on the given start offset `offset` with the optional `length`.
+ Note that both of the `offset` and `length` are in the unit of code point
+ (e.g. the emoji family đ¨đŠđ§đŚ has 7 code points).
The function uses the 0-based position. Another version of the function uses the 1-based position. Below are the
aliases for each version:
@@ -592,8 +659,12 @@
trim(string[, chars]);
- * Returns a new string with all leading characters that appear in `chars` removed.
+ * Returns a new string with all leading and trailing characters that appear in `chars` removed.
By default, white space is the character to trim.
+ Note that here one character means one code point.
+ For example, the emoji 4-people-family notation "đŠđŠđ§đŚ" contains 7 code points,
+ and it is possible to trim a few code points (such as a 2-people-family "đ¨đŚ") from it.
+ See the following example for more details.
* Arguments:
* `string` : a `string` to be trimmed,
* `chars` : a `string` that contains characters that are used to trim.
@@ -602,17 +673,25 @@
* `missing` if any argument is a `missing` value,
* `null` if any argument is a `null` value but no argument is a `missing` value,
* any other non-string input value will cause a type error.
+ * Related functions: see `ltrim()`, `rtrim()`
* Example:
trim("i like x-phone", "xphoen");
-
* The expected result is:
" like "
+ * Example with multi-codepoint notation (trim the man and boy from the family of man, woman, girl and boy):
+
+ trim("đ¨đŠđ§đŚ", "đ¨đŚ")
+
+ * The expected result is (only woman and girl are left in the family):
+
+ "đŠđ§"
+
### upper ###
* Syntax:
diff --git a/asterixdb/asterix-doc/src/main/markdown/sqlpp/0_toc.md b/asterixdb/asterix-doc/src/main/markdown/sqlpp/0_toc.md
index e65ae9f..f4e2cef 100644
--- a/asterixdb/asterix-doc/src/main/markdown/sqlpp/0_toc.md
+++ b/asterixdb/asterix-doc/src/main/markdown/sqlpp/0_toc.md
@@ -99,5 +99,6 @@
* [Appendix 1. Reserved Keywords](#Reserved_keywords)
* [Appendix 2. Performance Tuning](#Performance_tuning)
* [Parallelism Parameter](#Parallelism_parameter)
+ * [Interval Joins](#Interval_joins)
* [Memory Parameters](#Memory_parameters)
* [Appendix 3. Variable Bindings and Name Resolution](#Variable_bindings_and_name_resolution)
diff --git a/asterixdb/asterix-doc/src/main/markdown/sqlpp/5_ddl_function_removal.md b/asterixdb/asterix-doc/src/main/markdown/sqlpp/5_ddl_function_removal.md
index 34b611f..a0742a3 100644
--- a/asterixdb/asterix-doc/src/main/markdown/sqlpp/5_ddl_function_removal.md
+++ b/asterixdb/asterix-doc/src/main/markdown/sqlpp/5_ddl_function_removal.md
@@ -22,7 +22,7 @@
The CREATE FUNCTION statement creates a **named** function that can then be used and reused in queries.
The body of a function can be any query expression involving the function's parameters.
- FunctionSpecification ::= "FUNCTION" FunctionOrTypeName IfNotExists ParameterList "{" Expression "}"
+ FunctionSpecification ::= (<OR> <REPLACE>)? "FUNCTION" FunctionOrTypeName IfNotExists ParameterList "{" Expression "}"
The following is an example of a CREATE FUNCTION statement which is similar to our earlier DECLARE FUNCTION example.
It differs from that example in that it results in a function that is persistently registered by name in the specified dataverse (the current dataverse being used, if not otherwise specified).
@@ -35,9 +35,19 @@
WHERE u.id = userId)[0]
};
+The following is an example of CREATE FUNCTION statement that replaces an existing function.
+
+##### Example
+
+ CREATE OR REPLACE FUNCTION friendInfo(userId) {
+ (SELECT u.id, u.name
+ FROM GleambookUsers u
+ WHERE u.id = userId)[0]
+ };
+
### <a id="Synonyms"> Synonyms</a>
- SynonymSpecification ::= "SYNONYM" QualifiedName "FOR" QualifiedName IfNotExists
+ SynonymSpecification ::= "SYNONYM" QualifiedName IfNotExists "FOR" QualifiedName
The CREATE SYNONYM statement creates a synonym for a given dataset.
This synonym may be used used instead of the dataset name in SELECT, INSERT, UPSERT, DELETE, and LOAD statements.
diff --git a/asterixdb/asterix-doc/src/main/markdown/sqlpp/appendix_2_interval_joins.md b/asterixdb/asterix-doc/src/main/markdown/sqlpp/appendix_2_interval_joins.md
new file mode 100644
index 0000000..45f13f3
--- /dev/null
+++ b/asterixdb/asterix-doc/src/main/markdown/sqlpp/appendix_2_interval_joins.md
@@ -0,0 +1,89 @@
+<!--
+ ! 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.
+ !-->
+
+This system allows for the 13 types of Allen's interval-join relations.
+The default, when using these joins, is either Nested Loop, or Hybrid Hash Join.
+The optimal algorithm will be automatically selected based on the query.
+Hybrid Hash Join will be selected in cases where the relation includes an equality;
+these cases are: `interval_starts()`, `interval_started_by()`, `interval_ends()`, `interval_ended_by()`,
+`interval_meets()`, and `interval_met_by()`.
+Otherwise, the system will default to nested loop join.
+To use interval merge join you must include a range hint.
+Adding a range hint allows for the system to pick interval merge join.
+
+## <a id="Interval_joins">Types of Interval Joins</a>
+The 13 interval functions are `interval_after()`, `interval_before()`, `interval_covers()`, `interval_covered_by()`,
+`interval_ends()`, `interval_ended_by()`, `interval_meets()`, `interval_met_by()`, `interval_overlaps()`,
+`interval_overlapping()`, `interval_overlapped_by()`, `interval_starts()`, and `interval_started_by()`.
+
+##### How to use an interval join
+
+ select f.name as staff, d.name as student
+ from Staff as f, Students as d
+ where interval_after(f.employment, d.attendance)
+
+In this scenario, `interval_after()` can be replaced with any of the 13 join functions.
+Here is what each of the functions represent if A represents the first interval parameter,
+and B represents the second set interval parameter:
+
+| Function | Condition |
+|-------------------------|-------------------------|
+| Before(A, B) and After(B, A) | A.end < B.start |
+| Covers(A, B) and Covered_by(B, A) | A.start <= B.start and A.end >= B.end |
+| Ends(A, B) and Ended_by(B, A) | A.end = B.end and A.start >= B.start |
+| Meets(A, B) and Met_by(B, A) | A.end = B.start |
+| Overlaps(A, B) and Overlapped_by(B, A) | A.start < B.start and B.start > A.end and A.end > B.start |
+| Overlapping(A, B)| (A.start >= B.start and B.start < A.end) or (B.end <= A.end and B.end < A.start)|
+| Starts(A, B) and Started_by(B, A) | A.start = B.start and A.end <= B.end |
+
+## <a id="Range_hint">Using a Range Hint</a>
+
+To use an efficient interval join the data must be partitioned with the details in a range hint.
+Interval joins with a range hint currently work for intervals types of date, datetime, or time;
+the range hint type must match the interval type.
+Adding a range hint directly before the interval join function will cause the system to pick interval
+merge join for these interval functions: `interval_after()`, `interval_before()`, `interval_covers()`,
+`interval_covered_by()`, `interval_overlaps()`, `interval_overlapping()`, `interval_overlapped_by()`.
+The other relations will ignore the range hint and pick Hybrid Hash Join as described earlier.
+
+Here is an example of how interval joins work with a range hint for all the supported data types.
+Suppose that we have two sets of data, a data set of staff members with an interval for length of
+employment and an id.
+The other dataset represents students, which may include an interval for attendance and an id.
+Each partition receives data based on the split points;
+The split points in the range hint must be strategically set by the
+user so that the data divides evenly among partitions.
+For example, if your query contains 1 split point, and the system is using two partitions,
+the data before the split point will be sent to the first partition,
+and the data after the split point will be sent to the second partition.
+This continues to work respectively based on the number of split points and number of partitions.
+Ideally, the number of split points should equal the number of partitions - 1.
+
+##### Range Hint Example
+
+ /*+ range [<Expression>, ..., ] */
+
+##### Range Hint Example with Date
+
+ select f.name as staff, d.name as student
+ from Staff as f, Students as d
+ where
+ /*+ range [date("2003-06-30"), date("2005-12-31"), date("2008-06-30")] */
+ interval_after(f.employment, d.attendance)
+ order by f.name, d.name;
diff --git a/asterixdb/asterix-doc/src/main/user-defined_function/udf.md b/asterixdb/asterix-doc/src/main/user-defined_function/udf.md
index dc21c30..fcb1e14 100644
--- a/asterixdb/asterix-doc/src/main/user-defined_function/udf.md
+++ b/asterixdb/asterix-doc/src/main/user-defined_function/udf.md
@@ -71,15 +71,14 @@
In the AsterixDB source release, we provide several sample UDFs that you can try out.
You need to build the AsterixDB source to get the compiled UDF package. It can be found under
-the `asterixdb-external` sub-project. Assuming that these UDFs have been installed into the `udfs` dataverse and `testlib` library,
+the `asterixdb-external` sub-project. Assuming that these UDFs have been installed into the `testlib` library in`udfs` dataverse,
here is an example that uses the sample UDF `mysum` to compute the sum of two input integers.
USE udfs;
CREATE FUNCTION mysum(a: int32, b: int32)
- RETURNS int32
- LANGUAGE JAVA
- AS "testlib","org.apache.asterix.external.library.MySumFactory";
+ RETURNS int32
+ AS "org.apache.asterix.external.library.MySumFactory" AT testlib;
## <a id="PythonUDF">Creating a Python UDF</a>
@@ -118,7 +117,7 @@
shiv -o lib.pyz --site-packages . scikit-learn
-Then, deploy it the same as the Java UDF was, with the library name `pylib`
+Then, deploy it the same as the Java UDF was, with the library name `pylib` in `udfs` dataverse
curl -v -u admin:admin -X POST -F 'data=@./lib.pyz' localhost:19002/admin/udf/udfs/pylib
@@ -127,24 +126,31 @@
USE udfs;
- CREATE FUNCTION sentiment(a)
- LANGUAGE PYTHON DETERMINISTIC
- AS "pylib","sentiment_mod:sent_model";
+ CREATE FUNCTION sentiment(a)
+ AS "sentiment_mod", "sent_model.sentiment" AT pylib;
-By default, AsterixDB will treat all external functions as `NOT DETERMINISTIC`. Loosely this means the result might
-change depending on when the function is called, regardless of the input. This function behaves the same on each input,
-so we can safely call it `DETERMINISTIC`. This will enable better optimization of queries including this function.
+By default, AsterixDB will treat all external functions as deterministic. It means the function must return the same
+result for the same input, irrespective of when or how many times the function is called on that input.
+This particular function behaves the same on each input, so it satisfies the deterministic property.
+This enables better optimization of queries including this function.
+If a function is not deterministic then it should be declared as such by using `WITH` sub-clause:
+
+ USE udfs;
+
+ CREATE FUNCTION sentiment(a)
+ AS "sentiment_mod", "sent_model.sentiment" AT pylib
+ WITH { "deterministic": false }
With the function now defined, it can then be used as any other scalar SQL++ function would be. For example:
USE udfs;
INSERT INTO Tweets([
- {"id":1, "msg":"spam is great"},
- {"id":2, "msg":"i will not eat green eggs and ham"},
- {"id":3, "msg":"bacon is better"}]);
+ {"id":1, "msg":"spam is great"},
+ {"id":2, "msg":"i will not eat green eggs and ham"},
+ {"id":3, "msg":"bacon is better"}
+ ]);
- USE udfs;
SELECT t.msg as msg, sentiment(t.msg) as sentiment
FROM Tweets t;
@@ -191,12 +197,12 @@
Then we define the function we want to apply to the feed
- USE udfs;
+ USE udfs;
- CREATE FUNCTION addMentionedUsers(t: TweetType)
- RETURNS TweetType
- LANGUAGE JAVA as "testlib","org.apache.asterix.external.library.AddMentionedUsersFactory"
- WITH {"textFieldName": "text"};
+ CREATE FUNCTION addMentionedUsers(t: TweetType)
+ RETURNS TweetType
+ AS "org.apache.asterix.external.library.AddMentionedUsersFactory" AT testlib
+ WITH { "resources": { "textFieldName": "text" } };
After creating the feed, we attach the UDF onto the feed pipeline and start the feed with following statements:
diff --git a/asterixdb/asterix-doc/src/site/site.xml b/asterixdb/asterix-doc/src/site/site.xml
index 6db028e..f1cd93b 100644
--- a/asterixdb/asterix-doc/src/site/site.xml
+++ b/asterixdb/asterix-doc/src/site/site.xml
@@ -80,6 +80,7 @@
<menu name="Queries">
<item name="The SQL++ Query Language" href="sqlpp/manual.html"/>
+ <item name="Raw SQL++ Grammar" href="SQLPP.html"/>
<item name="Builtin Functions" href="sqlpp/builtins.html"/>
</menu>
diff --git a/asterixdb/asterix-external-data/pom.xml b/asterixdb/asterix-external-data/pom.xml
index 5385438..4fed101 100644
--- a/asterixdb/asterix-external-data/pom.xml
+++ b/asterixdb/asterix-external-data/pom.xml
@@ -441,14 +441,6 @@
<artifactId>guava</artifactId>
</dependency>
<dependency>
- <groupId>net.razorvine</groupId>
- <artifactId>pyrolite</artifactId>
- </dependency>
- <dependency>
- <groupId>net.razorvine</groupId>
- <artifactId>serpent</artifactId>
- </dependency>
- <dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>http-client-spi</artifactId>
</dependency>
@@ -469,6 +461,10 @@
<artifactId>auth</artifactId>
</dependency>
<dependency>
+ <groupId>org.msgpack</groupId>
+ <artifactId>msgpack-core</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
</dependency>
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStreamFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStreamFactory.java
index 67a7c93..f3a36ff 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStreamFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStreamFactory.java
@@ -103,10 +103,10 @@
for (Map.Entry<String, String> entry : configuration.entrySet()) {
if (entry.getKey().startsWith(KEY_INCLUDE)) {
pattern = entry.getValue();
- includeMatchers.add(Pattern.compile(ExternalDataUtils.wildcardToRegex(pattern)).matcher(""));
+ includeMatchers.add(Pattern.compile(ExternalDataUtils.patternToRegex(pattern)).matcher(""));
} else if (entry.getKey().startsWith(KEY_EXCLUDE)) {
pattern = entry.getValue();
- excludeMatchers.add(Pattern.compile(ExternalDataUtils.wildcardToRegex(pattern)).matcher(""));
+ excludeMatchers.add(Pattern.compile(ExternalDataUtils.patternToRegex(pattern)).matcher(""));
}
}
} catch (PatternSyntaxException ex) {
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/ipc/MessageType.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/ipc/MessageType.java
new file mode 100644
index 0000000..506d9d3
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/ipc/MessageType.java
@@ -0,0 +1,40 @@
+/**
+ * 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.external.ipc;
+
+public enum MessageType {
+ HELO,
+ QUIT,
+ INIT,
+ INIT_RSP,
+ CALL,
+ CALL_RSP,
+ ERROR;
+
+ static MessageType[] messageTypes;
+ static {
+ messageTypes = values();
+ }
+
+ public static MessageType fromByte(byte b) {
+ if (b > messageTypes.length - 1) {
+ return null;
+ }
+ return messageTypes[b];
+ }
+}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/ipc/PythonIPCProto.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/ipc/PythonIPCProto.java
new file mode 100644
index 0000000..feb52cf
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/ipc/PythonIPCProto.java
@@ -0,0 +1,144 @@
+/**
+ * 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.external.ipc;
+
+import static org.apache.hyracks.ipc.impl.Message.HEADER_SIZE;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.ByteBuffer;
+
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.hyracks.ipc.impl.IPCSystem;
+import org.apache.hyracks.ipc.impl.Message;
+import org.msgpack.core.MessagePack;
+
+public class PythonIPCProto {
+
+ public PythonMessageBuilder messageBuilder;
+ OutputStream sockOut;
+ ByteBuffer headerBuffer = ByteBuffer.allocate(21);
+ ByteBuffer recvBuffer = ByteBuffer.allocate(4096);
+ ExternalFunctionResultRouter router;
+ IPCSystem ipcSys;
+ Message outMsg;
+ Long key;
+
+ public PythonIPCProto(OutputStream sockOut, ExternalFunctionResultRouter router, IPCSystem ipcSys)
+ throws IOException {
+ this.sockOut = sockOut;
+ messageBuilder = new PythonMessageBuilder();
+ this.router = router;
+ this.ipcSys = ipcSys;
+ this.outMsg = new Message(null);
+ }
+
+ public void start() {
+ this.key = router.insertRoute(recvBuffer);
+ }
+
+ public void helo() throws IOException, AsterixException {
+ recvBuffer.clear();
+ recvBuffer.position(0);
+ recvBuffer.limit(0);
+ messageBuilder.buf.clear();
+ messageBuilder.buf.position(0);
+ messageBuilder.hello();
+ sendMsg();
+ receiveMsg();
+ if (getResponseType() != MessageType.HELO) {
+ throw new IllegalStateException("Illegal reply received, expected HELO");
+ }
+ }
+
+ public void init(String module, String clazz, String fn) throws IOException, AsterixException {
+ recvBuffer.clear();
+ recvBuffer.position(0);
+ recvBuffer.limit(0);
+ messageBuilder.buf.clear();
+ messageBuilder.buf.position(0);
+ messageBuilder.init(module, clazz, fn);
+ sendMsg();
+ receiveMsg();
+ if (getResponseType() != MessageType.INIT_RSP) {
+ throw new IllegalStateException("Illegal reply received, expected INIT_RSP");
+ }
+ }
+
+ public ByteBuffer call(ByteBuffer args, int numArgs) throws Exception {
+ recvBuffer.clear();
+ recvBuffer.position(0);
+ recvBuffer.limit(0);
+ messageBuilder.buf.clear();
+ messageBuilder.buf.position(0);
+ messageBuilder.call(args.array(), args.position(), numArgs);
+ sendMsg();
+ receiveMsg();
+ if (getResponseType() != MessageType.CALL_RSP) {
+ throw new IllegalStateException("Illegal reply received, expected CALL_RSP, recvd: " + getResponseType());
+ }
+ return recvBuffer;
+ }
+
+ public void quit() throws IOException {
+ messageBuilder.quit();
+ router.removeRoute(key);
+ }
+
+ public void receiveMsg() throws IOException, AsterixException {
+ Exception except = null;
+ try {
+ synchronized (recvBuffer) {
+ while (recvBuffer.limit() == 0) {
+ recvBuffer.wait(100);
+ }
+ }
+ if (router.hasException(key)) {
+ except = router.getException(key);
+ }
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new AsterixException(ErrorCode.EXTERNAL_UDF_EXCEPTION, e);
+ }
+ if (except != null) {
+ throw new AsterixException(ErrorCode.EXTERNAL_UDF_EXCEPTION, except);
+ }
+ messageBuilder.readHead(recvBuffer);
+ if (messageBuilder.type == MessageType.ERROR) {
+ throw new AsterixException(ErrorCode.EXTERNAL_UDF_EXCEPTION,
+ MessagePack.newDefaultUnpacker(recvBuffer).unpackString());
+ }
+ }
+
+ public void sendMsg() throws IOException {
+ headerBuffer.clear();
+ headerBuffer.position(0);
+ headerBuffer.putInt(HEADER_SIZE + messageBuilder.buf.position());
+ headerBuffer.putLong(-1);
+ headerBuffer.putLong(key);
+ headerBuffer.put(Message.NORMAL);
+ sockOut.write(headerBuffer.array(), 0, HEADER_SIZE + Integer.BYTES);
+ sockOut.write(messageBuilder.buf.array(), 0, messageBuilder.buf.position());
+ sockOut.flush();
+ }
+
+ public MessageType getResponseType() {
+ return messageBuilder.type;
+ }
+
+}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/ipc/PythonMessageBuilder.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/ipc/PythonMessageBuilder.java
new file mode 100644
index 0000000..506e80d
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/ipc/PythonMessageBuilder.java
@@ -0,0 +1,132 @@
+/**
+ * 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.external.ipc;
+
+import static org.apache.hyracks.api.util.JavaSerializationUtils.getSerializationProvider;
+import static org.msgpack.core.MessagePack.Code.*;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+
+import org.apache.asterix.external.library.msgpack.MessagePackerFromADM;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class PythonMessageBuilder {
+ private static final int MAX_BUF_SIZE = 21 * 1024 * 1024; //21MB.
+ private static final Logger LOGGER = LogManager.getLogger();
+ MessageType type;
+ long dataLength;
+ ByteBuffer buf;
+ String[] initAry = new String[3];
+
+ public PythonMessageBuilder() {
+ this.type = null;
+ dataLength = -1;
+ this.buf = ByteBuffer.allocate(4096);
+ }
+
+ public void setType(MessageType type) {
+ this.type = type;
+ }
+
+ public void packHeader() {
+ MessagePackerFromADM.packFixPos(buf, (byte) type.ordinal());
+ }
+
+ //TODO: this is wrong for any multibyte chars
+ private int getStringLength(String s) {
+ return s.length();
+ }
+
+ public void readHead(ByteBuffer buf) {
+ byte typ = buf.get();
+ type = MessageType.fromByte(typ);
+ }
+
+ public void hello() throws IOException {
+ this.type = MessageType.HELO;
+ byte[] serAddr = serialize(new InetSocketAddress(InetAddress.getLoopbackAddress(), 1));
+ dataLength = serAddr.length + 5;
+ packHeader();
+ //TODO:make this cleaner
+ buf.put(BIN32);
+ buf.putInt(serAddr.length);
+ buf.put(serAddr);
+ }
+
+ public void quit() {
+ this.type = MessageType.QUIT;
+ dataLength = getStringLength("QUIT");
+ packHeader();
+ MessagePackerFromADM.packFixStr(buf, "QUIT");
+ }
+
+ public void init(String module, String clazz, String fn) {
+ this.type = MessageType.INIT;
+ initAry[0] = module;
+ initAry[1] = clazz;
+ initAry[2] = fn;
+ dataLength = Arrays.stream(initAry).mapToInt(s -> getStringLength(s)).sum() + 2;
+ packHeader();
+ MessagePackerFromADM.packFixArrayHeader(buf, (byte) initAry.length);
+ for (String s : initAry) {
+ MessagePackerFromADM.packStr(buf, s);
+ }
+ }
+
+ public void call(byte[] args, int lim, int numArgs) {
+ if (args.length > buf.capacity()) {
+ int growTo = ExternalFunctionResultRouter.closestPow2(args.length);
+ if (growTo > MAX_BUF_SIZE) {
+ //TODO: something more graceful
+ throw new IllegalArgumentException("Reached maximum buffer size");
+ }
+ buf = ByteBuffer.allocate(growTo);
+ }
+ buf.clear();
+ buf.position(0);
+ this.type = MessageType.CALL;
+ dataLength = 5 + 1 + lim;
+ packHeader();
+ //TODO: make this switch between fixarray/array16/array32
+ if (numArgs == 0) {
+ buf.put(NIL);
+ } else {
+ buf.put(ARRAY32);
+ buf.putInt(numArgs);
+ buf.put(args, 0, lim);
+ }
+ }
+
+ //this is used to send a serialized java inetaddress to the entrypoint so it can send it back
+ //to the IPC subsystem, which needs it. don't use this for anything else.
+ private byte[] serialize(Object object) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ try (ObjectOutputStream oos = getSerializationProvider().newObjectOutputStream(baos)) {
+ oos.writeObject(object);
+ oos.flush();
+ baos.close();
+ }
+ return baos.toByteArray();
+ }
+}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java
index b0a4dfdc..d7a446b 100755
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java
@@ -23,6 +23,8 @@
import java.io.IOException;
import java.io.OutputStream;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
@@ -34,6 +36,7 @@
import org.apache.asterix.common.library.ILibraryManager;
import org.apache.asterix.common.library.LibraryDescriptor;
import org.apache.asterix.common.metadata.DataverseName;
+import org.apache.asterix.external.ipc.ExternalFunctionResultRouter;
import org.apache.commons.io.FileUtils;
import org.apache.hyracks.algebricks.common.utils.Pair;
import org.apache.hyracks.api.exceptions.HyracksDataException;
@@ -43,6 +46,8 @@
import org.apache.hyracks.api.util.IoUtil;
import org.apache.hyracks.control.common.work.AbstractWork;
import org.apache.hyracks.control.nc.NodeControllerService;
+import org.apache.hyracks.ipc.impl.IPCSystem;
+import org.apache.hyracks.ipc.sockets.PlainSocketChannelFactory;
import org.apache.hyracks.util.file.FileUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -81,6 +86,8 @@
private final FileReference trashDir;
private final Path trashDirPath;
private final Map<Pair<DataverseName, String>, ILibrary> libraries = new HashMap<>();
+ private IPCSystem pythonIPC;
+ private final ExternalFunctionResultRouter router;
public ExternalLibraryManager(NodeControllerService ncs, IPersistedResourceRegistry reg, FileReference appDir) {
this.ncs = ncs;
@@ -91,10 +98,14 @@
trashDir = baseDir.getChild(TRASH_DIR_NAME);
trashDirPath = trashDir.getFile().toPath().normalize();
objectMapper = createObjectMapper();
+ router = new ExternalFunctionResultRouter();
}
- public void initStorage(boolean resetStorageData) throws HyracksDataException {
+ public void initialize(boolean resetStorageData) throws HyracksDataException {
try {
+ pythonIPC = new IPCSystem(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0),
+ PlainSocketChannelFactory.INSTANCE, router, new ExternalFunctionResultRouter.NoOpNoSerJustDe());
+ pythonIPC.start();
Path baseDirPath = baseDir.getFile().toPath();
if (Files.isDirectory(baseDirPath)) {
if (resetStorageData) {
@@ -291,6 +302,16 @@
return om;
}
+ @Override
+ public ExternalFunctionResultRouter getRouter() {
+ return router;
+ }
+
+ @Override
+ public IPCSystem getIPCI() {
+ return pythonIPC;
+ }
+
private static final class DeleteDirectoryWork extends AbstractWork {
private final Path path;
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionDescriptor.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionDescriptor.java
index c033cea..61ab3ea 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionDescriptor.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionDescriptor.java
@@ -47,7 +47,7 @@
@Override
public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) {
- return new ExternalScalarFunctionEvaluatorFactory(finfo, args, argTypes);
+ return new ExternalScalarFunctionEvaluatorFactory(finfo, args, argTypes, sourceLoc);
}
@Override
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluator.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluator.java
index 3ff706d..5ae1995 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluator.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluator.java
@@ -21,12 +21,14 @@
import org.apache.asterix.common.api.INcApplicationContext;
import org.apache.asterix.common.library.ILibraryManager;
+import org.apache.asterix.external.ipc.ExternalFunctionResultRouter;
import org.apache.asterix.om.functions.IExternalFunctionInfo;
import org.apache.asterix.om.types.IAType;
import org.apache.hyracks.algebricks.runtime.base.IEvaluatorContext;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.ipc.impl.IPCSystem;
public abstract class ExternalScalarFunctionEvaluator implements IScalarEvaluator {
@@ -34,6 +36,8 @@
protected final IScalarEvaluator[] argEvals;
protected final IAType[] argTypes;
protected final ILibraryManager libraryManager;
+ protected final ExternalFunctionResultRouter router;
+ protected final IPCSystem ipcSys;
public ExternalScalarFunctionEvaluator(IExternalFunctionInfo finfo, IScalarEvaluatorFactory[] args,
IAType[] argTypes, IEvaluatorContext context) throws HyracksDataException {
@@ -45,5 +49,7 @@
}
libraryManager =
((INcApplicationContext) context.getServiceContext().getApplicationContext()).getLibraryManager();
+ router = libraryManager.getRouter();
+ ipcSys = libraryManager.getIPCI();
}
-}
\ No newline at end of file
+}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluatorFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluatorFactory.java
index ec757a1..de75f7a 100755
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluatorFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarFunctionEvaluatorFactory.java
@@ -25,6 +25,7 @@
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public class ExternalScalarFunctionEvaluatorFactory implements IScalarEvaluatorFactory {
@@ -32,12 +33,14 @@
private final IExternalFunctionInfo finfo;
private final IScalarEvaluatorFactory[] args;
private final IAType[] argTypes;
+ private final SourceLocation sourceLoc;
public ExternalScalarFunctionEvaluatorFactory(IExternalFunctionInfo finfo, IScalarEvaluatorFactory[] args,
- IAType[] argTypes) {
+ IAType[] argTypes, SourceLocation sourceLoc) {
this.finfo = finfo;
this.args = args;
this.argTypes = argTypes;
+ this.sourceLoc = sourceLoc;
}
@Override
@@ -46,7 +49,7 @@
case JAVA:
return new ExternalScalarJavaFunctionEvaluator(finfo, args, argTypes, ctx);
case PYTHON:
- return new ExternalScalarPythonFunctionEvaluator(finfo, args, argTypes, ctx);
+ return new ExternalScalarPythonFunctionEvaluator(finfo, args, argTypes, ctx, sourceLoc);
default:
throw new HyracksDataException(ErrorCode.ASTERIX, ErrorCode.LIBRARY_EXTERNAL_FUNCTION_UNSUPPORTED_KIND,
finfo.getLanguage());
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarJavaFunctionEvaluator.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarJavaFunctionEvaluator.java
index 4a073c9..33b0369 100755
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarJavaFunctionEvaluator.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarJavaFunctionEvaluator.java
@@ -23,7 +23,6 @@
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.exceptions.RuntimeDataException;
-import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.external.api.IExternalScalarFunction;
import org.apache.asterix.external.api.IFunctionFactory;
@@ -48,21 +47,20 @@
IEvaluatorContext context) throws HyracksDataException {
super(finfo, args, argTypes, context);
- DataverseName functionDataverse = FunctionSignature.getDataverseName(finfo.getFunctionIdentifier());
- String functionLibrary = finfo.getLibrary();
+ DataverseName libraryDataverseName = finfo.getLibraryDataverseName();
+ String libraryName = finfo.getLibraryName();
+ JavaLibrary library = (JavaLibrary) libraryManager.getLibrary(libraryDataverseName, libraryName);
- functionHelper = new JavaFunctionHelper(finfo, argTypes, resultBuffer);
- JavaLibrary lib = (JavaLibrary) libraryManager.getLibrary(functionDataverse, functionLibrary);
- ClassLoader libraryClassLoader = lib.getClassLoader();
- String classname = finfo.getExternalIdentifier().get(0).trim();
+ String classname = finfo.getExternalIdentifier().get(0);
try {
- Class<?> clazz = Class.forName(classname, true, libraryClassLoader);
+ Class<?> clazz = Class.forName(classname, true, library.getClassLoader());
IFunctionFactory externalFunctionFactory = (IFunctionFactory) clazz.newInstance();
externalFunctionInstance = (IExternalScalarFunction) externalFunctionFactory.getExternalFunction();
} catch (Exception e) {
throw new RuntimeDataException(ErrorCode.LIBRARY_EXTERNAL_FUNCTION_UNABLE_TO_LOAD_CLASS, e, classname);
}
+ functionHelper = new JavaFunctionHelper(finfo, argTypes, resultBuffer);
try {
externalFunctionInstance.initialize(functionHelper);
} catch (Exception e) {
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarPythonFunctionEvaluator.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarPythonFunctionEvaluator.java
index e49c97e..2353c6d 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarPythonFunctionEvaluator.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalScalarPythonFunctionEvaluator.java
@@ -22,36 +22,36 @@
import java.io.DataOutput;
import java.io.File;
import java.io.IOException;
-import java.net.ConnectException;
-import java.net.ServerSocket;
-import java.util.HashMap;
+import java.net.InetAddress;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
-import java.util.Map;
import java.util.Objects;
+import java.util.concurrent.TimeUnit;
-import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.WarningUtil;
import org.apache.asterix.common.library.ILibraryManager;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.external.api.IJObject;
-import org.apache.asterix.external.library.java.JObjectPointableVisitor;
-import org.apache.asterix.external.library.java.base.JComplexObject;
-import org.apache.asterix.external.library.java.base.JObject;
+import org.apache.asterix.external.ipc.ExternalFunctionResultRouter;
+import org.apache.asterix.external.ipc.PythonIPCProto;
+import org.apache.asterix.external.library.msgpack.MessagePackerFromADM;
+import org.apache.asterix.external.library.msgpack.MessageUnpackerToADM;
import org.apache.asterix.om.functions.IExternalFunctionInfo;
-import org.apache.asterix.om.pointables.AFlatValuePointable;
-import org.apache.asterix.om.pointables.AListVisitablePointable;
-import org.apache.asterix.om.pointables.ARecordVisitablePointable;
-import org.apache.asterix.om.pointables.PointableAllocator;
-import org.apache.asterix.om.pointables.base.IVisitablePointable;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.EnumDeserializer;
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.om.types.TypeTagUtil;
-import org.apache.asterix.om.util.container.IObjectPool;
-import org.apache.asterix.om.util.container.ListObjectPool;
import org.apache.hyracks.algebricks.runtime.base.IEvaluatorContext;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.config.IApplicationConfig;
import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.TaskAttemptId;
import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.exceptions.IWarningCollector;
+import org.apache.hyracks.api.exceptions.SourceLocation;
import org.apache.hyracks.api.job.JobId;
import org.apache.hyracks.api.resources.IDeallocatable;
import org.apache.hyracks.control.common.controllers.NCConfig;
@@ -62,49 +62,72 @@
import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
import org.apache.hyracks.dataflow.std.base.AbstractStateObject;
-
-import net.razorvine.pyro.PyroProxy;
+import org.apache.hyracks.ipc.impl.IPCSystem;
class ExternalScalarPythonFunctionEvaluator extends ExternalScalarFunctionEvaluator {
private final PythonLibraryEvaluator libraryEvaluator;
private final ArrayBackedValueStorage resultBuffer = new ArrayBackedValueStorage();
- private final PointableAllocator pointableAllocator;
- private final JObjectPointableVisitor pointableVisitor;
- private final Object[] argHolder;
- private final IObjectPool<IJObject, IAType> reflectingPool = new ListObjectPool<>(JTypeObjectFactory.INSTANCE);
- private final Map<IAType, TypeInfo> infoPool = new HashMap<>();
+ private final ByteBuffer argHolder;
+ private final ByteBuffer outputWrapper;
+ private final IEvaluatorContext evaluatorContext;
private static final String ENTRYPOINT = "entrypoint.py";
- private static final String PY_NO_SITE_PKGS_OPT = "-S";
- private static final String PY_NO_USER_PKGS_OPT = "-s";
+ private static final String SITE_PACKAGES = "site-packages";
private final IPointable[] argValues;
ExternalScalarPythonFunctionEvaluator(IExternalFunctionInfo finfo, IScalarEvaluatorFactory[] args,
- IAType[] argTypes, IEvaluatorContext ctx) throws HyracksDataException {
+ IAType[] argTypes, IEvaluatorContext ctx, SourceLocation sourceLoc) throws HyracksDataException {
super(finfo, args, argTypes, ctx);
+ IApplicationConfig cfg = ctx.getServiceContext().getAppConfig();
+ String pythonPathCmd = cfg.getString(NCConfig.Option.PYTHON_CMD);
+ List<String> pythonArgs = new ArrayList<>();
+ if (pythonPathCmd == null) {
+ //if absolute path to interpreter is not specified, use environmental python
+ pythonPathCmd = "/usr/bin/env";
+ pythonArgs.add("python3");
+ }
+ File pythonPath = new File(pythonPathCmd);
+ List<String> sitePkgs = new ArrayList<>();
+ sitePkgs.add(SITE_PACKAGES);
+ String[] addlSitePackages =
+ ctx.getServiceContext().getAppConfig().getStringArray((NCConfig.Option.PYTHON_ADDITIONAL_PACKAGES));
+ sitePkgs.addAll(Arrays.asList(addlSitePackages));
+ if (cfg.getBoolean(NCConfig.Option.PYTHON_USE_BUNDLED_MSGPACK)) {
+ sitePkgs.add("ipc" + File.separator + SITE_PACKAGES + File.separator);
+ }
+ String[] pythonArgsRaw = ctx.getServiceContext().getAppConfig().getStringArray(NCConfig.Option.PYTHON_ARGS);
+ if (pythonArgsRaw != null) {
+ pythonArgs.addAll(Arrays.asList(pythonArgsRaw));
+ }
+ StringBuilder sitePackagesPathBuilder = new StringBuilder();
+ for (int i = 0; i < sitePkgs.size() - 1; i++) {
+ sitePackagesPathBuilder.append(sitePkgs.get(i));
+ sitePackagesPathBuilder.append(File.pathSeparator);
+ }
+ sitePackagesPathBuilder.append(sitePkgs.get(sitePkgs.size() - 1));
- File pythonPath = new File(ctx.getServiceContext().getAppConfig().getString(NCConfig.Option.PYTHON_HOME));
- this.pointableAllocator = new PointableAllocator();
- this.pointableVisitor = new JObjectPointableVisitor();
-
- DataverseName dataverseName = FunctionSignature.getDataverseName(finfo.getFunctionIdentifier());
try {
- libraryEvaluator = PythonLibraryEvaluator.getInstance(dataverseName, finfo, libraryManager, pythonPath,
- ctx.getTaskContext());
- } catch (IOException | InterruptedException e) {
+ libraryEvaluator = PythonLibraryEvaluator.getInstance(finfo, libraryManager, router, ipcSys, pythonPath,
+ ctx.getTaskContext(), sitePackagesPathBuilder.toString(), pythonArgs, ctx.getWarningCollector(),
+ sourceLoc);
+ } catch (IOException | AsterixException e) {
throw new HyracksDataException("Failed to initialize Python", e);
}
argValues = new IPointable[args.length];
for (int i = 0; i < argValues.length; i++) {
argValues[i] = VoidPointable.FACTORY.createPointable();
}
- this.argHolder = new Object[args.length];
+ //TODO: these should be dynamic
+ this.argHolder = ByteBuffer.wrap(new byte[Short.MAX_VALUE * 2]);
+ this.outputWrapper = ByteBuffer.wrap(new byte[Short.MAX_VALUE * 2]);
+ this.evaluatorContext = ctx;
}
@Override
public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
+ argHolder.clear();
for (int i = 0, ln = argEvals.length; i < ln; i++) {
argEvals[i].evaluate(tuple, argValues[i]);
try {
@@ -114,10 +137,10 @@
}
}
try {
- Object res = libraryEvaluator.callPython(argHolder);
+ ByteBuffer res = libraryEvaluator.callPython(argHolder, argTypes.length);
resultBuffer.reset();
wrap(res, resultBuffer.getDataOutput());
- } catch (IOException e) {
+ } catch (Exception e) {
throw new HyracksDataException("Error evaluating Python UDF", e);
}
result.set(resultBuffer.getByteArray(), resultBuffer.getStartOffset(), resultBuffer.getLength());
@@ -125,98 +148,130 @@
private static class PythonLibraryEvaluator extends AbstractStateObject implements IDeallocatable {
Process p;
- PyroProxy remoteObj;
IExternalFunctionInfo finfo;
ILibraryManager libMgr;
File pythonHome;
+ PythonIPCProto proto;
+ ExternalFunctionResultRouter router;
+ IPCSystem ipcSys;
+ String module;
+ String clazz;
+ String fn;
+ String sitePkgs;
+ List<String> pythonArgs;
+ TaskAttemptId task;
+ IWarningCollector warningCollector;
+ SourceLocation sourceLoc;
private PythonLibraryEvaluator(JobId jobId, PythonLibraryEvaluatorId evaluatorId, IExternalFunctionInfo finfo,
- ILibraryManager libMgr, File pythonHome) {
+ ILibraryManager libMgr, File pythonHome, String sitePkgs, List<String> pythonArgs,
+ ExternalFunctionResultRouter router, IPCSystem ipcSys, TaskAttemptId task,
+ IWarningCollector warningCollector, SourceLocation sourceLoc) {
super(jobId, evaluatorId);
this.finfo = finfo;
this.libMgr = libMgr;
this.pythonHome = pythonHome;
+ this.sitePkgs = sitePkgs;
+ this.pythonArgs = pythonArgs;
+ this.router = router;
+ this.task = task;
+ this.ipcSys = ipcSys;
+ this.warningCollector = warningCollector;
+ this.sourceLoc = sourceLoc;
}
- public void initialize() throws IOException, InterruptedException {
+ public void initialize() throws IOException, AsterixException {
PythonLibraryEvaluatorId fnId = (PythonLibraryEvaluatorId) id;
List<String> externalIdents = finfo.getExternalIdentifier();
- PythonLibrary library = (PythonLibrary) libMgr.getLibrary(fnId.dataverseName, fnId.libraryName);
+ PythonLibrary library = (PythonLibrary) libMgr.getLibrary(fnId.libraryDataverseName, fnId.libraryName);
String wd = library.getFile().getAbsolutePath();
- int port = getFreeHighPort();
String packageModule = externalIdents.get(0);
- String clazz = "None";
+ String clazz;
String fn;
- if (externalIdents.size() > 2) {
- clazz = externalIdents.get(1);
- fn = externalIdents.get(2);
+ String externalIdent1 = externalIdents.get(1);
+ int idx = externalIdent1.lastIndexOf('.');
+ if (idx >= 0) {
+ clazz = externalIdent1.substring(0, idx);
+ fn = externalIdent1.substring(idx + 1);
} else {
- fn = externalIdents.get(1);
+ clazz = "None";
+ fn = externalIdent1;
}
- ProcessBuilder pb = new ProcessBuilder(pythonHome.getAbsolutePath(), PY_NO_SITE_PKGS_OPT,
- PY_NO_USER_PKGS_OPT, ENTRYPOINT, Integer.toString(port), packageModule, clazz, fn);
+ this.fn = fn;
+ this.clazz = clazz;
+ this.module = packageModule;
+ int port = ipcSys.getSocketAddress().getPort();
+ List<String> args = new ArrayList<>();
+ args.add(pythonHome.getAbsolutePath());
+ args.addAll(pythonArgs);
+ args.add(ENTRYPOINT);
+ args.add(InetAddress.getLoopbackAddress().getHostAddress());
+ args.add(Integer.toString(port));
+ args.add(sitePkgs);
+ ProcessBuilder pb = new ProcessBuilder(args.toArray(new String[0]));
pb.directory(new File(wd));
- pb.environment().clear();
- pb.inheritIO();
p = pb.start();
- remoteObj = new PyroProxy("127.0.0.1", port, "nextTuple");
- waitForPython();
+ proto = new PythonIPCProto(p.getOutputStream(), router, ipcSys);
+ proto.start();
+ proto.helo();
+ proto.init(packageModule, clazz, fn);
}
- Object callPython(Object[] arguments) throws IOException {
- return remoteObj.call("nextTuple", arguments);
+ ByteBuffer callPython(ByteBuffer arguments, int numArgs) throws Exception {
+ ByteBuffer ret = null;
+ try {
+ ret = proto.call(arguments, numArgs);
+ } catch (AsterixException e) {
+ warningCollector
+ .warn(WarningUtil.forAsterix(sourceLoc, ErrorCode.EXTERNAL_UDF_EXCEPTION, e.getMessage()));
+ }
+ return ret;
}
@Override
public void deallocate() {
- p.destroyForcibly();
+ if (p != null) {
+ boolean dead = false;
+ try {
+ p.destroy();
+ dead = p.waitFor(100, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ //gonna kill it anyway
+ }
+ if (!dead) {
+ p.destroyForcibly();
+ }
+ }
}
- private static PythonLibraryEvaluator getInstance(DataverseName dataverseName, IExternalFunctionInfo finfo,
- ILibraryManager libMgr, File pythonHome, IHyracksTaskContext ctx)
- throws IOException, InterruptedException {
- PythonLibraryEvaluatorId evaluatorId = new PythonLibraryEvaluatorId(dataverseName, finfo.getLibrary());
+ private static PythonLibraryEvaluator getInstance(IExternalFunctionInfo finfo, ILibraryManager libMgr,
+ ExternalFunctionResultRouter router, IPCSystem ipcSys, File pythonHome, IHyracksTaskContext ctx,
+ String sitePkgs, List<String> pythonArgs, IWarningCollector warningCollector, SourceLocation sourceLoc)
+ throws IOException, AsterixException {
+ PythonLibraryEvaluatorId evaluatorId =
+ new PythonLibraryEvaluatorId(finfo.getLibraryDataverseName(), finfo.getLibraryName());
PythonLibraryEvaluator evaluator = (PythonLibraryEvaluator) ctx.getStateObject(evaluatorId);
if (evaluator == null) {
evaluator = new PythonLibraryEvaluator(ctx.getJobletContext().getJobId(), evaluatorId, finfo, libMgr,
- pythonHome);
- evaluator.initialize();
+ pythonHome, sitePkgs, pythonArgs, router, ipcSys, ctx.getTaskAttemptId(), warningCollector,
+ sourceLoc);
ctx.registerDeallocatable(evaluator);
+ evaluator.initialize();
ctx.setStateObject(evaluator);
}
return evaluator;
}
-
- private int getFreeHighPort() throws IOException {
- int port;
- try (ServerSocket socket = new ServerSocket(0)) {
- socket.setReuseAddress(true);
- port = socket.getLocalPort();
- }
- return port;
- }
-
- private void waitForPython() throws IOException, InterruptedException {
- for (int i = 0; i < 100; i++) {
- try {
- remoteObj.call("ping");
- break;
- } catch (ConnectException e) {
- Thread.sleep(100);
- }
- }
- }
}
private static final class PythonLibraryEvaluatorId {
- private final DataverseName dataverseName;
+ private final DataverseName libraryDataverseName;
private final String libraryName;
- private PythonLibraryEvaluatorId(DataverseName dataverseName, String libraryName) {
- this.dataverseName = Objects.requireNonNull(dataverseName);
+ private PythonLibraryEvaluatorId(DataverseName libraryDataverseName, String libraryName) {
+ this.libraryDataverseName = Objects.requireNonNull(libraryDataverseName);
this.libraryName = Objects.requireNonNull(libraryName);
}
@@ -227,86 +282,42 @@
if (o == null || getClass() != o.getClass())
return false;
PythonLibraryEvaluatorId that = (PythonLibraryEvaluatorId) o;
- return dataverseName.equals(that.dataverseName) && libraryName.equals(that.libraryName);
+ return libraryDataverseName.equals(that.libraryDataverseName) && libraryName.equals(that.libraryName);
}
@Override
public int hashCode() {
- return Objects.hash(dataverseName, libraryName);
+ return Objects.hash(libraryDataverseName, libraryName);
}
}
private void setArgument(int index, IValueReference valueReference) throws IOException {
- IVisitablePointable pointable;
- IJObject jobj;
IAType type = argTypes[index];
- TypeInfo info;
- switch (type.getTypeTag()) {
- case OBJECT:
- pointable = pointableAllocator.allocateRecordValue(type);
- pointable.set(valueReference);
- info = getTypeInfo(type);
- jobj = pointableVisitor.visit((ARecordVisitablePointable) pointable, info);
- break;
- case ARRAY:
- case MULTISET:
- pointable = pointableAllocator.allocateListValue(type);
- pointable.set(valueReference);
- info = getTypeInfo(type);
- jobj = pointableVisitor.visit((AListVisitablePointable) pointable, info);
- break;
+ ATypeTag tag = type.getTypeTag();
+ switch (tag) {
case ANY:
TaggedValuePointable pointy = TaggedValuePointable.FACTORY.createPointable();
pointy.set(valueReference);
ATypeTag rtTypeTag = EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(pointy.getTag());
IAType rtType = TypeTagUtil.getBuiltinTypeByTag(rtTypeTag);
- info = getTypeInfo(rtType);
- switch (rtTypeTag) {
- case OBJECT:
- pointable = pointableAllocator.allocateRecordValue(rtType);
- pointable.set(valueReference);
- jobj = pointableVisitor.visit((ARecordVisitablePointable) pointable, info);
- break;
- case ARRAY:
- case MULTISET:
- pointable = pointableAllocator.allocateListValue(rtType);
- pointable.set(valueReference);
- jobj = pointableVisitor.visit((AListVisitablePointable) pointable, info);
- break;
- default:
- pointable = pointableAllocator.allocateFieldValue(rtType);
- pointable.set(valueReference);
- jobj = pointableVisitor.visit((AFlatValuePointable) pointable, info);
- break;
- }
+ MessagePackerFromADM.pack(valueReference, rtType, argHolder);
break;
default:
- pointable = pointableAllocator.allocateFieldValue(type);
- pointable.set(valueReference);
- info = getTypeInfo(type);
- jobj = pointableVisitor.visit((AFlatValuePointable) pointable, info);
+ MessagePackerFromADM.pack(valueReference, type, argHolder);
break;
}
- argHolder[index] = jobj.getValueGeneric();
}
- private TypeInfo getTypeInfo(IAType type) {
- TypeInfo typeInfo = infoPool.get(type);
- if (typeInfo == null) {
- typeInfo = new TypeInfo(reflectingPool, type, type.getTypeTag());
- infoPool.put(type, typeInfo);
+ private void wrap(ByteBuffer resultWrapper, DataOutput out) throws HyracksDataException {
+ //TODO: output wrapper needs to grow with result wrapper
+ outputWrapper.clear();
+ outputWrapper.position(0);
+ MessageUnpackerToADM.unpack(resultWrapper, outputWrapper, true);
+ try {
+ out.write(outputWrapper.array(), 0, outputWrapper.position() + outputWrapper.arrayOffset());
+ } catch (IOException e) {
+ throw new HyracksDataException(e.getMessage());
}
- return typeInfo;
- }
- private void wrap(Object o, DataOutput out) throws HyracksDataException {
- Class concrete = o.getClass();
- IAType asxConv = JObject.convertType(concrete);
- IJObject res = reflectingPool.allocate(asxConv);
- if (res instanceof JComplexObject) {
- ((JComplexObject) res).setPool(reflectingPool);
- }
- res.setValueGeneric(o);
- res.serialize(out, true);
}
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java
index 5f6e1eb..d1b2685 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java
@@ -67,14 +67,14 @@
this.outputProvider = outputProvider;
this.pointableVisitor = new JObjectPointableVisitor();
this.pointableAllocator = new PointableAllocator();
- this.arguments = new IJObject[finfo.getArgumentList().size()];
+ this.arguments = new IJObject[finfo.getParameterTypes().size()];
int index = 0;
- for (IAType param : finfo.getArgumentList()) {
+ for (IAType param : finfo.getParameterTypes()) {
this.arguments[index++] = objectPool.allocate(param);
}
this.resultHolder = objectPool.allocate(finfo.getReturnType());
this.poolTypeInfo = new HashMap<>();
- this.parameters = finfo.getParams();
+ this.parameters = finfo.getResources();
this.argTypes = argTypes;
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/msgpack/MessagePackerFromADM.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/msgpack/MessagePackerFromADM.java
new file mode 100644
index 0000000..383b2f1
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/msgpack/MessagePackerFromADM.java
@@ -0,0 +1,359 @@
+/**
+ * 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.external.library.msgpack;
+
+import static org.msgpack.core.MessagePack.Code.ARRAY32;
+import static org.msgpack.core.MessagePack.Code.FALSE;
+import static org.msgpack.core.MessagePack.Code.FIXARRAY_PREFIX;
+import static org.msgpack.core.MessagePack.Code.FIXSTR_PREFIX;
+import static org.msgpack.core.MessagePack.Code.FLOAT32;
+import static org.msgpack.core.MessagePack.Code.FLOAT64;
+import static org.msgpack.core.MessagePack.Code.INT16;
+import static org.msgpack.core.MessagePack.Code.INT32;
+import static org.msgpack.core.MessagePack.Code.INT64;
+import static org.msgpack.core.MessagePack.Code.INT8;
+import static org.msgpack.core.MessagePack.Code.MAP32;
+import static org.msgpack.core.MessagePack.Code.STR32;
+import static org.msgpack.core.MessagePack.Code.TRUE;
+import static org.msgpack.core.MessagePack.Code.UINT16;
+import static org.msgpack.core.MessagePack.Code.UINT32;
+import static org.msgpack.core.MessagePack.Code.UINT64;
+import static org.msgpack.core.MessagePack.Code.UINT8;
+
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.AUnionType;
+import org.apache.asterix.om.types.AbstractCollectionType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.asterix.om.types.TypeTagUtil;
+import org.apache.asterix.om.utils.NonTaggedFormatUtil;
+import org.apache.asterix.om.utils.RecordUtil;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IValueReference;
+import org.apache.hyracks.data.std.primitive.BooleanPointable;
+import org.apache.hyracks.data.std.primitive.BytePointable;
+import org.apache.hyracks.data.std.primitive.DoublePointable;
+import org.apache.hyracks.data.std.primitive.FloatPointable;
+import org.apache.hyracks.data.std.primitive.IntegerPointable;
+import org.apache.hyracks.data.std.primitive.LongPointable;
+import org.apache.hyracks.data.std.primitive.ShortPointable;
+import org.apache.hyracks.util.string.UTF8StringUtil;
+
+public class MessagePackerFromADM {
+
+ private static final int TYPE_TAG_SIZE = 1;
+ private static final int TYPE_SIZE = 1;
+ private static final int LENGTH_SIZE = 4;
+ private static final int ITEM_COUNT_SIZE = 4;
+ private static final int ITEM_OFFSET_SIZE = 4;
+
+ public static void pack(IValueReference ptr, IAType type, ByteBuffer out) throws HyracksDataException {
+ pack(ptr.getByteArray(), ptr.getStartOffset(), type, true, out);
+ }
+
+ public static void pack(byte[] ptr, int offs, IAType type, boolean tagged, ByteBuffer out)
+ throws HyracksDataException {
+ int relOffs = tagged ? offs + 1 : offs;
+ ATypeTag tag = type.getTypeTag();
+ switch (tag) {
+ case STRING:
+ packStr(ptr, relOffs, out);
+ break;
+ case BOOLEAN:
+ if (BooleanPointable.getBoolean(ptr, relOffs)) {
+ out.put(TRUE);
+ } else {
+ out.put(FALSE);
+ }
+ break;
+ case TINYINT:
+ packByte(out, BytePointable.getByte(ptr, relOffs));
+ break;
+ case SMALLINT:
+ packShort(out, ShortPointable.getShort(ptr, relOffs));
+ break;
+ case INTEGER:
+ packInt(out, IntegerPointable.getInteger(ptr, relOffs));
+ break;
+ case BIGINT:
+ packLong(out, LongPointable.getLong(ptr, relOffs));
+ break;
+ case FLOAT:
+ packFloat(out, FloatPointable.getFloat(ptr, relOffs));
+ break;
+ case DOUBLE:
+ packDouble(out, DoublePointable.getDouble(ptr, relOffs));
+ break;
+ case ARRAY:
+ case MULTISET:
+ packArray(ptr, offs, type, out);
+ break;
+ case OBJECT:
+ packObject(ptr, offs, type, out);
+ break;
+ default:
+ throw new IllegalArgumentException("NYI");
+ }
+ }
+
+ public static byte minPackPosLong(ByteBuffer out, long in) {
+ if (in < 127) {
+ packFixPos(out, (byte) in);
+ return 1;
+ } else if (in < Byte.MAX_VALUE) {
+ out.put(UINT8);
+ out.put((byte) in);
+ return 2;
+ } else if (in < Short.MAX_VALUE) {
+ out.put(UINT16);
+ out.putShort((short) in);
+ return 3;
+ } else if (in < Integer.MAX_VALUE) {
+ out.put(UINT32);
+ out.putInt((int) in);
+ return 5;
+ } else {
+ out.put(UINT64);
+ out.putLong(in);
+ return 9;
+ }
+ }
+
+ public static void packByte(ByteBuffer out, byte in) {
+ out.put(INT8);
+ out.put(in);
+ }
+
+ public static void packShort(ByteBuffer out, short in) {
+ out.put(INT16);
+ out.putShort(in);
+ }
+
+ public static void packInt(ByteBuffer out, int in) {
+ out.put(INT32);
+ out.putInt(in);
+
+ }
+
+ public static void packLong(ByteBuffer out, long in) {
+ out.put(INT64);
+ out.putLong(in);
+ }
+
+ public static void packFloat(ByteBuffer out, float in) {
+ out.put(FLOAT32);
+ out.putFloat(in);
+ }
+
+ public static void packDouble(ByteBuffer out, double in) {
+ out.put(FLOAT64);
+ out.putDouble(in);
+ }
+
+ public static void packFixPos(ByteBuffer out, byte in) {
+ byte mask = (byte) (1 << 7);
+ if ((in & mask) != 0) {
+ throw new IllegalArgumentException("fixint7 must be positive");
+ }
+ out.put(in);
+ }
+
+ public static void packFixStr(ByteBuffer buf, String in) {
+ byte[] strBytes = in.getBytes(Charset.forName("UTF-8"));
+ if (strBytes.length > 31) {
+ throw new IllegalArgumentException("fixstr cannot be longer than 31");
+ }
+ buf.put((byte) (FIXSTR_PREFIX + strBytes.length));
+ buf.put(strBytes);
+ }
+
+ public static void packStr(ByteBuffer out, String in) {
+ out.put(STR32);
+ byte[] strBytes = in.getBytes(Charset.forName("UTF-8"));
+ out.putInt(strBytes.length);
+ out.put(strBytes);
+ }
+
+ private static void packStr(byte[] in, int offs, ByteBuffer out) {
+ out.put(STR32);
+ //TODO: tagged/untagged. closed support is borked so always tagged rn
+ String str = UTF8StringUtil.toString(in, offs);
+ byte[] strBytes = str.getBytes(Charset.forName("UTF-8"));
+ out.putInt(strBytes.length);
+ out.put(strBytes);
+ }
+
+ public static void packStr(String str, ByteBuffer out) {
+ out.put(STR32);
+ byte[] strBytes = str.getBytes(Charset.forName("UTF-8"));
+ out.putInt(strBytes.length);
+ out.put(strBytes);
+ }
+
+ private static void packArray(byte[] in, int offs, IAType type, ByteBuffer out) throws HyracksDataException {
+ //TODO: - could optimize to pack fixarray/array16 for small arrays
+ // - this code is basically a static version of AListPointable, could be deduped
+ AbstractCollectionType collType = (AbstractCollectionType) type;
+ out.put(ARRAY32);
+ int lenOffs = offs + TYPE_TAG_SIZE + TYPE_SIZE;
+ int itemCtOffs = LENGTH_SIZE + lenOffs;
+ int itemCt = IntegerPointable.getInteger(in, itemCtOffs);
+ boolean fixType = NonTaggedFormatUtil.isFixedSizedCollection(type);
+ out.putInt(itemCt);
+ for (int i = 0; i < itemCt; i++) {
+ if (fixType) {
+ int itemOffs = itemCtOffs + ITEM_COUNT_SIZE + (i
+ * NonTaggedFormatUtil.getFieldValueLength(in, 0, collType.getItemType().getTypeTag(), false));
+ pack(in, itemOffs, collType.getItemType(), false, out);
+ } else {
+ int itemOffs =
+ offs + IntegerPointable.getInteger(in, itemCtOffs + ITEM_COUNT_SIZE + (i * ITEM_OFFSET_SIZE));
+ ATypeTag tag = ATypeTag.VALUE_TYPE_MAPPING[BytePointable.getByte(in, itemOffs)];
+ pack(in, itemOffs, TypeTagUtil.getBuiltinTypeByTag(tag), true, out);
+ }
+ }
+ }
+
+ private static void packObject(byte[] in, int offs, IAType type, ByteBuffer out) throws HyracksDataException {
+ ARecordType recType = (ARecordType) type;
+ out.put(MAP32);
+ int fieldCt = recType.getFieldNames().length + RecordUtils.getOpenFieldCount(in, offs, recType);
+ out.putInt(fieldCt);
+ for (int i = 0; i < recType.getFieldNames().length; i++) {
+ String field = recType.getFieldNames()[i];
+ IAType fieldType = RecordUtils.getClosedFieldType(recType, i);
+ packStr(field, out);
+ pack(in, RecordUtils.getClosedFieldOffset(in, offs, recType, i), fieldType, false, out);
+ }
+ if (RecordUtils.isExpanded(in, offs, recType)) {
+ for (int i = 0; i < RecordUtils.getOpenFieldCount(in, offs, recType); i++) {
+ packStr(in, RecordUtils.getOpenFieldNameOffset(in, offs, recType, i), out);
+ ATypeTag tag = ATypeTag.VALUE_TYPE_MAPPING[RecordUtils.getOpenFieldTag(in, offs, recType, i)];
+ pack(in, RecordUtils.getOpenFieldValueOffset(in, offs, recType, i),
+ TypeTagUtil.getBuiltinTypeByTag(tag), true, out);
+ }
+ }
+
+ }
+
+ public static void packFixArrayHeader(ByteBuffer buf, byte numObj) {
+ buf.put((byte) (FIXARRAY_PREFIX + (0x0F & numObj)));
+ }
+
+ private static class RecordUtils {
+
+ static final int TAG_SIZE = 1;
+ static final int RECORD_LENGTH_SIZE = 4;
+ static final int EXPANDED_SIZE = 1;
+ static final int OPEN_OFFSET_SIZE = 4;
+ static final int CLOSED_COUNT_SIZE = 4;
+ static final int FIELD_OFFSET_SIZE = 4;
+ static final int OPEN_COUNT_SIZE = 4;
+ private static final int OPEN_FIELD_HASH_SIZE = 4;
+ private static final int OPEN_FIELD_OFFSET_SIZE = 4;
+ private static final int OPEN_FIELD_HEADER = OPEN_FIELD_HASH_SIZE + OPEN_FIELD_OFFSET_SIZE;
+
+ private static boolean isOpen(ARecordType recordType) {
+ return recordType == null || recordType.isOpen();
+ }
+
+ public static int getLength(byte[] bytes, int start) {
+ return IntegerPointable.getInteger(bytes, start + TAG_SIZE);
+ }
+
+ public static boolean isExpanded(byte[] bytes, int start, ARecordType recordType) {
+ return isOpen(recordType) && BooleanPointable.getBoolean(bytes, start + TAG_SIZE + RECORD_LENGTH_SIZE);
+ }
+
+ public static int getOpenPartOffset(int start, ARecordType recordType) {
+ return start + TAG_SIZE + RECORD_LENGTH_SIZE + (isOpen(recordType) ? EXPANDED_SIZE : 0);
+ }
+
+ public static int getNullBitmapOffset(byte[] bytes, int start, ARecordType recordType) {
+ return getOpenPartOffset(start, recordType) + (isExpanded(bytes, start, recordType) ? OPEN_OFFSET_SIZE : 0)
+ + CLOSED_COUNT_SIZE;
+ }
+
+ public static int getNullBitmapSize(ARecordType recordType) {
+ return RecordUtil.computeNullBitmapSize(recordType);
+ }
+
+ public static final IAType getClosedFieldType(ARecordType recordType, int fieldId) {
+ IAType aType = recordType.getFieldTypes()[fieldId];
+ if (NonTaggedFormatUtil.isOptional(aType)) {
+ // optional field: add the embedded non-null type tag
+ aType = ((AUnionType) aType).getActualType();
+ }
+ return aType;
+ }
+
+ public static final int getClosedFieldOffset(byte[] bytes, int start, ARecordType recordType, int fieldId) {
+ int offset = getNullBitmapOffset(bytes, start, recordType) + getNullBitmapSize(recordType)
+ + fieldId * FIELD_OFFSET_SIZE;
+ return start + IntegerPointable.getInteger(bytes, offset);
+ }
+
+ public static final int getOpenFieldCount(byte[] bytes, int start, ARecordType recordType) {
+ return isExpanded(bytes, start, recordType)
+ ? IntegerPointable.getInteger(bytes, getOpenFieldCountOffset(bytes, start, recordType)) : 0;
+ }
+
+ public static int getOpenFieldCountSize(byte[] bytes, int start, ARecordType recordType) {
+ return isExpanded(bytes, start, recordType) ? OPEN_COUNT_SIZE : 0;
+ }
+
+ public static int getOpenFieldCountOffset(byte[] bytes, int start, ARecordType recordType) {
+ return start + IntegerPointable.getInteger(bytes, getOpenPartOffset(start, recordType));
+ }
+
+ public static final int getOpenFieldValueOffset(byte[] bytes, int start, ARecordType recordType, int fieldId) {
+ return getOpenFieldNameOffset(bytes, start, recordType, fieldId)
+ + getOpenFieldNameSize(bytes, start, recordType, fieldId);
+ }
+
+ public static int getOpenFieldNameSize(byte[] bytes, int start, ARecordType recordType, int fieldId) {
+ int utfleng = UTF8StringUtil.getUTFLength(bytes, getOpenFieldNameOffset(bytes, start, recordType, fieldId));
+ return utfleng + UTF8StringUtil.getNumBytesToStoreLength(utfleng);
+ }
+
+ public static int getOpenFieldNameOffset(byte[] bytes, int start, ARecordType recordType, int fieldId) {
+ return getOpenFieldOffset(bytes, start, recordType, fieldId);
+ }
+
+ public static final byte getOpenFieldTag(byte[] bytes, int start, ARecordType recordType, int fieldId) {
+ return bytes[getOpenFieldValueOffset(bytes, start, recordType, fieldId)];
+ }
+
+ public static int getOpenFieldHashOffset(byte[] bytes, int start, ARecordType recordType, int fieldId) {
+ return getOpenFieldCountOffset(bytes, start, recordType) + getOpenFieldCountSize(bytes, start, recordType)
+ + fieldId * OPEN_FIELD_HEADER;
+ }
+
+ public static int getOpenFieldOffset(byte[] bytes, int start, ARecordType recordType, int fieldId) {
+ return start
+ + IntegerPointable.getInteger(bytes, getOpenFieldOffsetOffset(bytes, start, recordType, fieldId));
+ }
+
+ public static int getOpenFieldOffsetOffset(byte[] bytes, int start, ARecordType recordType, int fieldId) {
+ return getOpenFieldHashOffset(bytes, start, recordType, fieldId) + OPEN_FIELD_HASH_SIZE;
+ }
+ }
+
+}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/msgpack/MessageUnpackerToADM.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/msgpack/MessageUnpackerToADM.java
new file mode 100644
index 0000000..fedd1f6
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/msgpack/MessageUnpackerToADM.java
@@ -0,0 +1,288 @@
+/**
+ * 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.external.library.msgpack;
+
+import static org.msgpack.core.MessagePack.Code.*;
+
+import java.nio.ByteBuffer;
+
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder;
+import org.apache.hyracks.util.string.UTF8StringUtil;
+
+public class MessageUnpackerToADM {
+
+ public static void unpack(ByteBuffer in, ByteBuffer out, boolean tagged) {
+ byte tag = NIL;
+ if (in != null) {
+ tag = in.get();
+ }
+ if (isFixStr(tag)) {
+ unpackStr(in, out, (tag ^ FIXSTR_PREFIX), tagged);
+ } else if (isFixInt(tag)) {
+ if (tagged) {
+ out.put(ATypeTag.SERIALIZED_INT8_TYPE_TAG);
+ }
+ if (isPosFixInt(tag)) {
+ out.put(tag);
+ } else if (isNegFixInt(tag)) {
+ out.put(tag);
+ }
+ } else if (isFixedArray(tag)) {
+ unpackArray(in, out, (tag ^ FIXARRAY_PREFIX));
+ } else if (isFixedMap(tag)) {
+ unpackMap(in, out, (tag ^ FIXMAP_PREFIX));
+ } else {
+ switch (tag) {
+ case TRUE:
+ out.put(ATypeTag.SERIALIZED_BOOLEAN_TYPE_TAG);
+ out.put((byte) 1);
+ break;
+ case FALSE:
+ out.put(ATypeTag.SERIALIZED_BOOLEAN_TYPE_TAG);
+ out.put((byte) 0);
+ break;
+ case NIL:
+ out.put(ATypeTag.SERIALIZED_NULL_TYPE_TAG);
+ break;
+ case UINT8:
+ unpackUByte(in, out, tagged);
+ break;
+ case UINT16:
+ unpackUShort(in, out, tagged);
+ break;
+ case UINT32:
+ unpackUInt(in, out, tagged);
+ break;
+ case INT8:
+ unpackByte(in, out, tagged);
+ break;
+ case INT16:
+ unpackShort(in, out, tagged);
+ break;
+ case INT32:
+ unpackInt(in, out, tagged);
+ break;
+ case INT64:
+ unpackLong(in, out, tagged);
+ break;
+ case FLOAT32:
+ unpackFloat(in, out, tagged);
+ break;
+ case FLOAT64:
+ unpackDouble(in, out, tagged);
+ break;
+ case STR8:
+ unpackStr(in, out, Byte.toUnsignedInt(in.get()), tagged);
+ break;
+ case STR16:
+ unpackStr(in, out, Short.toUnsignedInt(in.getShort()), tagged);
+ break;
+ case STR32:
+ unpackStr(in, out, Integer.toUnsignedLong(in.getInt()), tagged);
+ break;
+ case ARRAY16:
+ unpackArray(in, out, Short.toUnsignedInt(in.getShort()));
+ break;
+ case ARRAY32:
+ unpackArray(in, out, Integer.toUnsignedLong(in.getInt()));
+ break;
+ case MAP16:
+ unpackMap(in, out, Short.toUnsignedInt(in.getShort()));
+ break;
+ case MAP32:
+ unpackMap(in, out, (int) Integer.toUnsignedLong(in.getInt()));
+ break;
+
+ default:
+ throw new IllegalArgumentException("NYI");
+ }
+ }
+ }
+
+ public static long unpackNextInt(ByteBuffer in) {
+ byte tag = in.get();
+ if (isFixInt(tag)) {
+ if (isPosFixInt(tag)) {
+ return tag;
+ } else if (isNegFixInt(tag)) {
+ return (tag ^ NEGFIXINT_PREFIX);
+ }
+ } else {
+ switch (tag) {
+ case INT8:
+ return in.get();
+ case UINT8:
+ return Byte.toUnsignedInt(in.get());
+ case INT16:
+ return in.getShort();
+ case UINT16:
+ return Short.toUnsignedInt(in.getShort());
+ case INT32:
+ return in.getInt();
+ case UINT32:
+ return Integer.toUnsignedLong(in.getInt());
+ case INT64:
+ return in.getLong();
+ default:
+ throw new IllegalArgumentException("NYI");
+ }
+ }
+ return -1;
+ }
+
+ public static void unpackByte(ByteBuffer in, ByteBuffer out, boolean tagged) {
+ if (tagged) {
+ out.put(ATypeTag.SERIALIZED_INT8_TYPE_TAG);
+ }
+ out.put(in.get());
+ }
+
+ public static void unpackShort(ByteBuffer in, ByteBuffer out, boolean tagged) {
+ if (tagged) {
+ out.put(ATypeTag.SERIALIZED_INT16_TYPE_TAG);
+ }
+ out.putShort(in.getShort());
+ }
+
+ public static void unpackInt(ByteBuffer in, ByteBuffer out, boolean tagged) {
+ if (tagged) {
+ out.put(ATypeTag.SERIALIZED_INT32_TYPE_TAG);
+ }
+ out.putInt(in.getInt());
+ }
+
+ public static void unpackLong(ByteBuffer in, ByteBuffer out, boolean tagged) {
+ if (tagged) {
+ out.put(ATypeTag.SERIALIZED_INT64_TYPE_TAG);
+ }
+ out.putLong(in.getLong());
+ }
+
+ public static void unpackUByte(ByteBuffer in, ByteBuffer out, boolean tagged) {
+ if (tagged) {
+ out.put(ATypeTag.SERIALIZED_INT16_TYPE_TAG);
+ }
+ out.putShort((short) (in.get() & ((short) 0x00FF)));
+ }
+
+ public static void unpackUShort(ByteBuffer in, ByteBuffer out, boolean tagged) {
+ if (tagged) {
+ out.put(ATypeTag.SERIALIZED_INT32_TYPE_TAG);
+ }
+ out.putInt(in.getShort() & 0x0000FFFF);
+ }
+
+ public static void unpackUInt(ByteBuffer in, ByteBuffer out, boolean tagged) {
+ if (tagged) {
+ out.put(ATypeTag.SERIALIZED_INT64_TYPE_TAG);
+ }
+ out.putLong(in.getInt() & 0x00000000FFFFFFFFl);
+ }
+
+ public static void unpackFloat(ByteBuffer in, ByteBuffer out, boolean tagged) {
+ if (tagged) {
+ out.put(ATypeTag.SERIALIZED_FLOAT_TYPE_TAG);
+ }
+ out.putFloat(in.getFloat());
+
+ }
+
+ public static void unpackDouble(ByteBuffer in, ByteBuffer out, boolean tagged) {
+ if (tagged) {
+ out.put(ATypeTag.SERIALIZED_DOUBLE_TYPE_TAG);
+ }
+ out.putDouble(in.getDouble());
+ }
+
+ public static void unpackArray(ByteBuffer in, ByteBuffer out, long uLen) {
+ if (uLen > Integer.MAX_VALUE) {
+ throw new UnsupportedOperationException("String is too long");
+ }
+ int count = (int) uLen;
+ int offs = out.position();
+ out.put(ATypeTag.SERIALIZED_ORDEREDLIST_TYPE_TAG);
+ out.put(ATypeTag.ANY.serialize());
+ int asxLenPos = out.position();
+ //reserve space
+ out.putInt(-1);
+ out.putInt(count);
+ int slotStartOffs = out.position() + out.arrayOffset();
+ for (int i = 0; i < count; i++) {
+ out.putInt(0xFFFF);
+ }
+ for (int i = 0; i < count; i++) {
+ out.putInt(slotStartOffs + (i * 4), (out.position() - offs));
+ unpack(in, out, true);
+ }
+ int totalLen = out.position() - offs;
+ out.putInt(asxLenPos, totalLen);
+ }
+
+ public static void unpackMap(ByteBuffer in, ByteBuffer out, int count) {
+ //TODO: need to handle typed records. this only produces a completely open record.
+ //hdr size = 6?
+ int startOffs = out.position();
+ out.put(ATypeTag.SERIALIZED_RECORD_TYPE_TAG);
+ int totalSizeOffs = out.position();
+ out.putInt(-1);
+ //isExpanded
+ out.put((byte) 1);
+ int openPartOffs = out.position();
+ out.putInt(-1);
+ //isExpanded, so num of open fields
+ out.putInt(openPartOffs, out.position() - startOffs);
+ out.putInt(count);
+ int offsetAryPos = out.position();
+ int offsetArySz = count * 2;
+ //allocate space for open field offsets
+ for (int i = 0; i < offsetArySz; i++) {
+ out.putInt(0xDEADBEEF);
+ }
+ for (int i = 0; i < count; i++) {
+ int offs = out.position() + out.arrayOffset();
+ int relOffs = offs - startOffs;
+ unpack(in, out, false);
+ int hash = UTF8StringUtil.hash(out.array(), offs);
+ out.putInt(offsetAryPos, hash);
+ offsetAryPos += 4;
+ out.putInt(offsetAryPos, relOffs);
+ offsetAryPos += 4;
+ unpack(in, out, true);
+ }
+ out.putInt(totalSizeOffs, out.position() - startOffs);
+ }
+
+ public static void unpackStr(ByteBuffer in, ByteBuffer out, long uLen, boolean tag) {
+ //TODO: this probably breaks for 3 and 4 byte UTF-8
+ if (tag) {
+ out.put(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
+ }
+ if (Long.compareUnsigned(uLen, Integer.MAX_VALUE) > 0) {
+ throw new UnsupportedOperationException("String is too long");
+ }
+ int len = (int) uLen;
+ int strLen = UTF8StringUtil.getStringLength(in.array(), in.position() + in.arrayOffset(), len);
+ int adv = VarLenIntEncoderDecoder.encode(strLen, out.array(), out.position() + out.arrayOffset());
+ out.position(out.position() + adv);
+ System.arraycopy(in.array(), in.arrayOffset() + in.position(), out.array(), out.arrayOffset() + out.position(),
+ len);
+ out.position(out.position() + len);
+ in.position(in.position() + len);
+ }
+
+}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaOperatorDescriptor.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaOperatorDescriptor.java
index 74858ce..b6fca04 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaOperatorDescriptor.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaOperatorDescriptor.java
@@ -67,14 +67,19 @@
private final Map<String, String> feedPolicyProperties;
/**
- * type for the feed runtime associated with the operator.
+ * Type for the feed runtime associated with the operator.
* Possible values: COMPUTE, STORE, OTHER
**/
private final FeedRuntimeType runtimeType;
+ /**
+ * Whether the incoming frame has a message that this operator should handle.
+ **/
+ private final boolean hasMessage;
+
public FeedMetaOperatorDescriptor(final JobSpecification spec, final FeedConnectionId feedConnectionId,
final IOperatorDescriptor coreOperatorDescriptor, final Map<String, String> feedPolicyProperties,
- final FeedRuntimeType runtimeType) {
+ final FeedRuntimeType runtimeType, boolean hasMessage) {
super(spec, coreOperatorDescriptor.getInputArity(), coreOperatorDescriptor.getOutputArity());
this.feedConnectionId = feedConnectionId;
this.feedPolicyProperties = feedPolicyProperties;
@@ -83,6 +88,7 @@
}
this.coreOperator = coreOperatorDescriptor;
this.runtimeType = runtimeType;
+ this.hasMessage = hasMessage;
}
@Override
@@ -97,7 +103,7 @@
break;
case STORE:
nodePushable = new FeedMetaStoreNodePushable(ctx, recordDescProvider, partition, nPartitions,
- coreOperator, feedConnectionId, feedPolicyProperties, this);
+ coreOperator, feedConnectionId, feedPolicyProperties, this, hasMessage);
break;
default:
throw new RuntimeDataException(ErrorCode.OPERATORS_FEED_META_OPERATOR_DESCRIPTOR_INVALID_RUNTIME,
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaStoreNodePushable.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaStoreNodePushable.java
index 94ae75c..37e589a 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaStoreNodePushable.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaStoreNodePushable.java
@@ -51,8 +51,15 @@
private static final Logger LOGGER = LogManager.getLogger();
- /** Runtime node pushable corresponding to the core feed operator **/
- private AbstractUnaryInputUnaryOutputOperatorNodePushable insertOperator;
+ /**
+ * Whether the incoming frame has a message that this operator should handle
+ **/
+ private final boolean hasMessage;
+
+ /**
+ * Runtime node pushable corresponding to the core feed operator
+ **/
+ private final AbstractUnaryInputUnaryOutputOperatorNodePushable insertOperator;
/**
* A policy accessor that ensures dyanmic decisions for a feed are taken
@@ -72,10 +79,14 @@
**/
private final int partition;
- /** Type associated with the core feed operator **/
+ /**
+ * Type associated with the core feed operator
+ **/
private final FeedRuntimeType runtimeType = FeedRuntimeType.STORE;
- /** The (singleton) instance of IFeedManager **/
+ /**
+ * The (singleton) instance of IFeedManager
+ **/
private final ActiveManager feedManager;
private FrameTupleAccessor fta;
@@ -92,10 +103,11 @@
private final long traceCategory;
- public FeedMetaStoreNodePushable(IHyracksTaskContext ctx, IRecordDescriptorProvider recordDescProvider,
- int partition, int nPartitions, IOperatorDescriptor coreOperator, FeedConnectionId feedConnectionId,
- Map<String, String> feedPolicyProperties, FeedMetaOperatorDescriptor feedMetaOperatorDescriptor)
- throws HyracksDataException {
+ FeedMetaStoreNodePushable(IHyracksTaskContext ctx, IRecordDescriptorProvider recordDescProvider, int partition,
+ int nPartitions, IOperatorDescriptor coreOperator, FeedConnectionId feedConnectionId,
+ Map<String, String> feedPolicyProperties, FeedMetaOperatorDescriptor feedMetaOperatorDescriptor,
+ boolean hasMessage) throws HyracksDataException {
+ this.hasMessage = hasMessage;
this.ctx = ctx;
this.insertOperator = (AbstractUnaryInputUnaryOutputOperatorNodePushable) ((IActivity) coreOperator)
.createPushRuntime(ctx, recordDescProvider, partition, nPartitions);
@@ -104,8 +116,13 @@
this.connectionId = feedConnectionId;
this.feedManager = (ActiveManager) ((INcApplicationContext) ctx.getJobletContext().getServiceContext()
.getApplicationContext()).getActiveManager();
- this.message = new VSizeFrame(ctx);
- TaskUtil.put(HyracksConstants.KEY_MESSAGE, message, ctx);
+ if (hasMessage) {
+ this.message = new VSizeFrame(ctx);
+ TaskUtil.put(HyracksConstants.KEY_MESSAGE, message, ctx);
+ } else {
+ this.message = null;
+ }
+
this.recordDescProvider = recordDescProvider;
this.opDesc = feedMetaOperatorDescriptor;
tracer = ctx.getJobletContext().getServiceContext().getTracer();
@@ -147,7 +164,9 @@
public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
long tid = tracer.durationB("Ingestion-Store", traceCategory, null);
try {
- FeedUtils.processFeedMessage(buffer, message, fta);
+ if (hasMessage) {
+ FeedUtils.processFeedMessage(buffer, message, fta);
+ }
writer.nextFrame(buffer);
} catch (Exception e) {
LOGGER.log(Level.WARN, "Failure Processing a frame at store side", e);
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/LibraryDeployPrepareOperatorDescriptor.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/LibraryDeployPrepareOperatorDescriptor.java
index a576c34..ddf3d66 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/LibraryDeployPrepareOperatorDescriptor.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/LibraryDeployPrepareOperatorDescriptor.java
@@ -20,8 +20,10 @@
package org.apache.asterix.external.operators;
import static org.apache.asterix.external.library.ExternalLibraryManager.DESCRIPTOR_FILE_NAME;
+import static org.apache.hyracks.control.common.controllers.NCConfig.Option.PYTHON_USE_BUNDLED_MSGPACK;
import java.io.ByteArrayInputStream;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -160,7 +162,9 @@
// shouldn't happen
throw new IOException("Unexpected file type: " + fileExt);
}
- shiv(targetFile, stageDir, contentsDir);
+ boolean extractMsgPack = ctx.getJobletContext().getServiceContext().getAppConfig()
+ .getBoolean(PYTHON_USE_BUNDLED_MSGPACK);
+ shiv(targetFile, stageDir, contentsDir, extractMsgPack);
break;
default:
// shouldn't happen
@@ -284,17 +288,22 @@
}
}
- private void shiv(FileReference sourceFile, FileReference stageDir, FileReference contentsDir)
- throws IOException {
- FileReference pyro4 = stageDir.getChild("pyro4.pyz");
- writeShim(pyro4);
+ private void shiv(FileReference sourceFile, FileReference stageDir, FileReference contentsDir,
+ boolean writeMsgpack) throws IOException {
+ FileReference msgpack = stageDir.getChild("msgpack.pyz");
+ if (writeMsgpack) {
+ writeShim(msgpack, writeMsgpack);
+ File msgPackFolder = new File(contentsDir.getRelativePath(), "ipc");
+ FileReference msgPackFolderRef =
+ new FileReference(contentsDir.getDeviceHandle(), msgPackFolder.getPath());
+ unzip(msgpack, msgPackFolderRef);
+ Files.delete(msgpack.getFile().toPath());
+ }
unzip(sourceFile, contentsDir);
- unzip(pyro4, contentsDir);
- writeShim(contentsDir.getChild("entrypoint.py"));
- Files.delete(pyro4.getFile().toPath());
+ writeShim(contentsDir.getChild("entrypoint.py"), false);
}
- private void writeShim(FileReference outputFile) throws IOException {
+ private boolean writeShim(FileReference outputFile, boolean optional) throws IOException {
InputStream is = getClass().getClassLoader().getResourceAsStream(outputFile.getFile().getName());
if (is == null) {
throw new IOException("Classpath does not contain necessary Python resources!");
@@ -304,6 +313,7 @@
} finally {
is.close();
}
+ return true;
}
private void writeDescriptor(FileReference descFile, LibraryDescriptor desc) throws IOException {
@@ -334,4 +344,4 @@
}
};
}
-}
\ No newline at end of file
+}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
index b70c6ad2..3462b76 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
@@ -23,10 +23,12 @@
import static org.apache.asterix.external.util.ExternalDataConstants.KEY_QUOTE;
import static org.apache.asterix.external.util.ExternalDataConstants.KEY_RECORD_END;
import static org.apache.asterix.external.util.ExternalDataConstants.KEY_RECORD_START;
+import static org.apache.asterix.runtime.evaluators.functions.StringEvaluatorUtils.RESERVED_REGEX_CHARS;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
@@ -523,76 +525,91 @@
/**
* Converts the wildcard to proper regex
*
- * @param wildcard wildcard pattern to convert
+ * @param pattern wildcard pattern to convert
*
* @return regex expression
*/
- public static String wildcardToRegex(String wildcard) {
- StringBuilder builder = new StringBuilder(wildcard.length());
- builder.append('^');
+ public static String patternToRegex(String pattern) {
+ int charPosition = 0;
+ int patternLength = pattern.length();
+ StringBuilder stuffBuilder = new StringBuilder();
+ StringBuilder result = new StringBuilder();
- // This keeps an eye on the presence inside or outside a sequence, everything inside a sequence is a literal
- // e.g ("*" ===> ".*" while "[*]" ===> "[\*]"
- boolean outsideBracketSequence = true;
+ while (charPosition < patternLength) {
+ char c = pattern.charAt(charPosition);
+ charPosition++;
- for (int i = 0; i < wildcard.length(); i++) {
- char c = wildcard.charAt(i);
switch (c) {
case '*':
- builder.append(outsideBracketSequence ? "." : "\\").append(c);
+ result.append(".*");
break;
case '?':
- builder.append(outsideBracketSequence ? "." : "\\?");
+ result.append(".");
break;
case '[':
- if (outsideBracketSequence) {
- outsideBracketSequence = false;
- builder.append(c);
- if (i + 1 < wildcard.length()) {
- if (wildcard.charAt(i + 1) == '!') {
- i++;
- builder.append('^');
- }
+ int closingBracketPosition = charPosition;
+ if (closingBracketPosition < patternLength && pattern.charAt(closingBracketPosition) == '!') {
+ closingBracketPosition++;
+ }
+
+ // 2 cases can happen here:
+ // 1- Empty character class [] which is invalid for java, so treat ] as literal and find another
+ // closing bracket, if no closing bracket is found, the whole thing is a literal
+ // 2- Negated empty class [!] converted to [^] which is invalid for java, so treat ] as literal and
+ // find another closing bracket, if no closing bracket is found, the whole thing is a literal
+ if (closingBracketPosition < patternLength && pattern.charAt(closingBracketPosition) == ']') {
+ closingBracketPosition++;
+ }
+
+ // No [] and [!] cases, search for the closing bracket
+ while (closingBracketPosition < patternLength && pattern.charAt(closingBracketPosition) != ']') {
+ closingBracketPosition++;
+ }
+
+ // No closing bracket found (or [] or [!]), escape the opening bracket, treat it as literals
+ if (closingBracketPosition >= patternLength) {
+ result.append("\\[");
+ } else {
+ // Found closing bracket, get the stuff in between the found the character class ("[" and "]")
+ String stuff = pattern.substring(charPosition, closingBracketPosition);
+
+ stuffBuilder.setLength(0);
+ int stuffCharPos = 0;
+
+ // If first character in the character class is "!" then convert it to "^"
+ if (stuff.charAt(0) == '!') {
+ stuffBuilder.append('^');
+ stuffCharPos++; // ignore first character when escaping metacharacters next step
}
- } else {
- // escape the open bracket "[" if we are already inside a bracket sequence
- builder.append("\\").append(c);
+
+ for (; stuffCharPos < stuff.length(); stuffCharPos++) {
+ char stuffChar = stuff.charAt(stuffCharPos);
+ if (stuffChar != '-' && Arrays.binarySearch(RESERVED_REGEX_CHARS, stuffChar) >= 0) {
+ stuffBuilder.append("\\");
+ }
+ stuffBuilder.append(stuffChar);
+ }
+
+ String stuffEscaped = stuffBuilder.toString();
+
+ // Escape the set operations
+ stuffEscaped = stuffEscaped.replace("&&", "\\&\\&").replace("~~", "\\~\\~")
+ .replace("||", "\\|\\|").replace("--", "\\-\\-");
+
+ result.append("[").append(stuffEscaped).append("]");
+ charPosition = closingBracketPosition + 1;
}
break;
- case ']':
- if (outsideBracketSequence) {
- // escape if we are outside bracket sequence
- builder.append("\\").append(c);
- } else {
- // Inside bracket, close it and mark as outside bracket
- outsideBracketSequence = true;
- builder.append(c);
- }
- break;
- // escape special regexp-characters
- case '(':
- case ')':
- case '$':
- case '^':
- case '.':
- case '{':
- case '}':
- case '|':
- case '+':
- case '=':
- case '<':
- case '>':
- case '!':
- case '\\':
- builder.append("\\").append(c);
- break;
default:
- builder.append(c);
+ if (Arrays.binarySearch(RESERVED_REGEX_CHARS, c) >= 0) {
+ result.append("\\");
+ }
+ result.append(c);
break;
}
}
- builder.append('$');
- return builder.toString();
+
+ return result.toString();
}
public static class AwsS3 {
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/clause/JoinClause.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/clause/JoinClause.java
deleted file mode 100644
index f0ed087..0000000
--- a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/clause/JoinClause.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.lang.aql.clause;
-
-import java.util.List;
-
-import org.apache.asterix.common.exceptions.CompilationException;
-import org.apache.asterix.lang.aql.visitor.base.IAQLPlusVisitor;
-import org.apache.asterix.lang.common.base.AbstractClause;
-import org.apache.asterix.lang.common.base.Clause;
-import org.apache.asterix.lang.common.base.Expression;
-import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
-
-public class JoinClause extends AbstractClause {
-
- public static enum JoinKind {
- INNER,
- LEFT_OUTER
- }
-
- private Expression whereExpr;
- private List<Clause> leftClauses, rightClauses;
- private final JoinKind kind;
-
- public JoinClause() {
- kind = JoinKind.INNER;
- }
-
- public JoinClause(JoinKind kind) {
- this.kind = kind;
- }
-
- @Override
- public <R, T> R accept(ILangVisitor<R, T> visitor, T arg) throws CompilationException {
- return ((IAQLPlusVisitor<R, T>) visitor).visitJoinClause(this, arg);
- }
-
- @Override
- public ClauseType getClauseType() {
- return null;
- }
-
- public List<Clause> getLeftClauses() {
- return leftClauses;
- }
-
- public List<Clause> getRightClauses() {
- return rightClauses;
- }
-
- public Expression getWhereExpr() {
- return whereExpr;
- }
-
- public void setLeftClauses(List<Clause> leftClauses) {
- this.leftClauses = leftClauses;
- }
-
- public void setRightClauses(List<Clause> righClauses) {
- this.rightClauses = righClauses;
- }
-
- public void setWhereExpr(Expression whereExpr) {
- this.whereExpr = whereExpr;
- }
-
- public JoinKind getKind() {
- return kind;
- }
-}
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/clause/MetaVariableClause.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/clause/MetaVariableClause.java
deleted file mode 100644
index bbf7269..0000000
--- a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/clause/MetaVariableClause.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.lang.aql.clause;
-
-import org.apache.asterix.common.exceptions.CompilationException;
-import org.apache.asterix.lang.aql.visitor.base.IAQLPlusVisitor;
-import org.apache.asterix.lang.common.base.AbstractClause;
-import org.apache.asterix.lang.common.struct.VarIdentifier;
-import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
-
-public class MetaVariableClause extends AbstractClause {
- private VarIdentifier var;
-
- public MetaVariableClause() {
- }
-
- public MetaVariableClause(VarIdentifier var) {
- this.var = var;
- }
-
- @Override
- public <R, T> R accept(ILangVisitor<R, T> visitor, T arg) throws CompilationException {
- return ((IAQLPlusVisitor<R, T>) visitor).visitMetaVariableClause(this, arg);
- }
-
- @Override
- public ClauseType getClauseType() {
- return null;
- }
-
- public VarIdentifier getVar() {
- return var;
- }
-
- public void setVar(VarIdentifier var) {
- this.var = var;
- }
-}
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/expression/MetaVariableExpr.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/expression/MetaVariableExpr.java
deleted file mode 100644
index fb03312..0000000
--- a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/expression/MetaVariableExpr.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.lang.aql.expression;
-
-import org.apache.asterix.common.exceptions.CompilationException;
-import org.apache.asterix.lang.aql.visitor.base.IAQLPlusVisitor;
-import org.apache.asterix.lang.common.expression.VariableExpr;
-import org.apache.asterix.lang.common.struct.VarIdentifier;
-import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
-
-public class MetaVariableExpr extends VariableExpr {
-
- public MetaVariableExpr(VarIdentifier var) {
- super(var);
- }
-
- @Override
- public <R, T> R accept(ILangVisitor<R, T> visitor, T arg) throws CompilationException {
- return ((IAQLPlusVisitor<R, T>) visitor).visitMetaVariableExpr(this, arg);
- }
-
- @Override
- public boolean getIsNewVar() {
- return false;
- }
-
- @Override
- public Kind getKind() {
- return Kind.METAVARIABLE_EXPRESSION;
- }
-}
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AQLRewriterFactory.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AQLRewriterFactory.java
deleted file mode 100644
index 0987d89..0000000
--- a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AQLRewriterFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.lang.aql.rewrites;
-
-import org.apache.asterix.lang.common.base.IParserFactory;
-import org.apache.asterix.lang.common.base.IQueryRewriter;
-import org.apache.asterix.lang.common.base.IRewriterFactory;
-import org.apache.asterix.lang.common.base.IStatementRewriter;
-
-public class AQLRewriterFactory implements IRewriterFactory {
-
- private final IParserFactory parserFactory;
-
- public AQLRewriterFactory(IParserFactory parserFactory) {
- this.parserFactory = parserFactory;
- }
-
- @Override
- public IQueryRewriter createQueryRewriter() {
- return new AqlQueryRewriter(parserFactory);
- }
-
- @Override
- public IStatementRewriter createStatementRewriter() {
- return new AqlStatementRewriter();
- }
-
-}
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlFunctionBodyRewriter.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlFunctionBodyRewriter.java
new file mode 100644
index 0000000..e8b6747
--- /dev/null
+++ b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlFunctionBodyRewriter.java
@@ -0,0 +1,47 @@
+/*
+ * 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.lang.aql.rewrites;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.lang.common.base.IParserFactory;
+import org.apache.asterix.lang.common.base.IReturningStatement;
+import org.apache.asterix.lang.common.rewrites.LangRewritingContext;
+import org.apache.asterix.lang.common.statement.FunctionDecl;
+import org.apache.asterix.lang.common.struct.VarIdentifier;
+import org.apache.asterix.metadata.declared.MetadataProvider;
+
+public final class AqlFunctionBodyRewriter extends AqlQueryRewriter {
+
+ public AqlFunctionBodyRewriter(IParserFactory parserFactory) {
+ super(parserFactory);
+ }
+
+ @Override
+ public void rewrite(List<FunctionDecl> declaredFunctions, IReturningStatement topStatement,
+ MetadataProvider metadataProvider, LangRewritingContext context, boolean inlineUdfs,
+ Collection<VarIdentifier> externalVars) throws CompilationException {
+ setup(declaredFunctions, topStatement, metadataProvider, context);
+ resolveFunctionCalls();
+ inlineDeclaredUdfs();
+ }
+}
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlFunctionBodyRewriterFactory.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlFunctionBodyRewriterFactory.java
new file mode 100644
index 0000000..f14eef9
--- /dev/null
+++ b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlFunctionBodyRewriterFactory.java
@@ -0,0 +1,44 @@
+/*
+ * 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.lang.aql.rewrites;
+
+import org.apache.asterix.lang.common.base.IParserFactory;
+import org.apache.asterix.lang.common.base.IQueryRewriter;
+import org.apache.asterix.lang.common.base.IRewriterFactory;
+import org.apache.asterix.lang.common.base.IStatementRewriter;
+
+public final class AqlFunctionBodyRewriterFactory implements IRewriterFactory {
+
+ private final IParserFactory parserFactory;
+
+ public AqlFunctionBodyRewriterFactory(IParserFactory parserFactory) {
+ this.parserFactory = parserFactory;
+ }
+
+ @Override
+ public IQueryRewriter createQueryRewriter() {
+ return new AqlFunctionBodyRewriter(parserFactory);
+ }
+
+ @Override
+ public IStatementRewriter createStatementRewriter() {
+ throw new IllegalStateException("There could not be non-query statements inside a function definition.");
+ }
+}
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlQueryRewriter.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlQueryRewriter.java
index 369d4c2..53893cb 100644
--- a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlQueryRewriter.java
+++ b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlQueryRewriter.java
@@ -30,7 +30,7 @@
import org.apache.asterix.lang.aql.clause.ForClause;
import org.apache.asterix.lang.aql.expression.FLWOGRExpression;
import org.apache.asterix.lang.aql.expression.UnionExpr;
-import org.apache.asterix.lang.aql.rewrites.visitor.AqlBuiltinFunctionRewriteVisitor;
+import org.apache.asterix.lang.aql.rewrites.visitor.AqlFunctionCallResolverVisitor;
import org.apache.asterix.lang.aql.visitor.AQLInlineUdfsVisitor;
import org.apache.asterix.lang.aql.visitor.base.IAQLVisitor;
import org.apache.asterix.lang.common.base.Clause;
@@ -49,7 +49,6 @@
import org.apache.asterix.lang.common.statement.FunctionDecl;
import org.apache.asterix.lang.common.struct.Identifier;
import org.apache.asterix.lang.common.struct.VarIdentifier;
-import org.apache.asterix.lang.common.util.CommonFunctionMapUtil;
import org.apache.asterix.lang.common.util.FunctionUtil;
import org.apache.asterix.lang.common.visitor.GatherFunctionCallsVisitor;
import org.apache.asterix.metadata.declared.MetadataProvider;
@@ -69,7 +68,7 @@
functionParser = new FunctionParser(parserFactory);
}
- private void setup(List<FunctionDecl> declaredFunctions, IReturningStatement topStatement,
+ protected void setup(List<FunctionDecl> declaredFunctions, IReturningStatement topStatement,
MetadataProvider metadataProvider, LangRewritingContext context) {
this.topStatement = topStatement;
this.context = context;
@@ -85,12 +84,12 @@
if (topStatement.isTopLevel()) {
wrapInLets();
}
+ resolveFunctionCalls();
inlineDeclaredUdfs();
- rewriteFunctionName();
topStatement.setVarCounter(context.getVarCounter().get());
}
- private void wrapInLets() {
+ protected void wrapInLets() {
// If the top expression of the main statement is not a FLWOR, it wraps
// it into a let clause.
if (topStatement == null) {
@@ -108,15 +107,16 @@
}
}
- private void rewriteFunctionName() throws CompilationException {
+ protected void resolveFunctionCalls() throws CompilationException {
if (topStatement == null) {
return;
}
- AqlBuiltinFunctionRewriteVisitor visitor = new AqlBuiltinFunctionRewriteVisitor();
+ AqlFunctionCallResolverVisitor visitor =
+ new AqlFunctionCallResolverVisitor(metadataProvider, declaredFunctions);
topStatement.accept(visitor, null);
}
- private void inlineDeclaredUdfs() throws CompilationException {
+ protected void inlineDeclaredUdfs() throws CompilationException {
if (topStatement == null) {
return;
}
@@ -128,13 +128,12 @@
List<FunctionDecl> storedFunctionDecls = new ArrayList<>();
for (Expression topLevelExpr : topStatement.getDirectlyEnclosedExpressions()) {
storedFunctionDecls.addAll(FunctionUtil.retrieveUsedStoredFunctions(metadataProvider, topLevelExpr, funIds,
- null, expr -> getFunctionCalls(expr), functionParser,
- (signature, sourceLoc) -> CommonFunctionMapUtil.normalizeBuiltinFunctionSignature(signature)));
+ null, this::getFunctionCalls, functionParser, metadataProvider.getDefaultDataverseName()));
declaredFunctions.addAll(storedFunctionDecls);
}
if (!declaredFunctions.isEmpty()) {
- AQLInlineUdfsVisitor visitor = new AQLInlineUdfsVisitor(context, new AQLRewriterFactory(parserFactory),
- declaredFunctions, metadataProvider);
+ AQLInlineUdfsVisitor visitor = new AQLInlineUdfsVisitor(context,
+ new AqlFunctionBodyRewriterFactory(parserFactory), declaredFunctions, metadataProvider);
while (topStatement.accept(visitor, declaredFunctions)) {
// loop until no more changes
}
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlRewriterFactory.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlRewriterFactory.java
new file mode 100644
index 0000000..c0ce3d3
--- /dev/null
+++ b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlRewriterFactory.java
@@ -0,0 +1,44 @@
+/*
+ * 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.lang.aql.rewrites;
+
+import org.apache.asterix.lang.common.base.IParserFactory;
+import org.apache.asterix.lang.common.base.IQueryRewriter;
+import org.apache.asterix.lang.common.base.IRewriterFactory;
+import org.apache.asterix.lang.common.base.IStatementRewriter;
+
+public class AqlRewriterFactory implements IRewriterFactory {
+
+ private final IParserFactory parserFactory;
+
+ public AqlRewriterFactory(IParserFactory parserFactory) {
+ this.parserFactory = parserFactory;
+ }
+
+ @Override
+ public IQueryRewriter createQueryRewriter() {
+ return new AqlQueryRewriter(parserFactory);
+ }
+
+ @Override
+ public IStatementRewriter createStatementRewriter() {
+ return new AqlStatementRewriter();
+ }
+
+}
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/visitor/AqlBuiltinFunctionRewriteVisitor.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/visitor/AqlBuiltinFunctionRewriteVisitor.java
deleted file mode 100644
index 5b52ef5..0000000
--- a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/visitor/AqlBuiltinFunctionRewriteVisitor.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.lang.aql.rewrites.visitor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.asterix.common.exceptions.CompilationException;
-import org.apache.asterix.common.functions.FunctionSignature;
-import org.apache.asterix.lang.aql.visitor.base.AbstractAqlSimpleExpressionVisitor;
-import org.apache.asterix.lang.common.base.Expression;
-import org.apache.asterix.lang.common.base.ILangExpression;
-import org.apache.asterix.lang.common.expression.CallExpr;
-import org.apache.asterix.lang.common.util.CommonFunctionMapUtil;
-
-public class AqlBuiltinFunctionRewriteVisitor extends AbstractAqlSimpleExpressionVisitor {
-
- @Override
- public Expression visit(CallExpr callExpr, ILangExpression arg) throws CompilationException {
- FunctionSignature functionSignature = callExpr.getFunctionSignature();
- callExpr.setFunctionSignature(CommonFunctionMapUtil.normalizeBuiltinFunctionSignature(functionSignature));
- List<Expression> newExprList = new ArrayList<>();
- for (Expression expr : callExpr.getExprList()) {
- newExprList.add(expr.accept(this, arg));
- }
- callExpr.setExprList(newExprList);
- if (callExpr.hasAggregateFilterExpr()) {
- callExpr.setAggregateFilterExpr(callExpr.getAggregateFilterExpr().accept(this, arg));
- }
- return callExpr;
- }
-}
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/visitor/AqlFunctionCallResolverVisitor.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/visitor/AqlFunctionCallResolverVisitor.java
new file mode 100644
index 0000000..32f368b
--- /dev/null
+++ b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/visitor/AqlFunctionCallResolverVisitor.java
@@ -0,0 +1,62 @@
+/*
+ * 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.lang.aql.rewrites.visitor;
+
+import java.util.List;
+import java.util.Set;
+import java.util.function.BiFunction;
+
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.lang.aql.visitor.base.AbstractAqlSimpleExpressionVisitor;
+import org.apache.asterix.lang.common.base.Expression;
+import org.apache.asterix.lang.common.base.ILangExpression;
+import org.apache.asterix.lang.common.expression.CallExpr;
+import org.apache.asterix.lang.common.statement.FunctionDecl;
+import org.apache.asterix.lang.common.util.FunctionUtil;
+import org.apache.asterix.metadata.declared.MetadataProvider;
+
+public class AqlFunctionCallResolverVisitor extends AbstractAqlSimpleExpressionVisitor {
+
+ private final MetadataProvider metadataProvider;
+
+ private final Set<FunctionSignature> declaredFunctions;
+
+ private final BiFunction<String, Integer, FunctionSignature> callExprResolver;
+
+ public AqlFunctionCallResolverVisitor(MetadataProvider metadataProvider, List<FunctionDecl> declaredFunctions) {
+ this.metadataProvider = metadataProvider;
+ this.declaredFunctions = FunctionUtil.getFunctionSignatures(declaredFunctions);
+ this.callExprResolver = createBuiltinFunctionResolver(metadataProvider);
+ }
+
+ @Override
+ public Expression visit(CallExpr callExpr, ILangExpression arg) throws CompilationException {
+ FunctionSignature fs = FunctionUtil.resolveFunctionCall(callExpr.getFunctionSignature(),
+ callExpr.getSourceLocation(), metadataProvider, declaredFunctions, callExprResolver);
+ callExpr.setFunctionSignature(fs);
+ return super.visit(callExpr, arg);
+ }
+
+ protected BiFunction<String, Integer, FunctionSignature> createBuiltinFunctionResolver(
+ MetadataProvider metadataProvider) {
+ return FunctionUtil.createBuiltinFunctionResolver(metadataProvider);
+ }
+}
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/visitor/base/AbstractAqlSimpleExpressionVisitor.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/visitor/base/AbstractAqlSimpleExpressionVisitor.java
index b8c3470..e23eec9 100644
--- a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/visitor/base/AbstractAqlSimpleExpressionVisitor.java
+++ b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/visitor/base/AbstractAqlSimpleExpressionVisitor.java
@@ -50,6 +50,7 @@
import org.apache.asterix.lang.common.expression.UnaryExpr;
import org.apache.asterix.lang.common.expression.VariableExpr;
import org.apache.asterix.lang.common.statement.FunctionDecl;
+import org.apache.asterix.lang.common.statement.InsertStatement;
import org.apache.asterix.lang.common.statement.Query;
import org.apache.asterix.lang.common.struct.QuantifiedPair;
@@ -215,6 +216,17 @@
return null;
}
+ @Override
+ public Expression visit(InsertStatement insertStatement, ILangExpression arg) throws CompilationException {
+ Expression returnExpr = insertStatement.getReturnExpression();
+ if (returnExpr != null) {
+ insertStatement.setReturnExpression(visit(returnExpr, arg));
+ }
+ Query bodyQuery = insertStatement.getQuery();
+ bodyQuery.accept(this, arg);
+ return null;
+ }
+
protected Expression visit(Expression expr, ILangExpression arg) throws CompilationException {
return postVisit(preVisit(expr).accept(this, arg));
}
diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/visitor/base/IAQLPlusVisitor.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/visitor/base/IAQLPlusVisitor.java
deleted file mode 100644
index b0c5464..0000000
--- a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/visitor/base/IAQLPlusVisitor.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.lang.aql.visitor.base;
-
-import org.apache.asterix.common.exceptions.CompilationException;
-import org.apache.asterix.lang.aql.clause.JoinClause;
-import org.apache.asterix.lang.aql.clause.MetaVariableClause;
-import org.apache.asterix.lang.aql.expression.MetaVariableExpr;
-
-public interface IAQLPlusVisitor<R, T> extends IAQLVisitor<R, T> {
-
- R visitJoinClause(JoinClause c, T arg) throws CompilationException;
-
- R visitMetaVariableClause(MetaVariableClause c, T arg) throws CompilationException;
-
- R visitMetaVariableExpr(MetaVariableExpr v, T arg) throws CompilationException;
-}
diff --git a/asterixdb/asterix-lang-aql/src/main/javacc/AQL.jj b/asterixdb/asterix-lang-aql/src/main/javacc/AQL.jj
index b9a489d..e00e175 100644
--- a/asterixdb/asterix-lang-aql/src/main/javacc/AQL.jj
+++ b/asterixdb/asterix-lang-aql/src/main/javacc/AQL.jj
@@ -291,6 +291,7 @@
//st.accept(new AQLPrintVisitor(), 0);
}
+ @Override
public List<Statement> parse() throws CompilationException {
return parseImpl(new ParseFunction<List<Statement>>() {
@Override
@@ -300,7 +301,8 @@
});
}
- private Expression parseExpression() throws CompilationException {
+ @Override
+ public Expression parseExpression() throws CompilationException {
return parseImpl(new ParseFunction<Expression>() {
@Override
public Expression parse() throws ParseException {
@@ -504,7 +506,6 @@
Map<String,String> properties = null;
FunctionSignature appliedFunction = null;
Pair<List<Integer>, List<List<String>>> primaryKeyFields = null;
- String nodeGroupName = null;
Map<String,String> hints = new HashMap<String,String>();
DatasetDecl dsetDecl = null;
boolean autogenerated = false;
@@ -517,7 +518,6 @@
<LEFTPAREN> typeComponents = TypeName() <RIGHTPAREN>
ifNotExists = IfNotExists()
<USING> adapterName = AdapterName() properties = Configuration()
- ( <ON> nodeGroupName = Identifier() )?
( <HINTS> hints = Properties() )?
( <WITH> withRecord = RecordConstructor() )?
{
@@ -529,7 +529,6 @@
nameComponents.second,
new TypeReferenceExpression(typeComponents),
null,
- nodeGroupName != null? new Identifier(nodeGroupName): null,
hints,
DatasetType.EXTERNAL,
edd,
@@ -557,7 +556,6 @@
ifNotExists = IfNotExists()
primaryKeyFields = PrimaryKey()
( <AUTOGENERATED> { autogenerated = true; } )?
- ( <ON> nodeGroupName = Identifier() )?
( <HINTS> hints = Properties() )?
( LOOKAHEAD(2) <WITH> <FILTER> <ON> filterField = NestedField() )?
( <WITH> withRecord = RecordConstructor() )?
@@ -565,16 +563,16 @@
if(filterField!=null && filterField.first!=0){
throw new ParseException("A filter field can only be a field in the main record of the dataset.");
}
- InternalDetailsDecl idd = new InternalDetailsDecl(primaryKeyFields.second,
+ try{
+ InternalDetailsDecl idd = new InternalDetailsDecl(primaryKeyFields.second,
primaryKeyFields.first,
autogenerated,
+ filterField == null? null : filterField.first,
filterField == null? null : filterField.second);
- try{
dsetDecl = new DatasetDecl(nameComponents.first,
nameComponents.second,
new TypeReferenceExpression(typeComponents),
metaTypeComponents != null ? new TypeReferenceExpression(metaTypeComponents) : null,
- nodeGroupName != null ? new Identifier(nodeGroupName) : null,
hints,
DatasetType.INTERNAL,
idd,
@@ -764,7 +762,7 @@
for(VarIdentifier v: paramList){
bodge.add(new Pair<VarIdentifier,TypeExpression>(v,null));
}
- return new CreateFunctionStatement(signature, bodge, functionBody, functionBodyExpr, ifNotExists);
+ return new CreateFunctionStatement(signature, bodge, functionBody, functionBodyExpr, false, ifNotExists);
}
}
@@ -1995,7 +1993,7 @@
Expression expr = null;
Identifier ident = null;
AbstractAccessor fa = null;
- Expression indexExpr = null;
+ Pair<IndexAccessor.IndexKind, Expression> index = null;
}
{
expr = PrimaryExpr() ( ident = Field()
@@ -2003,10 +2001,10 @@
fa = (fa == null ? new FieldAccessor(expr, ident)
: new FieldAccessor(fa, ident));
}
- | indexExpr = Index()
+ | index = Index()
{
- fa = (fa == null ? new IndexAccessor(expr, indexExpr)
- : new IndexAccessor(fa, indexExpr));
+ fa = (fa == null ? new IndexAccessor(expr, index.first, index.second)
+ : new IndexAccessor(fa, index.first, index.second));
}
)*
{
@@ -2025,8 +2023,9 @@
}
}
-Expression Index() throws ParseException:
+Pair<IndexAccessor.IndexKind, Expression> Index() throws ParseException:
{
+ IndexAccessor.IndexKind kind = null;
Expression expr = null;
}
{
@@ -2040,15 +2039,18 @@
throw new ParseException("Index should be an INTEGER");
}
}
+ kind = IndexAccessor.IndexKind.ELEMENT;
}
| <QUES> // ANY
-
+ {
+ kind = IndexAccessor.IndexKind.ANY;
+ }
)
<RIGHTBRACKET>
{
- return expr;
+ return new Pair<IndexAccessor.IndexKind, Expression>(kind, expr);
}
}
@@ -2363,9 +2365,6 @@
}
}
-// Note: if you modify this part: "tmp = LetClause() {clauseList.add(tmp);}", please also apply the necessary
-// change to the AQLPlusExtension.jj file since it refers to this string part and may behave incorrectly if this
-// part is modified. For more details, please refer to AQLPlusExtension.jj file.
Expression FLWOGR() throws ParseException:
{
FLWOGRExpression flworg = new FLWOGRExpression();
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/IParser.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/IParser.java
index 3f73789..bd05f28 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/IParser.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/IParser.java
@@ -30,6 +30,8 @@
List<Statement> parse() throws CompilationException;
+ Expression parseExpression() throws CompilationException;
+
FunctionDecl parseFunctionBody(FunctionSignature signature, List<String> paramNames) throws CompilationException;
/**
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/IndexAccessor.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/IndexAccessor.java
index 102c133..73deecd 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/IndexAccessor.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/IndexAccessor.java
@@ -25,23 +25,32 @@
import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
public class IndexAccessor extends AbstractAccessor {
- private boolean isAny;
+
+ public enum IndexKind {
+ ELEMENT,
+ ANY,
+ STAR
+ }
+
+ private IndexKind indexKind;
+
private Expression indexExpr;
- public IndexAccessor(Expression expr, Expression indexExpr) {
+ public IndexAccessor(Expression expr, IndexKind indexKind, Expression indexExpr) {
super(expr);
- if (indexExpr == null) {
- this.isAny = true;
+ if (indexKind != IndexKind.ELEMENT && indexExpr != null) {
+ throw new IllegalArgumentException(indexExpr.toString());
}
+ this.indexKind = Objects.requireNonNull(indexKind);
this.indexExpr = indexExpr;
}
- public boolean isAny() {
- return isAny;
+ public IndexKind getIndexKind() {
+ return indexKind;
}
- public void setAny(boolean any) {
- this.isAny = any;
+ public void setIndexKind(IndexKind indexKind) {
+ this.indexKind = indexKind;
}
public Expression getIndexExpr() {
@@ -64,7 +73,7 @@
@Override
public int hashCode() {
- return 31 * super.hashCode() + Objects.hash(indexExpr, isAny);
+ return 31 * super.hashCode() + Objects.hash(indexKind, indexExpr);
}
@Override
@@ -76,11 +85,11 @@
return false;
}
IndexAccessor target = (IndexAccessor) object;
- return super.equals(target) && isAny == target.isAny && Objects.equals(indexExpr, target.indexExpr);
+ return super.equals(target) && indexKind == target.indexKind && Objects.equals(indexExpr, target.indexExpr);
}
@Override
public String toString() {
- return expr + "[" + (isAny ? "?" : indexExpr) + "]";
+ return expr + "[" + indexKind + '(' + indexExpr + ")]";
}
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/FunctionParser.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/FunctionParser.java
index fec4f50..52f8a16 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/FunctionParser.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/FunctionParser.java
@@ -46,6 +46,11 @@
function.getLanguage());
}
IParser parser = parserFactory.createParser(new StringReader(function.getFunctionBody()));
- return parser.parseFunctionBody(function.getSignature(), function.getParameterNames());
+ try {
+ return parser.parseFunctionBody(function.getSignature(), function.getParameterNames());
+ } catch (CompilationException e) {
+ throw new CompilationException(ErrorCode.COMPILATION_BAD_FUNCTION_DEFINITION, e, function.getSignature(),
+ e.getMessage());
+ }
}
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/AdapterDropStatement.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/AdapterDropStatement.java
index b2733ab..481dbe4 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/AdapterDropStatement.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/AdapterDropStatement.java
@@ -19,17 +19,21 @@
package org.apache.asterix.lang.common.statement;
import org.apache.asterix.common.exceptions.CompilationException;
-import org.apache.asterix.external.dataset.adapter.AdapterIdentifier;
+import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.lang.common.base.AbstractStatement;
import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
public class AdapterDropStatement extends AbstractStatement {
- private final AdapterIdentifier signature;
- private boolean ifExists;
+ private final DataverseName dataverseName;
- public AdapterDropStatement(AdapterIdentifier signature, boolean ifExists) {
- this.signature = signature;
+ private final String adapterName;
+
+ private final boolean ifExists;
+
+ public AdapterDropStatement(DataverseName dataverseName, String adapterName, boolean ifExists) {
+ this.dataverseName = dataverseName;
+ this.adapterName = adapterName;
this.ifExists = ifExists;
}
@@ -38,8 +42,12 @@
return Kind.ADAPTER_DROP;
}
- public AdapterIdentifier getAdapterIdentifier() {
- return signature;
+ public DataverseName getDataverseName() {
+ return dataverseName;
+ }
+
+ public String getAdapterName() {
+ return adapterName;
}
public boolean getIfExists() {
@@ -55,5 +63,4 @@
public byte getCategory() {
return Category.DDL;
}
-
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CreateAdapterStatement.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CreateAdapterStatement.java
index 4741f8b..6e5886c 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CreateAdapterStatement.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CreateAdapterStatement.java
@@ -18,28 +18,35 @@
*/
package org.apache.asterix.lang.common.statement;
+import java.util.List;
+
import org.apache.asterix.common.exceptions.CompilationException;
-import org.apache.asterix.external.dataset.adapter.AdapterIdentifier;
+import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.lang.common.base.AbstractStatement;
import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
public class CreateAdapterStatement extends AbstractStatement {
- private final AdapterIdentifier signature;
+ private final DataverseName dataverseName;
- String lang;
- String libName;
- String externalIdent;
- boolean ifNotExists;
+ private final String adapterName;
- public CreateAdapterStatement(AdapterIdentifier signature, String lang, String libName, String externalIdent,
- boolean ifNotExists) {
- this.signature = signature;
- this.lang = lang;
- this.libName = libName;
- this.externalIdent = externalIdent;
+ private final DataverseName libraryDataverseName;
+
+ private final String libraryName;
+
+ private final List<String> externalIdentifier;
+
+ private final boolean ifNotExists;
+
+ public CreateAdapterStatement(DataverseName dataverseName, String adapterName, DataverseName libraryDataverseName,
+ String libraryName, List<String> externalIdentifier, boolean ifNotExists) {
+ this.dataverseName = dataverseName;
+ this.adapterName = adapterName;
+ this.libraryDataverseName = libraryDataverseName;
+ this.libraryName = libraryName;
+ this.externalIdentifier = externalIdentifier;
this.ifNotExists = ifNotExists;
-
}
@Override
@@ -47,20 +54,28 @@
return Kind.CREATE_ADAPTER;
}
- public AdapterIdentifier getAdapterId() {
- return signature;
+ public DataverseName getDataverseName() {
+ return dataverseName;
}
- public String getLibName() {
- return libName;
+ public String getAdapterName() {
+ return adapterName;
}
- public String getExternalIdent() {
- return externalIdent;
+ public DataverseName getLibraryDataverseName() {
+ return libraryDataverseName;
}
- public String getLang() {
- return lang;
+ public String getLibraryName() {
+ return libraryName;
+ }
+
+ public List<String> getExternalIdentifier() {
+ return externalIdentifier;
+ }
+
+ public boolean getIfNotExists() {
+ return ifNotExists;
}
@Override
@@ -72,5 +87,4 @@
public byte getCategory() {
return Category.DDL;
}
-
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CreateFunctionStatement.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CreateFunctionStatement.java
index 082665f..baaa2c1 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CreateFunctionStatement.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/CreateFunctionStatement.java
@@ -18,12 +18,13 @@
*/
package org.apache.asterix.lang.common.statement;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.lang.common.base.AbstractStatement;
import org.apache.asterix.lang.common.base.Expression;
import org.apache.asterix.lang.common.base.Statement;
@@ -33,57 +34,69 @@
import org.apache.asterix.lang.common.util.ConfigurationUtil;
import org.apache.asterix.lang.common.util.ExpressionUtils;
import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
+import org.apache.asterix.object.base.AdmBooleanNode;
import org.apache.asterix.object.base.AdmObjectNode;
+import org.apache.asterix.object.base.AdmStringNode;
+import org.apache.asterix.object.base.IAdmNode;
+import org.apache.asterix.om.types.ATypeTag;
import org.apache.hyracks.algebricks.common.utils.Pair;
public class CreateFunctionStatement extends AbstractStatement {
+ private static final String NULLCALL_FIELD_NAME = "null-call";
+ private static final boolean NULLCALL_DEFAULT = false;
+ private static final String DETERMINISTIC_FIELD_NAME = "deterministic";
+ private static final boolean DETERMINISTIC_DEFAULT = true;
+ private static final String RESOURCES_FIELD_NAME = "resources";
+
private final FunctionSignature signature;
private final String functionBody;
private final Expression functionBodyExpression;
- private final boolean ifNotExists;
private final List<Pair<VarIdentifier, TypeExpression>> paramList;
private final TypeExpression returnType;
- private final String lang;
- private final String libName;
+ private final DataverseName libraryDataverseName;
+ private final String libraryName;
private final List<String> externalIdentifier;
- private final Boolean deterministic;
- private final Boolean nullCall;
- private final AdmObjectNode resources;
+ private final AdmObjectNode options;
+
+ private final boolean replaceIfExists;
+ private final boolean ifNotExists;
public CreateFunctionStatement(FunctionSignature signature, List<Pair<VarIdentifier, TypeExpression>> paramList,
- String functionBody, Expression functionBodyExpression, boolean ifNotExists) {
+ String functionBody, Expression functionBodyExpression, boolean replaceIfExists, boolean ifNotExists) {
this.signature = signature;
this.functionBody = functionBody;
this.functionBodyExpression = functionBodyExpression;
- this.ifNotExists = ifNotExists;
- this.paramList = requireNullTypes(paramList);
+ this.paramList = requireNullTypes(paramList); // parameter type specification is not allowed for inline functions
this.returnType = null; // return type specification is not allowed for inline functions
- this.lang = null;
- this.libName = null;
+ this.libraryDataverseName = null;
+ this.libraryName = null;
this.externalIdentifier = null;
- this.deterministic = null;
- this.nullCall = null;
- this.resources = null;
+ this.options = null;
+ this.replaceIfExists = replaceIfExists;
+ this.ifNotExists = ifNotExists;
}
public CreateFunctionStatement(FunctionSignature signature, List<Pair<VarIdentifier, TypeExpression>> paramList,
- TypeExpression returnType, boolean deterministic, boolean nullCall, String lang, String libName,
- List<String> externalIdentifier, RecordConstructor resources, boolean ifNotExists)
+ TypeExpression returnType, DataverseName libraryDataverseName, String libraryName,
+ List<String> externalIdentifier, RecordConstructor options, boolean replaceIfExists, boolean ifNotExists)
throws CompilationException {
this.signature = signature;
- this.ifNotExists = ifNotExists;
this.paramList = paramList;
this.returnType = returnType;
- this.deterministic = deterministic;
- this.nullCall = nullCall;
- this.lang = lang;
- this.libName = libName;
+ this.libraryDataverseName = libraryDataverseName;
+ this.libraryName = libraryName;
this.externalIdentifier = externalIdentifier;
- this.resources = resources == null ? null : ExpressionUtils.toNode(resources);
+ this.options = options == null ? null : ExpressionUtils.toNode(options);
this.functionBody = null;
this.functionBodyExpression = null;
+ this.replaceIfExists = replaceIfExists;
+ this.ifNotExists = ifNotExists;
+ }
+
+ public boolean getReplaceIfExists() {
+ return replaceIfExists;
}
public boolean getIfNotExists() {
@@ -123,24 +136,50 @@
return externalIdentifier;
}
- public String getLibName() {
- return libName;
+ public DataverseName getLibraryDataverseName() {
+ return libraryDataverseName;
}
- public String getLang() {
- return lang;
+ public String getLibraryName() {
+ return libraryName;
}
- public Boolean getDeterministic() {
- return deterministic;
+ public boolean getNullCall() throws CompilationException {
+ Boolean nullCall = getBooleanOption(NULLCALL_FIELD_NAME);
+ return nullCall != null ? nullCall : NULLCALL_DEFAULT;
}
- public Boolean getNullCall() {
- return nullCall;
+ public boolean getDeterministic() throws CompilationException {
+ Boolean deterministic = getBooleanOption(DETERMINISTIC_FIELD_NAME);
+ return deterministic != null ? deterministic : DETERMINISTIC_DEFAULT;
+ }
+
+ private Boolean getBooleanOption(String optionName) throws CompilationException {
+ IAdmNode value = getOption(optionName);
+ if (value == null) {
+ return null;
+ }
+ switch (value.getType()) {
+ case BOOLEAN:
+ return ((AdmBooleanNode) value).get();
+ case STRING:
+ return Boolean.parseBoolean(((AdmStringNode) value).get());
+ default:
+ throw new CompilationException(ErrorCode.FIELD_NOT_OF_TYPE, getSourceLocation(), optionName,
+ ATypeTag.BOOLEAN, value.getType());
+ }
}
public Map<String, String> getResources() throws CompilationException {
- return resources != null ? ConfigurationUtil.toProperties(resources) : Collections.emptyMap();
+ IAdmNode value = getOption(RESOURCES_FIELD_NAME);
+ if (value == null) {
+ return null;
+ }
+ if (value.getType() != ATypeTag.OBJECT) {
+ throw new CompilationException(ErrorCode.FIELD_NOT_OF_TYPE, getSourceLocation(), RESOURCES_FIELD_NAME,
+ ATypeTag.OBJECT, value.getType());
+ }
+ return ConfigurationUtil.toProperties((AdmObjectNode) value);
}
@Override
@@ -153,6 +192,10 @@
return Category.DDL;
}
+ private IAdmNode getOption(String optionName) {
+ return options != null ? options.get(optionName) : null;
+ }
+
private static List<Pair<VarIdentifier, TypeExpression>> requireNullTypes(
List<Pair<VarIdentifier, TypeExpression>> paramList) {
for (Pair<VarIdentifier, TypeExpression> p : paramList) {
@@ -162,4 +205,5 @@
}
return paramList;
}
+
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DatasetDecl.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DatasetDecl.java
index c0ad1b8..942e39b 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DatasetDecl.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DatasetDecl.java
@@ -40,7 +40,6 @@
protected final DataverseName dataverse;
protected final TypeExpression itemType;
protected final TypeExpression metaItemType;
- protected final Identifier nodegroupName;
protected final DatasetType datasetType;
protected final IDatasetDetailsDecl datasetDetailsDecl;
protected final Map<String, String> hints;
@@ -48,13 +47,12 @@
protected final boolean ifNotExists;
public DatasetDecl(DataverseName dataverse, Identifier name, TypeExpression itemType, TypeExpression metaItemType,
- Identifier nodeGroupName, Map<String, String> hints, DatasetType datasetType, IDatasetDetailsDecl idd,
- RecordConstructor withRecord, boolean ifNotExists) throws CompilationException {
+ Map<String, String> hints, DatasetType datasetType, IDatasetDetailsDecl idd, RecordConstructor withRecord,
+ boolean ifNotExists) throws CompilationException {
this.dataverse = dataverse;
this.name = name;
this.itemType = itemType;
this.metaItemType = metaItemType;
- this.nodegroupName = nodeGroupName;
this.hints = hints;
this.withObjectNode = DatasetDeclParametersUtil.validateAndGetWithObjectNode(withRecord, datasetType);
this.ifNotExists = ifNotExists;
@@ -86,8 +84,12 @@
return metaItemType;
}
- public Identifier getNodegroupName() {
- return nodegroupName;
+ public String getNodegroupName() {
+ AdmObjectNode nodeGroupObj = (AdmObjectNode) withObjectNode.get(DatasetDeclParametersUtil.NODE_GROUP_NAME);
+ if (nodeGroupObj == null) {
+ return null;
+ }
+ return nodeGroupObj.getOptionalString(DatasetDeclParametersUtil.NODE_GROUP_NAME_PARAMETER_NAME);
}
private AdmObjectNode getMergePolicyObject() {
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DataverseDropStatement.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DataverseDropStatement.java
index c20bd32..fa6bc4e 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DataverseDropStatement.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DataverseDropStatement.java
@@ -28,10 +28,16 @@
private DataverseName dataverseName;
private boolean ifExists;
+ private boolean ifEmpty;
public DataverseDropStatement(DataverseName dataverseName, boolean ifExists) {
+ this(dataverseName, ifExists, false);
+ }
+
+ public DataverseDropStatement(DataverseName dataverseName, boolean ifExists, boolean ifEmpty) {
this.dataverseName = dataverseName;
this.ifExists = ifExists;
+ this.ifEmpty = ifEmpty;
}
@Override
@@ -47,6 +53,10 @@
return ifExists;
}
+ public boolean getIfEmpty() {
+ return ifEmpty;
+ }
+
@Override
public <R, T> R accept(ILangVisitor<R, T> visitor, T arg) throws CompilationException {
return visitor.visit(this, arg);
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/FunctionDropStatement.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/FunctionDropStatement.java
index 0496ecc..2c59ea9 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/FunctionDropStatement.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/FunctionDropStatement.java
@@ -27,7 +27,7 @@
public class FunctionDropStatement extends AbstractStatement {
private final FunctionSignature signature;
- private boolean ifExists;
+ private final boolean ifExists;
public FunctionDropStatement(FunctionSignature signature, boolean ifExists) {
this.signature = signature;
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/InternalDetailsDecl.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/InternalDetailsDecl.java
index f312ddd..3ddd261 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/InternalDetailsDecl.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/InternalDetailsDecl.java
@@ -20,18 +20,28 @@
import java.util.List;
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+
public class InternalDetailsDecl implements IDatasetDetailsDecl {
private final List<List<String>> partitioningExprs;
private final List<Integer> keySourceIndicators;
+ private final Integer filterSourceIndicator;
private final boolean autogenerated;
private final List<String> filterField;
public InternalDetailsDecl(List<List<String>> partitioningExpr, List<Integer> keySourceIndicators,
- boolean autogenerated, List<String> filterField) {
+ boolean autogenerated, Integer filterSourceIndicator, List<String> filterField)
+ throws CompilationException {
this.partitioningExprs = partitioningExpr;
this.keySourceIndicators = keySourceIndicators;
this.autogenerated = autogenerated;
+ if (filterSourceIndicator == null && filterField != null
+ || filterSourceIndicator != null && filterField == null) {
+ throw new CompilationException(ErrorCode.INCONSISTENT_FILTER_INDICATOR);
+ }
this.filterField = filterField;
+ this.filterSourceIndicator = filterSourceIndicator;
}
public List<List<String>> getPartitioningExprs() {
@@ -50,4 +60,7 @@
return filterField;
}
+ public Integer getFilterSourceIndicator() {
+ return filterSourceIndicator;
+ }
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/LibraryDropStatement.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/LibraryDropStatement.java
index 09ea3a8..ae8e90c 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/LibraryDropStatement.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/LibraryDropStatement.java
@@ -29,9 +29,12 @@
private final DataverseName dataverseName;
private final String libraryName;
- public LibraryDropStatement(DataverseName dataverseName, String libraryName) {
+ private final boolean ifExists;
+
+ public LibraryDropStatement(DataverseName dataverseName, String libraryName, boolean ifExists) {
this.dataverseName = dataverseName;
this.libraryName = libraryName;
+ this.ifExists = ifExists;
}
public DataverseName getDataverseName() {
@@ -42,6 +45,10 @@
return libraryName;
}
+ public boolean getIfExists() {
+ return ifExists;
+ }
+
@Override
public Kind getKind() {
return Kind.LIBRARY_DROP;
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java
index 0d74272..28a50b1 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java
@@ -22,9 +22,6 @@
import java.util.HashMap;
import java.util.Map;
-import org.apache.asterix.common.functions.FunctionSignature;
-import org.apache.asterix.om.functions.BuiltinFunctions;
-
public class CommonFunctionMapUtil {
// Maps from a function name to an another internal function name (i.e., AsterixDB internal name).
@@ -174,26 +171,6 @@
}
- /**
- * Maps a user invoked function signature to a builtin internal function signature if possible.
- *
- * @param fs,
- * the signature of an user typed function.
- * @return the corresponding system internal function signature if it exists, otherwise
- * the input function signature.
- */
- public static FunctionSignature normalizeBuiltinFunctionSignature(FunctionSignature fs) {
- String name = fs.getName();
- String lowerCaseName = name.toLowerCase();
- String mappedName = getFunctionMapping(lowerCaseName);
- if (mappedName != null) {
- return new FunctionSignature(fs.getDataverseName(), mappedName, fs.getArity());
- }
- String understoreName = lowerCaseName.replace('_', '-');
- FunctionSignature newFs = new FunctionSignature(fs.getDataverseName(), understoreName, fs.getArity());
- return BuiltinFunctions.isBuiltinCompilerFunction(newFs, true) ? newFs : fs;
- }
-
public static String getFunctionMapping(String alias) {
return FUNCTION_NAME_MAP.get(alias);
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/DatasetDeclParametersUtil.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/DatasetDeclParametersUtil.java
index 52285d9..552ca39 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/DatasetDeclParametersUtil.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/DatasetDeclParametersUtil.java
@@ -52,6 +52,12 @@
public static final String STORAGE_BLOCK_COMPRESSION_SCHEME_PARAMETER_NAME = "scheme";
/* ***********************************************
+ * Node Group Parameters
+ * ***********************************************
+ */
+ public static final String NODE_GROUP_NAME = "node-group";
+ public static final String NODE_GROUP_NAME_PARAMETER_NAME = "name";
+ /* ***********************************************
* Private members
* ***********************************************
*/
@@ -79,9 +85,11 @@
}
private static ARecordType getWithObjectType() {
- final String[] withNames = { MERGE_POLICY_PARAMETER_NAME, STORAGE_BLOCK_COMPRESSION_PARAMETER_NAME };
+ final String[] withNames =
+ { MERGE_POLICY_PARAMETER_NAME, STORAGE_BLOCK_COMPRESSION_PARAMETER_NAME, NODE_GROUP_NAME };
final IAType[] withTypes = { AUnionType.createUnknownableType(getMergePolicyType()),
- AUnionType.createUnknownableType(getStorageBlockCompressionType()) };
+ AUnionType.createUnknownableType(getStorageBlockCompressionType()),
+ AUnionType.createUnknownableType(getNodeGroupType()) };
return new ARecordType("withObject", withNames, withTypes, false);
}
@@ -113,4 +121,10 @@
final IAType[] schemeType = { BuiltinType.ASTRING };
return new ARecordType(STORAGE_BLOCK_COMPRESSION_PARAMETER_NAME, schemeName, schemeType, false);
}
+
+ private static ARecordType getNodeGroupType() {
+ final String[] schemeName = { NODE_GROUP_NAME_PARAMETER_NAME };
+ final IAType[] schemeType = { BuiltinType.ASTRING };
+ return new ARecordType(NODE_GROUP_NAME, schemeName, schemeType, false);
+ }
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/DataverseNameUtils.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/DataverseNameUtils.java
index 1eb3868..1a3f26a 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/DataverseNameUtils.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/DataverseNameUtils.java
@@ -76,7 +76,7 @@
dataverseName.getParts(dataverseNameParts);
for (int i = 0, ln = dataverseNameParts.size(); i < ln; i++) {
if (i > 0) {
- sb.append(DataverseName.SEPARATOR_CHAR);
+ sb.append(DataverseName.CANONICAL_FORM_SEPARATOR_CHAR);
}
sb.append(normalize(dataverseNameParts.get(i)));
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/FunctionUtil.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/FunctionUtil.java
index 643d2a5..71cd759 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/FunctionUtil.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/FunctionUtil.java
@@ -22,9 +22,11 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
+import java.util.function.BiFunction;
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
@@ -40,11 +42,11 @@
import org.apache.asterix.lang.common.expression.UnorderedListTypeDefinition;
import org.apache.asterix.lang.common.parser.FunctionParser;
import org.apache.asterix.lang.common.statement.FunctionDecl;
-import org.apache.asterix.metadata.MetadataManager;
-import org.apache.asterix.metadata.MetadataTransactionContext;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.BuiltinTypeMap;
+import org.apache.asterix.metadata.entities.Dataverse;
import org.apache.asterix.metadata.entities.Function;
+import org.apache.asterix.om.functions.BuiltinFunctionInfo;
import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.TypeSignature;
@@ -54,9 +56,7 @@
import org.apache.hyracks.algebricks.common.utils.Pair;
import org.apache.hyracks.algebricks.common.utils.Triple;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import org.apache.hyracks.algebricks.core.algebra.functions.AlgebricksBuiltinFunctions;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
import org.apache.hyracks.api.exceptions.SourceLocation;
public class FunctionUtil {
@@ -68,21 +68,11 @@
private static final String FN_DATASET_NAME = BuiltinFunctions.DATASET.getName();
- public static IFunctionInfo getFunctionInfo(FunctionIdentifier fi) {
- return BuiltinFunctions.getAsterixFunctionInfo(fi);
- }
-
- public static IFunctionInfo getFunctionInfo(FunctionSignature fs) {
- return getFunctionInfo(fs.createFunctionIdentifier());
- }
-
- public static IFunctionInfo getBuiltinFunctionInfo(String functionName, int arity) {
- IFunctionInfo fi =
- getFunctionInfo(new FunctionIdentifier(AlgebricksBuiltinFunctions.ALGEBRICKS_NS, functionName, arity));
- if (fi == null) {
- fi = getFunctionInfo(new FunctionIdentifier(FunctionConstants.ASTERIX_NS, functionName, arity));
- }
- return fi;
+ /**
+ * @deprecated use {@link BuiltinFunctions#getBuiltinFunctionInfo(FunctionIdentifier)} instead
+ */
+ public static BuiltinFunctionInfo getFunctionInfo(FunctionIdentifier fi) {
+ return BuiltinFunctions.getBuiltinFunctionInfo(fi);
}
public static TypeSignature getTypeDependencyFromFunctionParameter(TypeExpression typeExpr,
@@ -116,10 +106,79 @@
Set<CallExpr> getFunctionCalls(Expression expression) throws CompilationException;
}
- @FunctionalInterface
- public interface IFunctionNormalizer {
- FunctionSignature normalizeBuiltinFunctionSignature(FunctionSignature fs, SourceLocation sourceLoc)
- throws CompilationException;
+ public static FunctionSignature resolveFunctionCall(FunctionSignature fs, SourceLocation sourceLoc,
+ MetadataProvider metadataProvider, Set<FunctionSignature> declaredFunctions,
+ BiFunction<String, Integer, FunctionSignature> builtinFunctionResolver) throws CompilationException {
+ int arity = fs.getArity();
+ DataverseName dataverse = fs.getDataverseName();
+ if (dataverse == null) {
+ dataverse = metadataProvider.getDefaultDataverseName();
+ }
+ boolean isBuiltinFuncDataverse =
+ dataverse.equals(FunctionConstants.ASTERIX_DV) || dataverse.equals(FunctionConstants.ALGEBRICKS_DV);
+
+ if (!isBuiltinFuncDataverse) {
+ // attempt to resolve to a user-defined function
+ FunctionSignature fsWithDv =
+ fs.getDataverseName() == null ? new FunctionSignature(dataverse, fs.getName(), arity) : fs;
+ if (declaredFunctions.contains(fsWithDv)) {
+ return fsWithDv;
+ }
+ try {
+ Function function = metadataProvider.lookupUserDefinedFunction(fsWithDv);
+ if (function != null) {
+ return fsWithDv;
+ }
+ } catch (AlgebricksException e) {
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, e, sourceLoc, e.getMessage());
+ }
+
+ // fail if the dataverse was specified in the function call but this dataverse does not exist
+ if (fs.getDataverseName() != null) {
+ Dataverse dv;
+ try {
+ dv = metadataProvider.findDataverse(dataverse);
+ } catch (AlgebricksException e) {
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, e, sourceLoc, e.getMessage());
+ }
+ if (dv == null) {
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverse);
+ }
+ }
+ }
+
+ // attempt to resolve to a built-in function
+ String name = fs.getName().toLowerCase();
+ String mappedName = CommonFunctionMapUtil.getFunctionMapping(name);
+ if (mappedName != null) {
+ name = mappedName;
+ }
+ FunctionSignature fsBuiltin = builtinFunctionResolver.apply(name, arity);
+ if (fsBuiltin == null) {
+ throw new CompilationException(ErrorCode.UNKNOWN_FUNCTION, sourceLoc, fs.toString(false));
+ }
+ return fsBuiltin;
+ }
+
+ public static BiFunction<String, Integer, FunctionSignature> createBuiltinFunctionResolver(
+ MetadataProvider metadataProvider) {
+ boolean includePrivateFunctions = getImportPrivateFunctions(metadataProvider);
+ return createBuiltinFunctionResolver(includePrivateFunctions);
+ }
+
+ public static BiFunction<String, Integer, FunctionSignature> createBuiltinFunctionResolver(
+ boolean includePrivateFunctions) {
+ return (name, arity) -> {
+ String builtinName = name.replace('_', '-');
+ BuiltinFunctionInfo finfo = BuiltinFunctions.resolveBuiltinFunction(builtinName, arity);
+ if (finfo == null) {
+ return null;
+ }
+ if (!includePrivateFunctions && finfo.isPrivate()) {
+ return null;
+ }
+ return new FunctionSignature(finfo.getFunctionIdentifier());
+ };
}
/**
@@ -137,92 +196,58 @@
* for collecting function calls in the <code>expression</code>
* @param functionParser,
* for parsing stored functions in the string represetnation.
- * @param functionNormalizer,
- * for normalizing function names.
+ * @param defaultDataverse
* @throws CompilationException
*/
public static List<FunctionDecl> retrieveUsedStoredFunctions(MetadataProvider metadataProvider,
Expression expression, List<FunctionSignature> declaredFunctions, List<FunctionDecl> inputFunctionDecls,
- IFunctionCollector functionCollector, FunctionParser functionParser, IFunctionNormalizer functionNormalizer)
+ IFunctionCollector functionCollector, FunctionParser functionParser, DataverseName defaultDataverse)
throws CompilationException {
List<FunctionDecl> functionDecls =
inputFunctionDecls == null ? new ArrayList<>() : new ArrayList<>(inputFunctionDecls);
if (expression == null) {
return functionDecls;
}
- String value = (String) metadataProvider.getConfig().get(FunctionUtil.IMPORT_PRIVATE_FUNCTIONS);
- boolean includePrivateFunctions = (value != null) && Boolean.parseBoolean(value.toLowerCase());
Set<CallExpr> functionCalls = functionCollector.getFunctionCalls(expression);
for (CallExpr functionCall : functionCalls) {
- FunctionSignature signature = functionCall.getFunctionSignature();
- if (declaredFunctions != null && declaredFunctions.contains(signature)) {
+ FunctionSignature fs = functionCall.getFunctionSignature();
+ FunctionSignature fsWithDv = fs.getDataverseName() != null ? fs
+ : new FunctionSignature(defaultDataverse, fs.getName(), fs.getArity());
+ if (declaredFunctions != null && declaredFunctions.contains(fsWithDv)) {
continue;
}
- if (signature.getDataverseName() == null) {
- signature.setDataverseName(metadataProvider.getDefaultDataverseName());
- }
- DataverseName namespace = signature.getDataverseName();
- // Checks the existence of the referred dataverse.
- try {
- if (!namespace.equals(FunctionConstants.ASTERIX_DV)
- && !namespace.equals(FunctionConstants.ALGEBRICKS_DV)
- && metadataProvider.findDataverse(namespace) == null) {
- throw new CompilationException(ErrorCode.COMPILATION_ERROR, functionCall.getSourceLocation(),
- "In function call \"" + namespace + "." + signature.getName() + "(...)\", the dataverse \""
- + namespace + "\" cannot be found!");
- }
- } catch (AlgebricksException e) {
- throw new CompilationException(e);
- }
Function function;
try {
- function = lookupUserDefinedFunctionDecl(metadataProvider.getMetadataTxnContext(), signature);
+ function = metadataProvider.lookupUserDefinedFunction(fsWithDv);
} catch (AlgebricksException e) {
- throw new CompilationException(e);
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, e, functionCall.getSourceLocation(),
+ e.toString());
}
- if (function == null) {
- FunctionSignature normalizedSignature = functionNormalizer == null ? signature
- : functionNormalizer.normalizeBuiltinFunctionSignature(signature,
- functionCall.getSourceLocation());
- if (BuiltinFunctions.isBuiltinCompilerFunction(normalizedSignature, includePrivateFunctions)) {
- continue;
- }
- StringBuilder messageBuilder = new StringBuilder();
- if (!functionDecls.isEmpty()) {
- messageBuilder.append("function " + functionDecls.get(functionDecls.size() - 1).getSignature()
- + " depends upon function " + signature + " which is undefined");
- } else {
- messageBuilder.append("function " + signature + " is not defined");
- }
- throw new CompilationException(ErrorCode.COMPILATION_ERROR, functionCall.getSourceLocation(),
- messageBuilder.toString());
+ if (function == null || !functionParser.getLanguage().equals(function.getLanguage())) {
+ // the function is either unknown, builtin, or in a different language.
+ // either way we ignore it here because it will be handled by the function inlining rule later
+ continue;
}
- if (functionParser.getLanguage().equals(function.getLanguage())) {
- FunctionDecl functionDecl = functionParser.getFunctionDecl(function);
- if (functionDecl != null) {
- if (functionDecls.contains(functionDecl)) {
- throw new CompilationException(ErrorCode.COMPILATION_ERROR, functionCall.getSourceLocation(),
- "Recursive invocation " + functionDecls.get(functionDecls.size() - 1).getSignature()
- + " <==> " + functionDecl.getSignature());
- }
- functionDecls.add(functionDecl);
- functionDecls = retrieveUsedStoredFunctions(metadataProvider, functionDecl.getFuncBody(),
- declaredFunctions, functionDecls, functionCollector, functionParser, functionNormalizer);
- }
+ FunctionDecl functionDecl = functionParser.getFunctionDecl(function);
+ if (functionDecls.contains(functionDecl)) {
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, functionCall.getSourceLocation(),
+ "Recursive invocation " + functionDecls.get(functionDecls.size() - 1).getSignature() + " <==> "
+ + functionDecl.getSignature());
}
+ functionDecls.add(functionDecl);
+ functionDecls = retrieveUsedStoredFunctions(metadataProvider, functionDecl.getFuncBody(), declaredFunctions,
+ functionDecls, functionCollector, functionParser, function.getDataverseName());
}
return functionDecls;
}
public static List<List<Triple<DataverseName, String, String>>> getFunctionDependencies(IQueryRewriter rewriter,
- Expression expression, MetadataProvider metadataProvider, Collection<TypeSignature> dependentTypes)
- throws CompilationException {
+ Expression expression, MetadataProvider metadataProvider) throws CompilationException {
Set<CallExpr> functionCalls = rewriter.getFunctionCalls(expression);
//Get the List of used functions and used datasets
List<Triple<DataverseName, String, String>> datasourceDependencies = new ArrayList<>();
List<Triple<DataverseName, String, String>> functionDependencies = new ArrayList<>();
- List<Triple<DataverseName, String, String>> typeDependencies = new ArrayList<>(dependentTypes.size());
for (CallExpr functionCall : functionCalls) {
FunctionSignature signature = functionCall.getFunctionSignature();
if (isBuiltinDatasetFunction(signature)) {
@@ -230,18 +255,15 @@
metadataProvider.getDefaultDataverseName(), functionCall.getSourceLocation(),
ExpressionUtils::getStringLiteral);
datasourceDependencies.add(new Triple<>(datasetReference.first, datasetReference.second, null));
- } else if (!BuiltinFunctions.isBuiltinCompilerFunction(signature, false)) {
+ } else if (BuiltinFunctions.getBuiltinFunctionInfo(signature.createFunctionIdentifier()) == null) {
functionDependencies.add(new Triple<>(signature.getDataverseName(), signature.getName(),
Integer.toString(signature.getArity())));
}
}
- for (TypeSignature t : dependentTypes) {
- typeDependencies.add(new Triple<>(t.getDataverseName(), t.getName(), null));
- }
List<List<Triple<DataverseName, String, String>>> dependencies = new ArrayList<>(3);
dependencies.add(datasourceDependencies);
dependencies.add(functionDependencies);
- dependencies.add(typeDependencies);
+ dependencies.add(Collections.emptyList());
return dependencies;
}
@@ -260,14 +282,6 @@
return dependencies;
}
- public static Function lookupUserDefinedFunctionDecl(MetadataTransactionContext mdTxnCtx,
- FunctionSignature signature) throws AlgebricksException {
- if (signature.getDataverseName() == null) {
- return null;
- }
- return MetadataManager.INSTANCE.getFunction(mdTxnCtx, signature);
- }
-
public static boolean isBuiltinDatasetFunction(FunctionSignature fs) {
return Objects.equals(FN_DATASET_DATAVERSE_NAME, fs.getDataverseName())
&& Objects.equals(FN_DATASET_NAME, fs.getName());
@@ -325,4 +339,20 @@
private static String getStringConstant(Mutable<ILogicalExpression> arg) {
return ConstantExpressionUtil.getStringConstant(arg.getValue());
}
+
+ private static boolean getImportPrivateFunctions(MetadataProvider metadataProvider) {
+ String value = (String) metadataProvider.getConfig().get(IMPORT_PRIVATE_FUNCTIONS);
+ return (value != null) && Boolean.parseBoolean(value.toLowerCase());
+ }
+
+ public static Set<FunctionSignature> getFunctionSignatures(List<FunctionDecl> declaredFunctions) {
+ if (declaredFunctions == null || declaredFunctions.isEmpty()) {
+ return Collections.emptySet();
+ }
+ Set<FunctionSignature> result = new HashSet<>();
+ for (FunctionDecl fd : declaredFunctions) {
+ result.add(fd.getSignature());
+ }
+ return result;
+ }
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/AbstractInlineUdfsVisitor.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/AbstractInlineUdfsVisitor.java
index 984ceb4..eb2fba6 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/AbstractInlineUdfsVisitor.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/AbstractInlineUdfsVisitor.java
@@ -390,14 +390,9 @@
private Expression rewriteFunctionBody(FunctionDecl fnDecl) throws CompilationException {
SourceLocation sourceLoc = fnDecl.getSourceLocation();
- Query wrappedQuery = new Query(false);
- wrappedQuery.setSourceLocation(sourceLoc);
- wrappedQuery.setBody(fnDecl.getFuncBody());
- wrappedQuery.setTopLevel(false);
DataverseName fnDataverseName = fnDecl.getSignature().getDataverseName();
Dataverse defaultDataverse = metadataProvider.getDefaultDataverse();
-
Dataverse fnDataverse;
if (fnDataverseName == null || fnDataverseName.equals(defaultDataverse.getDataverseName())) {
fnDataverse = defaultDataverse;
@@ -411,10 +406,17 @@
metadataProvider.setDefaultDataverse(fnDataverse);
try {
+ Query wrappedQuery = new Query(false);
+ wrappedQuery.setSourceLocation(sourceLoc);
+ wrappedQuery.setBody(fnDecl.getFuncBody());
+ wrappedQuery.setTopLevel(false);
IQueryRewriter queryRewriter = rewriterFactory.createQueryRewriter();
queryRewriter.rewrite(declaredFunctions, wrappedQuery, metadataProvider, context, true,
fnDecl.getParamList());
return wrappedQuery.getBody();
+ } catch (CompilationException e) {
+ throw new CompilationException(ErrorCode.COMPILATION_BAD_FUNCTION_DEFINITION, e, fnDecl.getSignature(),
+ e.getMessage());
} finally {
metadataProvider.setDefaultDataverse(defaultDataverse);
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/CloneAndSubstituteVariablesVisitor.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/CloneAndSubstituteVariablesVisitor.java
index 567dd4a..97701e4 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/CloneAndSubstituteVariablesVisitor.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/CloneAndSubstituteVariablesVisitor.java
@@ -298,12 +298,11 @@
VariableSubstitutionEnvironment env) throws CompilationException {
Pair<ILangExpression, VariableSubstitutionEnvironment> p1 = ia.getExpr().accept(this, env);
Expression indexExpr = null;
- if (!ia.isAny()) {
+ if (ia.getIndexExpr() != null) {
Pair<ILangExpression, VariableSubstitutionEnvironment> p2 = ia.getIndexExpr().accept(this, env);
indexExpr = (Expression) p2.first;
}
- IndexAccessor i = new IndexAccessor((Expression) p1.first, indexExpr);
- i.setAny(ia.isAny());
+ IndexAccessor i = new IndexAccessor((Expression) p1.first, ia.getIndexKind(), indexExpr);
i.setSourceLocation(ia.getSourceLocation());
i.addHints(ia.getHints());
return new Pair<>(i, env);
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/FormatPrintVisitor.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/FormatPrintVisitor.java
index 62763d1..290f9ea 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/FormatPrintVisitor.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/FormatPrintVisitor.java
@@ -31,9 +31,9 @@
import org.apache.asterix.common.config.DatasetConfig.DatasetType;
import org.apache.asterix.common.config.DatasetConfig.IndexType;
import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.external.dataset.adapter.AdapterIdentifier;
import org.apache.asterix.lang.common.base.Expression;
import org.apache.asterix.lang.common.base.Literal;
import org.apache.asterix.lang.common.clause.LetClause;
@@ -356,13 +356,22 @@
}
@Override
- public Void visit(IndexAccessor fa, Integer step) throws CompilationException {
- fa.getExpr().accept(this, step + 1);
+ public Void visit(IndexAccessor ia, Integer step) throws CompilationException {
+ ia.getExpr().accept(this, step + 1);
out.print("[");
- if (fa.isAny()) {
- out.print("?");
- } else {
- fa.getIndexExpr().accept(this, step + 1);
+ switch (ia.getIndexKind()) {
+ case ANY:
+ out.print("?");
+ break;
+ case STAR:
+ out.print("*");
+ break;
+ case ELEMENT:
+ ia.getIndexExpr().accept(this, step + 1);
+ break;
+ default:
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, ia.getSourceLocation(),
+ ia.getIndexKind());
}
out.print("]");
return null;
@@ -456,10 +465,6 @@
out.print(" using " + revertStringToQuoted(externalDetails.getAdapter()));
printConfiguration(externalDetails.getProperties());
}
- Identifier nodeGroupName = dd.getNodegroupName();
- if (nodeGroupName != null) {
- out.print(" on " + nodeGroupName.getValue());
- }
Map<String, String> hints = dd.getHints();
if (dd.getHints().size() > 0) {
out.print(" hints ");
@@ -792,7 +797,7 @@
@Override
public Void visit(CreateFunctionStatement cfs, Integer step) throws CompilationException {
- out.print(skip(step) + CREATE + " function ");
+ out.print(skip(step) + CREATE + generateOrReplace(cfs.getReplaceIfExists()) + " function ");
out.print(generateIfNotExists(cfs.getIfNotExists()));
out.print(this.generateFullName(cfs.getFunctionSignature().getDataverseName(),
cfs.getFunctionSignature().getName()));
@@ -818,7 +823,7 @@
@Override
public Void visit(CreateAdapterStatement cfs, Integer step) throws CompilationException {
out.print(skip(step) + CREATE + " adapter");
- out.print(this.generateFullName(cfs.getAdapterId().getDataverseName(), cfs.getAdapterId().getName()));
+ out.print(this.generateFullName(cfs.getDataverseName(), cfs.getAdapterName()));
out.println(SEMICOLON);
out.println();
return null;
@@ -827,9 +832,8 @@
@Override
public Void visit(AdapterDropStatement del, Integer step) throws CompilationException {
out.print(skip(step) + "drop adapter ");
- AdapterIdentifier funcSignature = del.getAdapterIdentifier();
- out.print(funcSignature.toString());
- out.println(SEMICOLON);
+ out.print(generateFullName(del.getDataverseName(), del.getAdapterName()));
+ out.println(generateIfExists(del.getIfExists()) + SEMICOLON);
return null;
}
@@ -1022,7 +1026,7 @@
dataverseName.getParts(dataverseNameParts);
for (int i = 0, ln = dataverseNameParts.size(); i < ln; i++) {
if (i > 0) {
- sb.append(DataverseName.SEPARATOR_CHAR);
+ sb.append(".");
}
sb.append(normalize(dataverseNameParts.get(i)));
}
@@ -1048,6 +1052,10 @@
return ifExits ? " if exists" : "";
}
+ protected String generateOrReplace(boolean orReplace) {
+ return orReplace ? " or replace" : "";
+ }
+
protected String generateIndexTypeString(IndexType type) {
switch (type) {
case BTREE:
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/GatherFunctionCallsVisitor.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/GatherFunctionCallsVisitor.java
index 3d7b467..858729c 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/GatherFunctionCallsVisitor.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/GatherFunctionCallsVisitor.java
@@ -113,11 +113,9 @@
@Override
public Void visit(IndexAccessor ia, Void arg) throws CompilationException {
ia.getExpr().accept(this, arg);
-
- if (!ia.isAny()) {
+ if (ia.getIndexExpr() != null) {
ia.getIndexExpr().accept(this, arg);
}
-
return null;
}
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/QueryPrintVisitor.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/QueryPrintVisitor.java
index f83a89e..64d97f3 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/QueryPrintVisitor.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/QueryPrintVisitor.java
@@ -24,6 +24,7 @@
import org.apache.asterix.common.config.DatasetConfig.DatasetType;
import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.lang.common.base.Expression;
import org.apache.asterix.lang.common.base.Literal;
@@ -163,7 +164,7 @@
return null;
}
- private static void printFunctionSignature(PrintWriter out, FunctionSignature fs, int arity) {
+ protected static void printFunctionSignature(PrintWriter out, FunctionSignature fs, int arity) {
out.print(fs.toString(false));
if (arity != FunctionIdentifier.VARARGS) {
out.print("@");
@@ -291,14 +292,23 @@
}
@Override
- public Void visit(IndexAccessor fa, Integer step) throws CompilationException {
+ public Void visit(IndexAccessor ia, Integer step) throws CompilationException {
out.println(skip(step) + "IndexAccessor [");
- fa.getExpr().accept(this, step + 1);
+ ia.getExpr().accept(this, step + 1);
out.print(skip(step + 1) + "Index: ");
- if (fa.isAny()) {
- out.println("ANY");
- } else {
- fa.getIndexExpr().accept(this, step + 1);
+ switch (ia.getIndexKind()) {
+ case ANY:
+ out.println("ANY");
+ break;
+ case STAR:
+ out.println("STAR");
+ break;
+ case ELEMENT:
+ ia.getIndexExpr().accept(this, step + 1);
+ break;
+ default:
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, ia.getSourceLocation(),
+ ia.getIndexKind());
}
out.println(skip(step) + "]");
return null;
diff --git a/asterixdb/asterix-lang-sqlpp/pom.xml b/asterixdb/asterix-lang-sqlpp/pom.xml
index 9a1e7b3..da49124 100644
--- a/asterixdb/asterix-lang-sqlpp/pom.xml
+++ b/asterixdb/asterix-lang-sqlpp/pom.xml
@@ -52,6 +52,13 @@
<javaUnicodeEscape>true</javaUnicodeEscape>
</configuration>
</execution>
+ <execution>
+ <id>javacc-jjdoc</id>
+ <goals>
+ <goal>jjdoc</goal>
+ </goals>
+ <phase>generate-test-sources</phase>
+ </execution>
</executions>
</plugin>
<plugin>
@@ -106,35 +113,6 @@
</pluginManagement>
</build>
- <profiles>
- <profile>
- <id>jjdoc</id>
- <activation>
- <property>
- <name>jjdoc.skip</name>
- <value>!true</value>
- </property>
- </activation>
- <build>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>javacc-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>javacc-jjdoc</id>
- <goals>
- <goal>jjdoc</goal>
- </goals>
- <phase>generate-test-sources</phase>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-
<dependencies>
<dependency>
<groupId>org.apache.hyracks</groupId>
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/clause/SelectBlock.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/clause/SelectBlock.java
index c934e32..9c743ad 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/clause/SelectBlock.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/clause/SelectBlock.java
@@ -64,10 +64,18 @@
return selectClause;
}
+ public void setSelectClause(SelectClause selectClause) {
+ this.selectClause = selectClause;
+ }
+
public FromClause getFromClause() {
return fromClause;
}
+ public void setFromClause(FromClause fromClause) {
+ this.fromClause = fromClause;
+ }
+
public List<AbstractClause> getLetWhereList() {
return letWhereClauses;
}
@@ -76,6 +84,10 @@
return groupbyClause;
}
+ public void setGroupbyClause(GroupbyClause groupbyClause) {
+ this.groupbyClause = groupbyClause;
+ }
+
public List<AbstractClause> getLetHavingListAfterGroupby() {
return letHavingClausesAfterGby;
}
@@ -96,10 +108,6 @@
return !letHavingClausesAfterGby.isEmpty();
}
- public void setGroupbyClause(GroupbyClause groupbyClause) {
- this.groupbyClause = groupbyClause;
- }
-
@Override
public int hashCode() {
return Objects.hash(fromClause, groupbyClause, letWhereClauses, letHavingClausesAfterGby, selectClause);
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/clause/SelectClause.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/clause/SelectClause.java
index 2627870..3b550a3 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/clause/SelectClause.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/clause/SelectClause.java
@@ -68,6 +68,10 @@
return distinct;
}
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
@Override
public String toString() {
return "select " + (distinct ? "distinct " : "")
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppFunctionBodyRewriter.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppFunctionBodyRewriter.java
index e7104dd..a89ca5b 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppFunctionBodyRewriter.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppFunctionBodyRewriter.java
@@ -42,6 +42,9 @@
// Sets up parameters.
setup(declaredFunctions, topStatement, metadataProvider, context, externalVars);
+ // Resolves function calls
+ resolveFunctionCalls();
+
// Generates column names.
generateColumnNames();
@@ -64,11 +67,14 @@
// Must run after rewriteSetOperations() and before variableCheckAndRewrite()
rewriteGroupingSets();
+ // Window expression core rewrites.
+ rewriteWindowExpressions();
+
// Generate ids for variables (considering scopes) and replace global variable access with the dataset function.
variableCheckAndRewrite();
// Extracts SQL-92 aggregate functions from CASE/IF expressions into LET clauses
- rewriteCaseExpressions();
+ extractAggregatesFromCaseExpressions();
// Rewrites SQL-92 global aggregations.
rewriteGroupByAggregationSugar();
@@ -79,6 +85,9 @@
// Rewrites like/not-like expressions.
rewriteOperatorExpression();
+ // Normalizes CASE expressions and rewrites simple ones into switch-case()
+ rewriteCaseExpressions();
+
// Rewrites several variable-arg functions into their corresponding internal list-input functions.
rewriteListInputFunctions();
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java
index 1674940..3f93dd0 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java
@@ -20,6 +20,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -63,19 +64,20 @@
import org.apache.asterix.lang.sqlpp.rewrites.visitor.InlineWithExpressionVisitor;
import org.apache.asterix.lang.sqlpp.rewrites.visitor.OperatorExpressionVisitor;
import org.apache.asterix.lang.sqlpp.rewrites.visitor.SetOperationVisitor;
-import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppBuiltinFunctionRewriteVisitor;
-import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppCaseRewriteVisitor;
+import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppCaseAggregateExtractionVisitor;
+import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppCaseExpressionVisitor;
+import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppFunctionCallResolverVisitor;
import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppGroupByAggregationSugarVisitor;
import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppGroupByVisitor;
import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppGroupingSetsVisitor;
import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppInlineUdfsVisitor;
import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppListInputFunctionRewriteVisitor;
+import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppSpecialFunctionNameRewriteVisitor;
import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppWindowAggregationSugarVisitor;
import org.apache.asterix.lang.sqlpp.rewrites.visitor.SqlppWindowRewriteVisitor;
import org.apache.asterix.lang.sqlpp.rewrites.visitor.SubstituteGroupbyExpressionWithVariableVisitor;
import org.apache.asterix.lang.sqlpp.rewrites.visitor.VariableCheckAndRewriteVisitor;
import org.apache.asterix.lang.sqlpp.struct.SetOperationRight;
-import org.apache.asterix.lang.sqlpp.util.FunctionMapUtil;
import org.apache.asterix.lang.sqlpp.util.SqlppAstPrintUtil;
import org.apache.asterix.lang.sqlpp.util.SqlppVariableUtil;
import org.apache.asterix.lang.sqlpp.visitor.base.ISqlppVisitor;
@@ -112,7 +114,7 @@
this.context = context;
this.declaredFunctions = declaredFunctions;
this.metadataProvider = metadataProvider;
- this.externalVars = externalVars;
+ this.externalVars = externalVars != null ? externalVars : Collections.emptyList();
this.isLogEnabled = LOGGER.isTraceEnabled();
logExpression("Starting AST rewrites on", "");
}
@@ -128,6 +130,9 @@
// Sets up parameters.
setup(declaredFunctions, topStatement, metadataProvider, context, externalVars);
+ // Resolves function calls
+ resolveFunctionCalls();
+
// Generates column names.
generateColumnNames();
@@ -154,7 +159,7 @@
variableCheckAndRewrite();
// Extracts SQL-92 aggregate functions from CASE/IF expressions into LET clauses
- rewriteCaseExpressions();
+ extractAggregatesFromCaseExpressions();
// Rewrites SQL-92 aggregate functions
rewriteGroupByAggregationSugar();
@@ -165,19 +170,27 @@
// Rewrites like/not-like expressions.
rewriteOperatorExpression();
+ // Normalizes CASE expressions and rewrites simple ones into switch-case()
+ rewriteCaseExpressions();
+
// Rewrites several variable-arg functions into their corresponding internal list-input functions.
rewriteListInputFunctions();
// Inlines functions.
inlineDeclaredUdfs(inlineUdfs);
- // Rewrites function names.
- // This should be done after inlineDeclaredUdfs() because user-defined function
- // names could be case sensitive.
- rewriteFunctionNames();
+ // Rewrites SQL++ core aggregate function names into internal names
+ rewriteSpecialFunctionNames();
// Inlines WITH expressions after variableCheckAndRewrite(...) so that the variable scoping for WITH
// expression is correct.
+ //
+ // Must run after rewriteSpecialFunctionNames() because it needs to have FunctionInfo
+ // for all functions to avoid inlining non-deterministic expressions.
+ // (CallExprs with special function names do not have FunctionInfo)
+ //
+ // Must run after inlineDeclaredUdfs() because we only maintain deterministic modifiers for built-in
+ // and external UDFs, therefore need to inline SQL++ UDFs to check the deterministic property.
inlineWithExpressions();
// Sets the var counter of the query.
@@ -185,7 +198,7 @@
}
protected void rewriteGroupByAggregationSugar() throws CompilationException {
- SqlppGroupByAggregationSugarVisitor visitor = new SqlppGroupByAggregationSugarVisitor(context);
+ SqlppGroupByAggregationSugarVisitor visitor = new SqlppGroupByAggregationSugarVisitor(context, externalVars);
rewriteTopExpr(visitor, null);
}
@@ -194,9 +207,15 @@
rewriteTopExpr(listInputFunctionVisitor, null);
}
- protected void rewriteFunctionNames() throws CompilationException {
- SqlppBuiltinFunctionRewriteVisitor functionNameMapVisitor = new SqlppBuiltinFunctionRewriteVisitor();
- rewriteTopExpr(functionNameMapVisitor, null);
+ protected void resolveFunctionCalls() throws CompilationException {
+ SqlppFunctionCallResolverVisitor visitor =
+ new SqlppFunctionCallResolverVisitor(metadataProvider, declaredFunctions);
+ rewriteTopExpr(visitor, null);
+ }
+
+ protected void rewriteSpecialFunctionNames() throws CompilationException {
+ SqlppSpecialFunctionNameRewriteVisitor visitor = new SqlppSpecialFunctionNameRewriteVisitor();
+ rewriteTopExpr(visitor, null);
}
protected void inlineWithExpressions() throws CompilationException {
@@ -267,8 +286,14 @@
rewriteTopExpr(windowVisitor, null);
}
+ protected void extractAggregatesFromCaseExpressions() throws CompilationException {
+ SqlppCaseAggregateExtractionVisitor visitor = new SqlppCaseAggregateExtractionVisitor(context);
+ rewriteTopExpr(visitor, null);
+ }
+
protected void rewriteCaseExpressions() throws CompilationException {
- SqlppCaseRewriteVisitor visitor = new SqlppCaseRewriteVisitor(context);
+ // Normalizes CASE expressions and rewrites simple ones into switch-case()
+ SqlppCaseExpressionVisitor visitor = new SqlppCaseExpressionVisitor();
rewriteTopExpr(visitor, null);
}
@@ -280,16 +305,14 @@
List<FunctionDecl> usedStoredFunctionDecls = new ArrayList<>();
for (Expression topLevelExpr : topExpr.getDirectlyEnclosedExpressions()) {
- usedStoredFunctionDecls
- .addAll(FunctionUtil.retrieveUsedStoredFunctions(metadataProvider, topLevelExpr, funIds, null,
- expr -> getFunctionCalls(expr), functionParser, (signature, sourceLoc) -> FunctionMapUtil
- .normalizeBuiltinFunctionSignature(signature, false, sourceLoc)));
+ usedStoredFunctionDecls.addAll(FunctionUtil.retrieveUsedStoredFunctions(metadataProvider, topLevelExpr,
+ funIds, null, this::getFunctionCalls, functionParser, metadataProvider.getDefaultDataverseName()));
}
declaredFunctions.addAll(usedStoredFunctionDecls);
if (inlineUdfs && !declaredFunctions.isEmpty()) {
- SqlppInlineUdfsVisitor visitor = new SqlppInlineUdfsVisitor(context,
- new SqlppFunctionBodyRewriterFactory(
- parserFactory) /* the rewriter for function bodies expressions*/,
+ SqlppFunctionBodyRewriterFactory functionBodyRewriterFactory =
+ new SqlppFunctionBodyRewriterFactory(parserFactory);
+ SqlppInlineUdfsVisitor visitor = new SqlppInlineUdfsVisitor(context, functionBodyRewriterFactory,
declaredFunctions, metadataProvider);
while (rewriteTopExpr(visitor, declaredFunctions)) {
// loop until no more changes
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/OperatorExpressionVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/OperatorExpressionVisitor.java
index 6d07a7b..c47634e 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/OperatorExpressionVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/OperatorExpressionVisitor.java
@@ -103,6 +103,7 @@
comparison.addOperand(itemExpr);
comparison.addOperand(bindingVar);
comparison.setCurrentop(true);
+ comparison.addHints(operatorExpr.getHints());
comparison.setSourceLocation(operatorExpr.getSourceLocation());
if (opType == OperatorType.IN) {
comparison.addOperator(OperatorType.EQ);
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SetOperationVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SetOperationVisitor.java
index fe86cfc..da8b5f2 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SetOperationVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SetOperationVisitor.java
@@ -21,6 +21,7 @@
import java.util.ArrayList;
import java.util.Collections;
+import java.util.function.BiFunction;
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.lang.common.base.Expression;
@@ -87,7 +88,7 @@
// Wraps the set operation part with a subquery.
SelectExpression nestedSelectExpression = new SelectExpression(null, selectSetOperation, null, null, true);
nestedSelectExpression.setSourceLocation(sourceLoc);
- SelectBlock selectBlock = createSelectBlock(nestedSelectExpression, context);
+ SelectBlock selectBlock = createSelectBlock(nestedSelectExpression, false, null, null, context);
SelectSetOperation newSelectSetOperation =
new SelectSetOperation(new SetOperationInput(selectBlock, null), null);
newSelectSetOperation.setSourceLocation(sourceLoc);
@@ -98,7 +99,9 @@
return super.visit(newSelectExpression, arg);
}
- static SelectBlock createSelectBlock(Expression inputExpr, LangRewritingContext context) {
+ static <P> SelectBlock createSelectBlock(Expression inputExpr, boolean distinct,
+ BiFunction<? super VariableExpr, P, Expression> valueExprTransformer, P valueExprTransformerArg,
+ LangRewritingContext context) {
SourceLocation sourceLoc = inputExpr.getSourceLocation();
VariableExpr newBindingVar = new VariableExpr(context.newVariable()); // Binding variable for the subquery.
newBindingVar.setSourceLocation(sourceLoc);
@@ -106,7 +109,9 @@
newFromTerm.setSourceLocation(sourceLoc);
FromClause newFromClause = new FromClause(new ArrayList<>(Collections.singletonList(newFromTerm)));
newFromClause.setSourceLocation(sourceLoc);
- SelectClause selectClause = new SelectClause(new SelectElement(newBindingVar), null, false);
+ Expression valueExpr = valueExprTransformer != null
+ ? valueExprTransformer.apply(newBindingVar, valueExprTransformerArg) : newBindingVar;
+ SelectClause selectClause = new SelectClause(new SelectElement(valueExpr), null, distinct);
selectClause.setSourceLocation(sourceLoc);
SelectBlock selectBlock = new SelectBlock(selectClause, newFromClause, null, null, null);
selectBlock.setSourceLocation(sourceLoc);
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppBuiltinFunctionRewriteVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppBuiltinFunctionRewriteVisitor.java
deleted file mode 100644
index 82284f3..0000000
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppBuiltinFunctionRewriteVisitor.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.lang.sqlpp.rewrites.visitor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.asterix.common.exceptions.CompilationException;
-import org.apache.asterix.common.functions.FunctionSignature;
-import org.apache.asterix.lang.common.base.Expression;
-import org.apache.asterix.lang.common.base.ILangExpression;
-import org.apache.asterix.lang.common.expression.CallExpr;
-import org.apache.asterix.lang.common.expression.LiteralExpr;
-import org.apache.asterix.lang.common.expression.OperatorExpr;
-import org.apache.asterix.lang.common.literal.TrueLiteral;
-import org.apache.asterix.lang.common.struct.OperatorType;
-import org.apache.asterix.lang.sqlpp.expression.CaseExpression;
-import org.apache.asterix.lang.sqlpp.expression.WindowExpression;
-import org.apache.asterix.lang.sqlpp.util.FunctionMapUtil;
-import org.apache.asterix.lang.sqlpp.util.SqlppRewriteUtil;
-import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor;
-import org.apache.asterix.om.functions.BuiltinFunctions;
-
-public class SqlppBuiltinFunctionRewriteVisitor extends AbstractSqlppSimpleExpressionVisitor {
-
- @Override
- public Expression visit(CallExpr callExpr, ILangExpression arg) throws CompilationException {
- //TODO(buyingyi): rewrite SQL temporal functions
- callExpr.setFunctionSignature(FunctionMapUtil.normalizeBuiltinFunctionSignature(callExpr.getFunctionSignature(),
- true, callExpr.getSourceLocation()));
- return super.visit(callExpr, arg);
- }
-
- @Override
- public Expression visit(WindowExpression winExpr, ILangExpression arg) throws CompilationException {
- winExpr.setFunctionSignature(FunctionMapUtil.normalizeBuiltinFunctionSignature(winExpr.getFunctionSignature(),
- true, winExpr.getSourceLocation()));
- return super.visit(winExpr, arg);
- }
-
- @Override
- public Expression visit(CaseExpression caseExpr, ILangExpression arg) throws CompilationException {
- Expression expr = super.visit(caseExpr, arg); // Visits it as usual first.
- if (expr != caseExpr) {
- return expr.accept(this, arg);
- }
- CaseExpression newCaseExpr = normalizeCaseExpr(caseExpr);
- if (SqlppRewriteUtil.constainsSubquery(newCaseExpr)) {
- // If the CASE expression contains a subquery, we do not rewrite it to a switch-case function call.
- return newCaseExpr;
- }
- // If the CASE expression does not contain a subquery, we rewrite it to a switch-case function call.
- FunctionSignature functionSignature = new FunctionSignature(BuiltinFunctions.SWITCH_CASE);
- List<Expression> whenExprList = newCaseExpr.getWhenExprs();
- List<Expression> thenExprList = newCaseExpr.getThenExprs();
- List<Expression> newExprList = new ArrayList<>();
- newExprList.add(newCaseExpr.getConditionExpr());
- for (int index = 0; index < whenExprList.size(); ++index) {
- newExprList.add(whenExprList.get(index));
- newExprList.add(thenExprList.get(index));
- }
- newExprList.add(newCaseExpr.getElseExpr());
- CallExpr callExpr = new CallExpr(functionSignature, newExprList);
- callExpr.setSourceLocation(caseExpr.getSourceLocation());
- return callExpr;
- }
-
- // Normalizes WHEN expressions so that it can have correct NULL/MISSING semantics as well
- // as type promotion semantics.
- private CaseExpression normalizeCaseExpr(CaseExpression caseExpr) throws CompilationException {
- LiteralExpr trueLiteral = new LiteralExpr(TrueLiteral.INSTANCE);
- trueLiteral.setSourceLocation(caseExpr.getSourceLocation());
- Expression conditionExpr = caseExpr.getConditionExpr();
- if (trueLiteral.equals(conditionExpr)) {
- return caseExpr;
- }
- List<Expression> normalizedWhenExprs = new ArrayList<>();
- for (Expression expr : caseExpr.getWhenExprs()) {
- OperatorExpr operatorExpr = new OperatorExpr();
- operatorExpr.addOperand((Expression) SqlppRewriteUtil.deepCopy(expr));
- operatorExpr.addOperand(caseExpr.getConditionExpr());
- operatorExpr.addOperator(OperatorType.EQ);
- operatorExpr.setSourceLocation(expr.getSourceLocation());
- normalizedWhenExprs.add(operatorExpr);
- }
- CaseExpression newCaseExpr =
- new CaseExpression(trueLiteral, normalizedWhenExprs, caseExpr.getThenExprs(), caseExpr.getElseExpr());
- newCaseExpr.setSourceLocation(caseExpr.getSourceLocation());
- return newCaseExpr;
- }
-
-}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCaseAggregateExtractionVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCaseAggregateExtractionVisitor.java
new file mode 100644
index 0000000..4204880
--- /dev/null
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCaseAggregateExtractionVisitor.java
@@ -0,0 +1,108 @@
+/*
+ * 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.lang.sqlpp.rewrites.visitor;
+
+import java.util.List;
+
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.lang.common.base.AbstractClause;
+import org.apache.asterix.lang.common.base.Expression;
+import org.apache.asterix.lang.common.base.ILangExpression;
+import org.apache.asterix.lang.common.clause.GroupbyClause;
+import org.apache.asterix.lang.common.expression.CallExpr;
+import org.apache.asterix.lang.common.expression.IfExpr;
+import org.apache.asterix.lang.common.expression.VariableExpr;
+import org.apache.asterix.lang.common.rewrites.LangRewritingContext;
+import org.apache.asterix.lang.common.struct.VarIdentifier;
+import org.apache.asterix.lang.sqlpp.clause.FromClause;
+import org.apache.asterix.lang.sqlpp.expression.CaseExpression;
+import org.apache.asterix.lang.sqlpp.expression.SelectExpression;
+import org.apache.asterix.lang.sqlpp.util.FunctionMapUtil;
+import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor;
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+
+/**
+ * Extracts SQL-92 aggregate functions from CASE/IF expressions into LET clauses,
+ * so they can be pushed into GROUPBY subplans by the optimizer.
+ */
+public final class SqlppCaseAggregateExtractionVisitor extends AbstractSqlppExpressionExtractionVisitor {
+
+ public SqlppCaseAggregateExtractionVisitor(LangRewritingContext context) {
+ super(context);
+ }
+
+ @Override
+ protected void visitLetWhereClauses(List<AbstractClause> letWhereList, ILangExpression arg,
+ List<Pair<Expression, VarIdentifier>> extractionList) {
+ // do not perform the extraction
+ }
+
+ @Override
+ protected void visitGroupByClause(GroupbyClause groupbyClause, ILangExpression arg,
+ List<Pair<Expression, VarIdentifier>> extractionList, List<AbstractClause> letWhereList) {
+ // do not perform the extraction
+ }
+
+ @Override
+ public Expression visit(CaseExpression caseExpr, ILangExpression arg) throws CompilationException {
+ Expression resultExpr = super.visit(caseExpr, arg);
+ resultExpr.accept(new Sql92AggregateExtractionVisitor(), arg);
+ return resultExpr;
+ }
+
+ @Override
+ public Expression visit(IfExpr ifExpr, ILangExpression arg) throws CompilationException {
+ Expression resultExpr = super.visit(ifExpr, arg);
+ resultExpr.accept(new Sql92AggregateExtractionVisitor(), arg);
+ return resultExpr;
+ }
+
+ @Override
+ void handleUnsupportedClause(FromClause clause) throws CompilationException {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_USE_OF_IDENTIFIER, clause.getSourceLocation(),
+ BuiltinFunctions.SWITCH_CASE.getName());
+ }
+
+ private final class Sql92AggregateExtractionVisitor extends AbstractSqlppSimpleExpressionVisitor {
+
+ @Override
+ public Expression visit(CallExpr callExpr, ILangExpression arg) throws CompilationException {
+ CallExpr resultExpr = (CallExpr) super.visit(callExpr, arg);
+ if (FunctionMapUtil.isSql92AggregateFunction(resultExpr.getFunctionSignature())) {
+ StackElement stackElement = stack.peek();
+ if (stackElement != null && stackElement.getSelectBlock().hasGroupbyClause()) {
+ VarIdentifier v = stackElement.addPendingLetClause(resultExpr);
+ VariableExpr vExpr = new VariableExpr(v);
+ vExpr.setSourceLocation(callExpr.getSourceLocation());
+ return vExpr;
+ }
+ }
+ return resultExpr;
+ }
+
+ @Override
+ public Expression visit(SelectExpression selectExpression, ILangExpression arg) {
+ // don't visit sub-queries
+ return selectExpression;
+ }
+ }
+}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCaseExpressionVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCaseExpressionVisitor.java
new file mode 100644
index 0000000..59996df
--- /dev/null
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCaseExpressionVisitor.java
@@ -0,0 +1,103 @@
+/*
+ * 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.lang.sqlpp.rewrites.visitor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.lang.common.base.Expression;
+import org.apache.asterix.lang.common.base.ILangExpression;
+import org.apache.asterix.lang.common.expression.CallExpr;
+import org.apache.asterix.lang.common.expression.LiteralExpr;
+import org.apache.asterix.lang.common.expression.OperatorExpr;
+import org.apache.asterix.lang.common.literal.TrueLiteral;
+import org.apache.asterix.lang.common.struct.OperatorType;
+import org.apache.asterix.lang.sqlpp.expression.CaseExpression;
+import org.apache.asterix.lang.sqlpp.util.SqlppRewriteUtil;
+import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor;
+import org.apache.asterix.om.functions.BuiltinFunctions;
+
+/**
+ * CASE expression rewritings:
+ * <ul>
+ * <li>
+ * Normalize WHEN expressions so that it can have correct NULL/MISSING semantics as well
+ * as type promotion semantics.
+ * </li>
+ * <li>
+ * If the CASE expression does not contain a subquery then rewrite it to a switch-case function call.
+ * </li>
+ * </ul>
+ */
+public final class SqlppCaseExpressionVisitor extends AbstractSqlppSimpleExpressionVisitor {
+
+ @Override
+ public Expression visit(CaseExpression caseExpr, ILangExpression arg) throws CompilationException {
+ Expression expr = super.visit(caseExpr, arg); // Visits it as usual first.
+ if (expr != caseExpr) {
+ return expr.accept(this, arg);
+ }
+ CaseExpression newCaseExpr = normalizeCaseExpr(caseExpr);
+ if (SqlppRewriteUtil.constainsSubquery(newCaseExpr)) {
+ // If the CASE expression contains a subquery, we do not rewrite it to a switch-case function call.
+ return newCaseExpr;
+ }
+ // If the CASE expression does not contain a subquery, we rewrite it to a switch-case function call.
+ FunctionSignature functionSignature = new FunctionSignature(BuiltinFunctions.SWITCH_CASE);
+ List<Expression> whenExprList = newCaseExpr.getWhenExprs();
+ List<Expression> thenExprList = newCaseExpr.getThenExprs();
+ List<Expression> newExprList = new ArrayList<>();
+ newExprList.add(newCaseExpr.getConditionExpr());
+ for (int index = 0; index < whenExprList.size(); ++index) {
+ newExprList.add(whenExprList.get(index));
+ newExprList.add(thenExprList.get(index));
+ }
+ newExprList.add(newCaseExpr.getElseExpr());
+ CallExpr callExpr = new CallExpr(functionSignature, newExprList);
+ callExpr.setSourceLocation(caseExpr.getSourceLocation());
+ return callExpr;
+ }
+
+ // Normalizes WHEN expressions so that it can have correct NULL/MISSING semantics as well
+ // as type promotion semantics.
+ private CaseExpression normalizeCaseExpr(CaseExpression caseExpr) throws CompilationException {
+ Expression conditionExpr = caseExpr.getConditionExpr();
+ if (conditionExpr.getKind() == Expression.Kind.LITERAL_EXPRESSION
+ && ((LiteralExpr) conditionExpr).getValue().equals(TrueLiteral.INSTANCE)) {
+ return caseExpr;
+ }
+ List<Expression> normalizedWhenExprs = new ArrayList<>();
+ for (Expression expr : caseExpr.getWhenExprs()) {
+ OperatorExpr operatorExpr = new OperatorExpr();
+ operatorExpr.addOperand((Expression) SqlppRewriteUtil.deepCopy(expr));
+ operatorExpr.addOperand(caseExpr.getConditionExpr());
+ operatorExpr.addOperator(OperatorType.EQ);
+ operatorExpr.setSourceLocation(expr.getSourceLocation());
+ normalizedWhenExprs.add(operatorExpr);
+ }
+ LiteralExpr trueLiteral = new LiteralExpr(TrueLiteral.INSTANCE);
+ trueLiteral.setSourceLocation(caseExpr.getSourceLocation());
+ CaseExpression newCaseExpr =
+ new CaseExpression(trueLiteral, normalizedWhenExprs, caseExpr.getThenExprs(), caseExpr.getElseExpr());
+ newCaseExpr.setSourceLocation(caseExpr.getSourceLocation());
+ return newCaseExpr;
+ }
+}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCaseRewriteVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCaseRewriteVisitor.java
deleted file mode 100644
index cfe41ed..0000000
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppCaseRewriteVisitor.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.lang.sqlpp.rewrites.visitor;
-
-import java.util.List;
-
-import org.apache.asterix.common.exceptions.CompilationException;
-import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.lang.common.base.AbstractClause;
-import org.apache.asterix.lang.common.base.Expression;
-import org.apache.asterix.lang.common.base.ILangExpression;
-import org.apache.asterix.lang.common.clause.GroupbyClause;
-import org.apache.asterix.lang.common.expression.CallExpr;
-import org.apache.asterix.lang.common.expression.IfExpr;
-import org.apache.asterix.lang.common.expression.VariableExpr;
-import org.apache.asterix.lang.common.rewrites.LangRewritingContext;
-import org.apache.asterix.lang.common.struct.VarIdentifier;
-import org.apache.asterix.lang.sqlpp.clause.FromClause;
-import org.apache.asterix.lang.sqlpp.expression.CaseExpression;
-import org.apache.asterix.lang.sqlpp.expression.SelectExpression;
-import org.apache.asterix.lang.sqlpp.util.FunctionMapUtil;
-import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor;
-import org.apache.asterix.om.functions.BuiltinFunctions;
-import org.apache.hyracks.algebricks.common.utils.Pair;
-
-/**
- * Extracts SQL-92 aggregate functions from CASE/IF expressions into LET clauses,
- * so they can be pushed into GROUPBY subplans by the optimizer.
- */
-public final class SqlppCaseRewriteVisitor extends AbstractSqlppExpressionExtractionVisitor {
-
- public SqlppCaseRewriteVisitor(LangRewritingContext context) {
- super(context);
- }
-
- @Override
- protected void visitLetWhereClauses(List<AbstractClause> letWhereList, ILangExpression arg,
- List<Pair<Expression, VarIdentifier>> extractionList) {
- // do not perform the extraction
- }
-
- @Override
- protected void visitGroupByClause(GroupbyClause groupbyClause, ILangExpression arg,
- List<Pair<Expression, VarIdentifier>> extractionList, List<AbstractClause> letWhereList) {
- // do not perform the extraction
- }
-
- @Override
- public Expression visit(CaseExpression caseExpr, ILangExpression arg) throws CompilationException {
- Expression resultExpr = super.visit(caseExpr, arg);
- resultExpr.accept(new Sql92AggregateExtractionVisitor(), arg);
- return resultExpr;
- }
-
- @Override
- public Expression visit(IfExpr ifExpr, ILangExpression arg) throws CompilationException {
- Expression resultExpr = super.visit(ifExpr, arg);
- resultExpr.accept(new Sql92AggregateExtractionVisitor(), arg);
- return resultExpr;
- }
-
- @Override
- void handleUnsupportedClause(FromClause clause) throws CompilationException {
- throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_USE_OF_IDENTIFIER, clause.getSourceLocation(),
- BuiltinFunctions.SWITCH_CASE.getName());
- }
-
- private final class Sql92AggregateExtractionVisitor extends AbstractSqlppSimpleExpressionVisitor {
-
- @Override
- public Expression visit(CallExpr callExpr, ILangExpression arg) throws CompilationException {
- CallExpr resultExpr = (CallExpr) super.visit(callExpr, arg);
- if (FunctionMapUtil.isSql92AggregateFunction(resultExpr.getFunctionSignature())) {
- StackElement stackElement = stack.peek();
- if (stackElement != null && stackElement.getSelectBlock().hasGroupbyClause()) {
- VarIdentifier v = stackElement.addPendingLetClause(resultExpr);
- VariableExpr vExpr = new VariableExpr(v);
- vExpr.setSourceLocation(callExpr.getSourceLocation());
- return vExpr;
- }
- }
- return resultExpr;
- }
-
- @Override
- public Expression visit(SelectExpression selectExpression, ILangExpression arg) {
- // don't visit sub-queries
- return selectExpression;
- }
- }
-}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppFunctionCallResolverVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppFunctionCallResolverVisitor.java
new file mode 100644
index 0000000..ce2ff2b
--- /dev/null
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppFunctionCallResolverVisitor.java
@@ -0,0 +1,88 @@
+/*
+ * 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.lang.sqlpp.rewrites.visitor;
+
+import java.util.List;
+import java.util.Set;
+import java.util.function.BiFunction;
+
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.functions.FunctionConstants;
+import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.lang.common.base.Expression;
+import org.apache.asterix.lang.common.base.ILangExpression;
+import org.apache.asterix.lang.common.expression.CallExpr;
+import org.apache.asterix.lang.common.statement.FunctionDecl;
+import org.apache.asterix.lang.common.util.FunctionUtil;
+import org.apache.asterix.lang.sqlpp.expression.WindowExpression;
+import org.apache.asterix.lang.sqlpp.util.FunctionMapUtil;
+import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor;
+import org.apache.asterix.metadata.declared.MetadataProvider;
+import org.apache.asterix.om.functions.BuiltinFunctions;
+
+public final class SqlppFunctionCallResolverVisitor extends AbstractSqlppSimpleExpressionVisitor {
+
+ private final MetadataProvider metadataProvider;
+
+ private final Set<FunctionSignature> declaredFunctions;
+
+ private final BiFunction<String, Integer, FunctionSignature> builtinFunctionResolver;
+
+ private final BiFunction<String, Integer, FunctionSignature> callExprResolver;
+
+ public SqlppFunctionCallResolverVisitor(MetadataProvider metadataProvider, List<FunctionDecl> declaredFunctions) {
+ this.metadataProvider = metadataProvider;
+ this.declaredFunctions = FunctionUtil.getFunctionSignatures(declaredFunctions);
+ this.builtinFunctionResolver = FunctionUtil.createBuiltinFunctionResolver(metadataProvider);
+ this.callExprResolver = this::resolveCallExpr;
+ }
+
+ @Override
+ public Expression visit(CallExpr callExpr, ILangExpression arg) throws CompilationException {
+ FunctionSignature fs = FunctionUtil.resolveFunctionCall(callExpr.getFunctionSignature(),
+ callExpr.getSourceLocation(), metadataProvider, declaredFunctions, callExprResolver);
+ callExpr.setFunctionSignature(fs);
+ return super.visit(callExpr, arg);
+ }
+
+ @Override
+ public Expression visit(WindowExpression winExpr, ILangExpression arg) throws CompilationException {
+ FunctionSignature fs = FunctionUtil.resolveFunctionCall(winExpr.getFunctionSignature(),
+ winExpr.getSourceLocation(), metadataProvider, declaredFunctions, callExprResolver);
+ winExpr.setFunctionSignature(fs);
+ return super.visit(winExpr, arg);
+ }
+
+ private FunctionSignature resolveCallExpr(String name, int arity) {
+ FunctionSignature fs = builtinFunctionResolver.apply(name, arity);
+ if (fs != null) {
+ return fs;
+ }
+ fs = new FunctionSignature(FunctionConstants.ASTERIX_DV, name, arity);
+ return isAggregateFunction(fs) || isWindowFunction(fs) ? fs : null;
+ }
+
+ private static boolean isAggregateFunction(FunctionSignature fs) {
+ return FunctionMapUtil.isSql92AggregateFunction(fs) || FunctionMapUtil.isCoreAggregateFunction(fs);
+ }
+
+ private static boolean isWindowFunction(FunctionSignature fs) {
+ return BuiltinFunctions.getWindowFunction(fs.createFunctionIdentifier()) != null;
+ }
+}
\ No newline at end of file
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByAggregationSugarVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByAggregationSugarVisitor.java
index baf3f46..f4c8085 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByAggregationSugarVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupByAggregationSugarVisitor.java
@@ -40,6 +40,7 @@
import org.apache.asterix.lang.common.expression.VariableExpr;
import org.apache.asterix.lang.common.rewrites.LangRewritingContext;
import org.apache.asterix.lang.common.struct.Identifier;
+import org.apache.asterix.lang.common.struct.VarIdentifier;
import org.apache.asterix.lang.sqlpp.clause.FromClause;
import org.apache.asterix.lang.sqlpp.clause.SelectBlock;
import org.apache.asterix.lang.sqlpp.clause.SelectClause;
@@ -81,8 +82,11 @@
*/
public class SqlppGroupByAggregationSugarVisitor extends AbstractSqlppExpressionScopingVisitor {
- public SqlppGroupByAggregationSugarVisitor(LangRewritingContext context) {
+ private final Collection<VarIdentifier> externalVars;
+
+ public SqlppGroupByAggregationSugarVisitor(LangRewritingContext context, Collection<VarIdentifier> externalVars) {
super(context);
+ this.externalVars = externalVars;
}
@Override
@@ -177,7 +181,7 @@
// Gets the final free variables.
freeVariables.addAll(freeVariablesInGbyLets);
- freeVariables.removeIf(SqlppVariableUtil::isExternalVariableReference);
+ removeExternalVariables(freeVariables);
if (!groupbyClause.isGroupAll()) {
// Gets outer scope variables.
@@ -213,6 +217,12 @@
return null;
}
+ private void removeExternalVariables(Collection<VariableExpr> freeVariables) {
+ if (!externalVars.isEmpty()) {
+ freeVariables.removeIf(ve -> externalVars.contains(ve.getVar()));
+ }
+ }
+
static Map<VariableExpr, Identifier> createGroupVarFieldMap(List<Pair<Expression, Identifier>> fieldList) {
Map<VariableExpr, Identifier> fieldVars = new HashMap<>();
for (Pair<Expression, Identifier> p : fieldList) {
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupingSetsVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupingSetsVisitor.java
index a6892c1..c474ee3 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupingSetsVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppGroupingSetsVisitor.java
@@ -22,12 +22,16 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.lang.common.base.Clause;
import org.apache.asterix.lang.common.base.Expression;
import org.apache.asterix.lang.common.base.ILangExpression;
@@ -39,24 +43,32 @@
import org.apache.asterix.lang.common.expression.VariableExpr;
import org.apache.asterix.lang.common.literal.LongIntegerLiteral;
import org.apache.asterix.lang.common.literal.NullLiteral;
+import org.apache.asterix.lang.common.literal.StringLiteral;
import org.apache.asterix.lang.common.rewrites.LangRewritingContext;
+import org.apache.asterix.lang.sqlpp.clause.Projection;
import org.apache.asterix.lang.sqlpp.clause.SelectBlock;
+import org.apache.asterix.lang.sqlpp.clause.SelectClause;
+import org.apache.asterix.lang.sqlpp.clause.SelectElement;
+import org.apache.asterix.lang.sqlpp.clause.SelectRegular;
import org.apache.asterix.lang.sqlpp.clause.SelectSetOperation;
import org.apache.asterix.lang.sqlpp.expression.SelectExpression;
import org.apache.asterix.lang.sqlpp.optype.SetOpType;
import org.apache.asterix.lang.sqlpp.struct.SetOperationInput;
import org.apache.asterix.lang.sqlpp.struct.SetOperationRight;
import org.apache.asterix.lang.sqlpp.util.SqlppRewriteUtil;
-import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor;
+import org.apache.asterix.lang.sqlpp.util.SqlppVariableUtil;
+import org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor;
+import org.apache.asterix.lang.sqlpp.visitor.SqlppSubstituteExpressionVisitor;
+import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppExpressionScopingVisitor;
import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.hyracks.algebricks.common.utils.ListSet;
+import org.apache.hyracks.algebricks.common.utils.Pair;
/**
* Rewrites GROUP BY clauses with multiple grouping sets into UNION ALL.
* Also rewrites valid GROUPING(...) operations into constants.
*/
-public final class SqlppGroupingSetsVisitor extends AbstractSqlppSimpleExpressionVisitor {
-
- private final LangRewritingContext context;
+public final class SqlppGroupingSetsVisitor extends AbstractSqlppExpressionScopingVisitor {
private final List<List<GbyVariableExpressionPair>> tmpGroupingSets = new ArrayList<>(1);
@@ -67,7 +79,7 @@
private final Set<VariableExpr> tmpCurrentGroupingSetVars = new LinkedHashSet<>();
public SqlppGroupingSetsVisitor(LangRewritingContext context) {
- this.context = context;
+ super(context);
}
@Override
@@ -76,15 +88,30 @@
SetOperationInput setOpInputLeft = setOp.getLeftInput();
SelectBlock selectBlockLeft = setOpInputLeft.getSelectBlock();
+
if (selectBlockLeft != null && selectBlockLeft.hasGroupbyClause()) {
- setOpInputLeft.setSelectBlock(rewriteSelectBlock(selectBlockLeft));
+ SelectExpression selectExpression = (SelectExpression) arg;
+ boolean hasPostSetOpClauses = selectExpression.hasOrderby() || selectExpression.hasLimit();
+ Map<VariableExpr, String> extraProjections = Collections.emptyMap();
+ if (hasPostSetOpClauses && !setOp.hasRightInputs() && isMultiGroupingSets(selectBlockLeft)) {
+ // We need to make sure that ORDER BY/LIMIT free vars are still available after UNION ALL rewriting.
+ // To do that we expose these variables by adding them to SELECT so they can be used after UNION ALL.
+ // Then we rewrite ORDERBY/LIMIT to replace these free vars with field accessors on top of SELECT.
+ // Then we remove these extra projections from the final output.
+ extraProjections = rewritePostSetOpClauses(selectExpression, selectBlockLeft);
+ }
+
+ SelectBlock newSelectBlockLeft = rewriteSelectBlock(selectBlockLeft, extraProjections);
+ setOpInputLeft.setSelectBlock(newSelectBlockLeft);
}
+
if (setOp.hasRightInputs()) {
for (SetOperationRight setOpRight : setOp.getRightInputs()) {
SetOperationInput setOpInputRight = setOpRight.getSetOperationRightInput();
SelectBlock selectBlockRight = setOpInputRight.getSelectBlock();
if (selectBlockRight != null && selectBlockRight.hasGroupbyClause()) {
- setOpInputRight.setSelectBlock(rewriteSelectBlock(selectBlockRight));
+ SelectBlock newSelectBlockRight = rewriteSelectBlock(selectBlockRight, Collections.emptyMap());
+ setOpInputRight.setSelectBlock(newSelectBlockRight);
}
}
}
@@ -92,13 +119,170 @@
return null;
}
- private SelectBlock rewriteSelectBlock(SelectBlock selectBlock) throws CompilationException {
- return selectBlock.getGroupbyClause().getGbyPairList().size() <= 1 ? rewriteZeroOrOneGroupingSet(selectBlock)
- : rewriteMultipleGroupingSets(selectBlock);
+ private Map<VariableExpr, String> rewritePostSetOpClauses(SelectExpression selectExpression,
+ SelectBlock selectBlockLeft) throws CompilationException {
+ // 1. Get free variables in ORDERBY/LIMIT
+ Set<VariableExpr> freeVarsPostSetOp = getFreeVarsPostSetOp(selectExpression);
+ if (freeVarsPostSetOp.isEmpty()) {
+ return Collections.emptyMap();
+ }
+
+ // 2. Compute substitution map for ORDERBY/LIMIT to replace free vars with field accessors
+ Pair<Map<VariableExpr, VariableExpr>, Map<VariableExpr, String>> p =
+ computePostSetOpSubstMap(selectBlockLeft, freeVarsPostSetOp);
+ Map<VariableExpr, VariableExpr> freeVarsPostSetOpSubstMap = p.first;
+ Map<VariableExpr, String> extraProjections = p.second;
+
+ // 3. Rewrite ORDERBY/LIMIT using this substitution
+ SqlppSubstituteExpressionVisitor substVisitor =
+ new SqlppSubstituteExpressionVisitor(context, freeVarsPostSetOpSubstMap);
+ if (selectExpression.hasOrderby()) {
+ selectExpression.getOrderbyClause().accept(substVisitor, selectExpression);
+ }
+ if (selectExpression.hasLimit()) {
+ selectExpression.getLimitClause().accept(substVisitor, selectExpression);
+ }
+
+ // 4. return extra projections that should be added to SELECT
+ return extraProjections;
+ }
+
+ private Pair<Map<VariableExpr, VariableExpr>, Map<VariableExpr, String>> computePostSetOpSubstMap(
+ SelectBlock selectBlockLeft, Set<VariableExpr> freeVarsPostSetOp) throws CompilationException {
+ SelectClause selectClause = selectBlockLeft.getSelectClause();
+ if (selectClause.selectRegular()) {
+ return computePostSetOpSubstMapForSelectRegular(freeVarsPostSetOp, selectBlockLeft);
+ } else if (selectClause.selectElement()) {
+ return computePostSetOpSubstMapForSelectElement(freeVarsPostSetOp);
+ } else {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, selectBlockLeft.getSourceLocation(),
+ "");
+ }
+ }
+
+ private Pair<Map<VariableExpr, VariableExpr>, Map<VariableExpr, String>> computePostSetOpSubstMapForSelectRegular(
+ Set<VariableExpr> freeVarsPostSetOp, SelectBlock selectBlock) throws CompilationException {
+ // For regular SELECT we need to add ORDERBY/LIMIT free variables to the projection list of the SELECT clause,
+ // so they can be accessed using field-access-by-name after SELECT.
+ // Some of these variables might be already projected by SELECT, so we need to account for that.
+ // We currently do not support (fail) SELECT v.* because in this case we cannot statically compute
+ // the schema of the record produced by the SELECT and therefore cannot guarantee that the field
+ // names we generate will not conflict with the existing fields in the SELECT output.
+ // The added projections will be later removed by the outer query.
+
+ Map<VariableExpr, String> extraProjections = Collections.emptyMap();
+ Map<VariableExpr, VariableExpr> freeVarsPostSetOpSubstMap = new HashMap<>();
+
+ List<Projection> projectionList = selectBlock.getSelectClause().getSelectRegular().getProjections();
+ List<VariableExpr> gbyBindingVars = null, postGbyBindingVars = null;
+ for (VariableExpr freeVarPostSetOp : freeVarsPostSetOp) {
+ String projectionName = null;
+ for (int i = projectionList.size() - 1; i >= 0; i--) {
+ Projection projection = projectionList.get(i);
+ if (projection.varStar()) {
+ throw new CompilationException(ErrorCode.UNSUPPORTED_GBY_OBY_SELECT_COMBO,
+ selectBlock.getSourceLocation());
+ } else if (projection.star()) {
+ if (gbyBindingVars == null) {
+ gbyBindingVars = SqlppVariableUtil.getBindingVariables(selectBlock.getGroupbyClause());
+ }
+ if (postGbyBindingVars == null) {
+ postGbyBindingVars = selectBlock.hasLetHavingClausesAfterGroupby()
+ ? SqlppVariableUtil.getLetBindingVariables(selectBlock.getLetHavingListAfterGroupby())
+ : Collections.emptyList();
+ }
+ if (gbyBindingVars.contains(freeVarPostSetOp) || postGbyBindingVars.contains(freeVarPostSetOp)) {
+ projectionName = SqlppVariableUtil
+ .variableNameToDisplayedFieldName(freeVarPostSetOp.getVar().getValue());
+ break;
+ }
+ } else if (projection.hasName()) {
+ if (projection.getExpression().equals(freeVarPostSetOp)) {
+ projectionName = projection.getName();
+ break;
+ }
+ } else {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, selectBlock.getSourceLocation(),
+ "");
+ }
+ }
+
+ boolean newProjection = false;
+ if (projectionName == null) {
+ newProjection = true;
+ projectionName = generateProjectionName(projectionList);
+ }
+
+ VariableExpr substExpr = new VariableExpr(SqlppVariableUtil.toInternalVariableIdentifier(projectionName));
+ substExpr.setSourceLocation(freeVarPostSetOp.getSourceLocation());
+ freeVarsPostSetOpSubstMap.put(freeVarPostSetOp, substExpr);
+
+ if (newProjection) {
+ if (extraProjections.isEmpty()) {
+ extraProjections = new LinkedHashMap<>();
+ }
+ extraProjections.put(freeVarPostSetOp, projectionName);
+ }
+ }
+
+ return new Pair<>(freeVarsPostSetOpSubstMap, extraProjections);
+ }
+
+ private Pair<Map<VariableExpr, VariableExpr>, Map<VariableExpr, String>> computePostSetOpSubstMapForSelectElement(
+ Set<VariableExpr> freeVarsPostSetOp) {
+ // For SELECT VALUE we first need to convert it to the regular SELECT, so we can then
+ // add ORDERBY/LIMIT free variables to the projection list of this regular SELECT clause.
+ // They can be accessed using field-access-by-name after SELECT.
+ // SELECT VALUE to regular conversion will be reversed later.
+ Map<VariableExpr, VariableExpr> freeVarsPostSetOpSubstMap = new HashMap<>();
+ Map<VariableExpr, String> extraProjections = new LinkedHashMap<>();
+ for (VariableExpr freeVarPostSelect : freeVarsPostSetOp) {
+ String projectionName =
+ SqlppVariableUtil.variableNameToDisplayedFieldName(context.newVariable().getValue());
+ VariableExpr substExpr = new VariableExpr(SqlppVariableUtil.toInternalVariableIdentifier(projectionName));
+ substExpr.setSourceLocation(freeVarPostSelect.getSourceLocation());
+ freeVarsPostSetOpSubstMap.put(freeVarPostSelect, substExpr);
+ extraProjections.put(freeVarPostSelect, projectionName);
+ }
+
+ return new Pair<>(freeVarsPostSetOpSubstMap, extraProjections);
+ }
+
+ private Set<VariableExpr> getFreeVarsPostSetOp(SelectExpression selectExpression) throws CompilationException {
+ if (selectExpression.hasOrderby() || selectExpression.hasLimit()) {
+ Set<VariableExpr> freeVars = new ListSet<>();
+ FreeVariableVisitor freeVarsVisitor = new FreeVariableVisitor();
+ if (selectExpression.hasOrderby()) {
+ selectExpression.getOrderbyClause().accept(freeVarsVisitor, freeVars);
+ }
+ if (selectExpression.hasLimit()) {
+ selectExpression.getLimitClause().accept(freeVarsVisitor, freeVars);
+ }
+ return freeVars;
+ } else {
+ return Collections.emptySet();
+ }
+ }
+
+ private boolean isMultiGroupingSets(SelectBlock selectBlock) {
+ return selectBlock.getGroupbyClause().getGbyPairList().size() > 1;
+ }
+
+ private SelectBlock rewriteSelectBlock(SelectBlock selectBlock, Map<VariableExpr, String> extraProjections)
+ throws CompilationException {
+ if (isMultiGroupingSets(selectBlock)) {
+ return rewriteMultipleGroupingSets(selectBlock, extraProjections);
+ } else {
+ if (!extraProjections.isEmpty()) {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, selectBlock.getSourceLocation(),
+ extraProjections.toString());
+ }
+ return rewriteZeroOrOneGroupingSet(selectBlock);
+ }
}
private SelectBlock rewriteZeroOrOneGroupingSet(SelectBlock selectBlock) throws CompilationException {
- // no UNION ALL, we only need to rewrite GROUPING(..) operations
+ // no UNION ALL if there's only one grouping set (or zero), but we still need to rewrite GROUPING(..) operations
GroupbyClause gby = selectBlock.getGroupbyClause();
List<List<GbyVariableExpressionPair>> groupingSets = gby.getGbyPairList();
if (groupingSets.size() > 1) {
@@ -110,17 +294,29 @@
return selectBlock;
}
- private SelectBlock rewriteMultipleGroupingSets(SelectBlock selectBlock) throws CompilationException {
+ private SelectBlock rewriteMultipleGroupingSets(SelectBlock selectBlock, Map<VariableExpr, String> extraProjections)
+ throws CompilationException {
GroupbyClause gby = selectBlock.getGroupbyClause();
List<List<GbyVariableExpressionPair>> groupingSets = gby.getGbyPairList();
- if (groupingSets.size() <= 1 || !gby.getDecorPairList().isEmpty()) {
+ int nGroupingSets = groupingSets.size();
+ if (nGroupingSets <= 1 || !gby.getDecorPairList().isEmpty()) {
throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, gby.getSourceLocation(), "");
}
+ SelectClause selectClause = selectBlock.getSelectClause();
+ boolean distinct = selectClause.distinct();
+ boolean selectElement = selectClause.selectElement();
+ boolean selectElementConvertToRegular = selectElement && !extraProjections.isEmpty();
+
+ // If we're converting SELECT VALUE to regular SELECT then we need to generate a field name
+ // that'll hold SELECT VALUE expression after the conversion.
+ // SELECT VALUE expr -> SELECT expr AS main_projection_name
+ String selectElementMainProjectionName = selectElementConvertToRegular
+ ? SqlppVariableUtil.variableNameToDisplayedFieldName(context.newVariable().getValue()) : null;
+
tmpAllGroupingSetsVars.clear();
getAllGroupingSetsVars(groupingSets, tmpAllGroupingSetsVars);
- int nGroupingSets = groupingSets.size();
List<SetOperationRight> newSetOpRightInputs = new ArrayList<>(nGroupingSets - 1);
// process 2nd and following grouping sets
@@ -136,12 +332,12 @@
gby.setGbyPairList(tmpGroupingSets); // will be cloned by deepCopy() below
tmpDecorPairList.clear();
- computeDecorVars(tmpAllGroupingSetsVars, tmpCurrentGroupingSetVars, tmpDecorPairList);
+ computeDecorVars(tmpCurrentGroupingSetVars, tmpAllGroupingSetsVars, tmpDecorPairList);
gby.setDecorPairList(tmpDecorPairList); // will be cloned by deepCopy() below
SelectBlock newSelectBlock = (SelectBlock) SqlppRewriteUtil.deepCopy(selectBlock);
-
- rewriteGroupingOperations(newSelectBlock, tmpAllGroupingSetsVars, tmpCurrentGroupingSetVars);
+ rewriteGroupingOperations(newSelectBlock, tmpCurrentGroupingSetVars, tmpAllGroupingSetsVars);
+ rewriteSelectClause(newSelectBlock, extraProjections, selectElementMainProjectionName);
SetOperationRight newSetOpRight =
new SetOperationRight(SetOpType.UNION, false, new SetOperationInput(newSelectBlock, null));
@@ -157,10 +353,11 @@
getGroupingSetVars(groupingSet, tmpCurrentGroupingSetVars);
List<GbyVariableExpressionPair> newDecorPairList = new ArrayList<>();
- computeDecorVars(tmpAllGroupingSetsVars, tmpCurrentGroupingSetVars, newDecorPairList);
+ computeDecorVars(tmpCurrentGroupingSetVars, tmpAllGroupingSetsVars, newDecorPairList);
gby.setDecorPairList(newDecorPairList);
- rewriteGroupingOperations(selectBlock, tmpAllGroupingSetsVars, tmpCurrentGroupingSetVars);
+ rewriteGroupingOperations(selectBlock, tmpCurrentGroupingSetVars, tmpAllGroupingSetsVars);
+ rewriteSelectClause(selectBlock, extraProjections, selectElementMainProjectionName);
SetOperationInput newSetOpInput = new SetOperationInput(selectBlock, null);
@@ -170,7 +367,100 @@
SelectExpression newSelectExpr = new SelectExpression(null, newSetOp, null, null, true);
newSelectExpr.setSourceLocation(selectBlock.getSourceLocation());
- return SetOperationVisitor.createSelectBlock(newSelectExpr, context);
+ return selectElement
+ ? SetOperationVisitor.createSelectBlock(newSelectExpr, distinct,
+ selectElementConvertToRegular ? SqlppGroupingSetsVisitor::getFieldByName : null,
+ selectElementConvertToRegular ? selectElementMainProjectionName : null, context)
+ : SetOperationVisitor.createSelectBlock(newSelectExpr, distinct,
+ SqlppGroupingSetsVisitor::removeFieldsByName, extraProjections.values(), context);
+ }
+
+ private static void rewriteSelectClause(SelectBlock selectBlock, Map<VariableExpr, String> extraProjections,
+ String selectElementMainProjectionName) throws CompilationException {
+ SelectClause selectClause = selectBlock.getSelectClause();
+ // unset distinct. we'll have it in the outer select if needed
+ selectClause.setDistinct(false);
+ if (!extraProjections.isEmpty()) {
+ if (selectClause.selectElement()) {
+ selectClause = convertSelectElementToRegular(selectClause, selectElementMainProjectionName);
+ }
+ insertExtraProjections(selectClause, extraProjections);
+ }
+ selectBlock.setSelectClause(selectClause);
+ }
+
+ private static SelectClause convertSelectElementToRegular(SelectClause selectClause, String mainProjectionName)
+ throws CompilationException {
+ if (!selectClause.selectElement() || selectClause.distinct()) {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, selectClause.getSourceLocation(), "");
+ }
+ SelectElement selectElement = selectClause.getSelectElement();
+ List<Projection> projectionList = new ArrayList<>(1);
+ projectionList.add(new Projection(selectElement.getExpression(), mainProjectionName, false, false));
+ SelectRegular newSelectRegular = new SelectRegular(projectionList);
+ newSelectRegular.setSourceLocation(selectElement.getSourceLocation());
+ SelectClause newSelectClause = new SelectClause(null, newSelectRegular, selectClause.distinct());
+ newSelectClause.setSourceLocation(selectClause.getSourceLocation());
+ return newSelectClause;
+ }
+
+ private static void insertExtraProjections(SelectClause selectClause, Map<VariableExpr, String> projections)
+ throws CompilationException {
+ if (!selectClause.selectRegular()) {
+ // "SELECT VALUE expr" should've been rewritten earlier into "SELECT expr AS $n"
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, selectClause.getSourceLocation(), "");
+ }
+ SelectRegular selectRegular = selectClause.getSelectRegular();
+ for (Map.Entry<VariableExpr, String> me : projections.entrySet()) {
+ Projection newProjection =
+ new Projection((VariableExpr) SqlppRewriteUtil.deepCopy(me.getKey()), me.getValue(), false, false);
+ selectRegular.getProjections().add(newProjection);
+ }
+ }
+
+ private static Expression removeFieldsByName(Expression inExpr, Collection<String> fieldNames) {
+ //TODO(dmitry): need to enhance RECORD_REMOVE to accept an array of field names the should be removed.
+ //Until that's implemented we can only remove them one by one.
+ Expression resultExpr = inExpr;
+ for (String fieldName : fieldNames) {
+ LiteralExpr fieldNameExpr = new LiteralExpr(new StringLiteral(fieldName));
+ fieldNameExpr.setSourceLocation(resultExpr.getSourceLocation());
+ List<Expression> argList = new ArrayList<>(2);
+ argList.add(resultExpr);
+ argList.add(fieldNameExpr);
+ CallExpr callExpr = new CallExpr(new FunctionSignature(BuiltinFunctions.RECORD_REMOVE), argList);
+ callExpr.setSourceLocation(resultExpr.getSourceLocation());
+ resultExpr = callExpr;
+ }
+ return resultExpr;
+ }
+
+ private static Expression getFieldByName(Expression inExpr, String fieldName) {
+ LiteralExpr fieldNameExpr = new LiteralExpr(new StringLiteral(fieldName));
+ fieldNameExpr.setSourceLocation(inExpr.getSourceLocation());
+ List<Expression> argList = new ArrayList<>(2);
+ argList.add(inExpr);
+ argList.add(fieldNameExpr);
+ CallExpr callExpr = new CallExpr(new FunctionSignature(BuiltinFunctions.FIELD_ACCESS_BY_NAME), argList);
+ callExpr.setSourceLocation(inExpr.getSourceLocation());
+ return callExpr;
+ }
+
+ private String generateProjectionName(List<Projection> projectionList) {
+ String projectionName;
+ do {
+ projectionName = SqlppVariableUtil.variableNameToDisplayedFieldName(context.newVariable().getValue());
+ } while (findProjectionByName(projectionList, projectionName) != null);
+ return projectionName;
+ }
+
+ private static Projection findProjectionByName(List<Projection> projectionList, String name) {
+ for (Projection projection : projectionList) {
+ if (projection.hasName() && projection.getName().equals(name)) {
+ return projection;
+ }
+ }
+ return null;
}
/**
@@ -180,16 +470,16 @@
* The remaining GROUPING() operations are invalid and will lead to a compile-time failure later
* because there's no runtime for GROUPING() function.
*/
- private void rewriteGroupingOperations(SelectBlock selectBlock, Set<VariableExpr> allGroupingSetsVars,
- Set<VariableExpr> currentGroupingSetVars) throws CompilationException {
+ private static void rewriteGroupingOperations(SelectBlock selectBlock, Set<VariableExpr> currentGroupingSetVars,
+ Set<VariableExpr> allGroupingSetsVars) throws CompilationException {
if (selectBlock.hasLetHavingClausesAfterGroupby()) {
for (Clause clause : selectBlock.getLetHavingListAfterGroupby()) {
if (clause.getClauseType() == Clause.ClauseType.LET_CLAUSE) {
LetClause letClause = (LetClause) clause;
Expression letExpr = letClause.getBindingExpr();
if (SqlppGroupByVisitor.isGroupingOperation(letExpr)) {
- Expression newLetExpr = rewriteGroupingOperation((CallExpr) letExpr, allGroupingSetsVars,
- currentGroupingSetVars);
+ Expression newLetExpr = rewriteGroupingOperation((CallExpr) letExpr, currentGroupingSetVars,
+ allGroupingSetsVars);
letClause.setBindingExpr(newLetExpr);
}
}
@@ -197,8 +487,8 @@
}
}
- private Expression rewriteGroupingOperation(CallExpr callExpr, Set<VariableExpr> allGroupingSetsVars,
- Set<VariableExpr> currentGroupingSetVars) throws CompilationException {
+ private static Expression rewriteGroupingOperation(CallExpr callExpr, Set<VariableExpr> currentGroupingSetVars,
+ Set<VariableExpr> allGroupingSetsVars) throws CompilationException {
List<Expression> argList = callExpr.getExprList();
if (argList.isEmpty()) {
throw new CompilationException(ErrorCode.COMPILATION_INVALID_NUM_OF_ARGS, callExpr.getSourceLocation(),
@@ -247,8 +537,8 @@
}
}
- private static void computeDecorVars(Set<VariableExpr> allGroupingSetsVars,
- Set<VariableExpr> currentGroupingSetVars, List<GbyVariableExpressionPair> outDecorPairList) {
+ private static void computeDecorVars(Set<VariableExpr> currentGroupingSetVars,
+ Set<VariableExpr> allGroupingSetsVars, List<GbyVariableExpressionPair> outDecorPairList) {
for (VariableExpr var : allGroupingSetsVars) {
if (!currentGroupingSetVars.contains(var)) {
LiteralExpr nullExpr = new LiteralExpr(NullLiteral.INSTANCE);
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppSpecialFunctionNameRewriteVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppSpecialFunctionNameRewriteVisitor.java
new file mode 100644
index 0000000..7d892d6
--- /dev/null
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/SqlppSpecialFunctionNameRewriteVisitor.java
@@ -0,0 +1,68 @@
+/*
+ * 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.lang.sqlpp.rewrites.visitor;
+
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.functions.FunctionConstants;
+import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.lang.common.base.Expression;
+import org.apache.asterix.lang.common.base.ILangExpression;
+import org.apache.asterix.lang.common.expression.CallExpr;
+import org.apache.asterix.lang.sqlpp.expression.WindowExpression;
+import org.apache.asterix.lang.sqlpp.util.FunctionMapUtil;
+import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.api.exceptions.SourceLocation;
+
+public final class SqlppSpecialFunctionNameRewriteVisitor extends AbstractSqlppSimpleExpressionVisitor {
+
+ @Override
+ public Expression visit(CallExpr callExpr, ILangExpression arg) throws CompilationException {
+ callExpr.setFunctionSignature(
+ rewriteCoreAggregateFunction(callExpr.getFunctionSignature(), callExpr.getSourceLocation()));
+ return super.visit(callExpr, arg);
+ }
+
+ @Override
+ public Expression visit(WindowExpression winExpr, ILangExpression arg) throws CompilationException {
+ winExpr.setFunctionSignature(
+ rewriteCoreAggregateFunction(winExpr.getFunctionSignature(), winExpr.getSourceLocation()));
+ return super.visit(winExpr, arg);
+ }
+
+ private static FunctionSignature rewriteCoreAggregateFunction(FunctionSignature fs, SourceLocation sourceLoc)
+ throws CompilationException {
+ FunctionIdentifier coreAggregate = FunctionMapUtil.findInternalCoreAggregateFunction(fs);
+ if (coreAggregate != null) {
+ return new FunctionSignature(FunctionConstants.ASTERIX_DV, coreAggregate.getName(), fs.getArity());
+ }
+ if (FunctionMapUtil.isSql92AggregateFunction(fs)) {
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
+ fs.getName() + " is a SQL-92 aggregate function. The SQL++ core aggregate function "
+ + FunctionMapUtil.sql92ToCoreAggregateFunction(fs).getName()
+ + " could potentially express the intent.");
+ }
+ if (FunctionMapUtil.getInternalWindowFunction(fs) != null) {
+ throw new CompilationException(ErrorCode.COMPILATION_UNEXPECTED_WINDOW_EXPRESSION, sourceLoc);
+ }
+ return fs;
+ }
+}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/FunctionMapUtil.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/FunctionMapUtil.java
index 95ca9b1..a46f10b 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/FunctionMapUtil.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/FunctionMapUtil.java
@@ -25,8 +25,6 @@
import java.util.Map;
import java.util.Set;
-import org.apache.asterix.common.exceptions.CompilationException;
-import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.functions.FunctionConstants;
import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.lang.common.expression.CallExpr;
@@ -36,7 +34,6 @@
import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-import org.apache.hyracks.api.exceptions.SourceLocation;
public class FunctionMapUtil {
@@ -112,49 +109,28 @@
* false otherwise.
*/
public static boolean isCoreAggregateFunction(FunctionSignature fs) {
- String internalName = getInternalCoreAggregateFunctionName(fs);
- if (internalName != null) {
- FunctionIdentifier fi = new FunctionIdentifier(FunctionConstants.ASTERIX_NS, internalName, fs.getArity());
- IFunctionInfo finfo = FunctionUtil.getFunctionInfo(fi);
- return finfo != null && BuiltinFunctions.getAggregateFunction(finfo.getFunctionIdentifier()) != null;
- }
- return false;
+ return findInternalCoreAggregateFunction(fs) != null;
}
/**
- * Maps a user invoked function signature to a system internal function signature.
+ * Returns a function identifier of an internal core aggregate function
+ * that this SQL++ core aggregate function maps to.
+ * Returns {@code null} if given function is not a SQL++ core aggregate function
*
- * @param fs
- * the user typed function.
- * @param checkSql92Aggregate
- * enable check if the function is a SQL-92 aggregate function
- * @param sourceLoc
- * the source location of the function call
- * @return the system internal function.
- * @throws CompilationException
- * if checkSql92Aggregate is true and the function is a SQL-92 aggregate function
+ * @param fs the function signature.
*/
- public static FunctionSignature normalizeBuiltinFunctionSignature(FunctionSignature fs, boolean checkSql92Aggregate,
- SourceLocation sourceLoc) throws CompilationException {
- FunctionSignature ns = CommonFunctionMapUtil.normalizeBuiltinFunctionSignature(fs);
- String internalName = getInternalCoreAggregateFunctionName(ns);
- if (internalName != null) {
- FunctionIdentifier fi = new FunctionIdentifier(FunctionConstants.ASTERIX_NS, internalName, ns.getArity());
- IFunctionInfo finfo = FunctionUtil.getFunctionInfo(fi);
- if (finfo != null && BuiltinFunctions.getAggregateFunction(finfo.getFunctionIdentifier()) != null) {
- return new FunctionSignature(FunctionConstants.ASTERIX_DV, internalName, ns.getArity());
- }
- } else if (checkSql92Aggregate) {
- if (isSql92AggregateFunction(ns)) {
- throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
- fs.getName() + " is a SQL-92 aggregate function. The SQL++ core aggregate function "
- + sql92ToCoreAggregateFunction(ns).getName()
- + " could potentially express the intent.");
- } else if (getInternalWindowFunction(ns) != null) {
- throw new CompilationException(ErrorCode.COMPILATION_UNEXPECTED_WINDOW_EXPRESSION, sourceLoc);
- }
+ public static FunctionIdentifier findInternalCoreAggregateFunction(FunctionSignature fs) {
+ String internalName = getInternalCoreAggregateFunctionName(fs);
+ if (internalName == null) {
+ return null;
}
- return new FunctionSignature(ns.getDataverseName(), ns.getName(), ns.getArity());
+ FunctionIdentifier fi = new FunctionIdentifier(FunctionConstants.ASTERIX_NS, internalName, fs.getArity());
+ IFunctionInfo finfo = FunctionUtil.getFunctionInfo(fi);
+ if (finfo == null) {
+ return null;
+ }
+ FunctionIdentifier fid = finfo.getFunctionIdentifier();
+ return BuiltinFunctions.getAggregateFunction(fid) != null ? fid : null;
}
/**
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/SqlppStatementUtil.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/SqlppStatementUtil.java
index 9336c79..5281dd9 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/SqlppStatementUtil.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/util/SqlppStatementUtil.java
@@ -34,6 +34,9 @@
public static final String DROP_INDEX = "DROP INDEX ";
public static final String ON = " ON ";
public static final String WHERE = " WHERE ";
+ public static final String AND = " AND ";
+ public static final String OR = " OR ";
+ public static final String NOT = " NOT ";
public static final char SEMI_COLON = ';';
public static final char DOT = '.';
public static final char COLON = ':';
@@ -108,7 +111,7 @@
/**
* Encloses each part of the {@param dataverseName} in back-ticks and concatenates them with
- * {@link DataverseName#SEPARATOR_CHAR} separator
+ * {@link #DOT} separator
* @param stringBuilder where the dataverse name will be appended
* @param dataverseName a dataverse name which could be a valid one or one that needs to be delimited
* @return {@param stringBuilder} with the <i>delimited</i> dataverseName appended
@@ -117,7 +120,7 @@
List<String> parts = dataverseName.getParts();
for (int i = 0, ln = parts.size(); i < ln; i++) {
if (i > 0) {
- stringBuilder.append(DataverseName.SEPARATOR_CHAR);
+ stringBuilder.append(DOT);
}
enclose(stringBuilder, parts.get(i));
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckNonFunctionalExpressionVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckNonFunctionalExpressionVisitor.java
index 7a8f47f..d6ee1fc 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckNonFunctionalExpressionVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckNonFunctionalExpressionVisitor.java
@@ -23,10 +23,10 @@
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.lang.common.expression.CallExpr;
-import org.apache.asterix.lang.common.util.FunctionUtil;
import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Function;
+import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
@@ -44,20 +44,26 @@
@Override
public Boolean visit(CallExpr callExpr, Void arg) throws CompilationException {
FunctionSignature fs = callExpr.getFunctionSignature();
- IFunctionInfo fi = FunctionUtil.getBuiltinFunctionInfo(fs.getName(), fs.getArity());
- if (fi != null) {
- if (!fi.isFunctional()) {
+ IFunctionInfo finfo = BuiltinFunctions.getBuiltinFunctionInfo(fs.createFunctionIdentifier());
+ if (finfo != null) {
+ if (!finfo.isFunctional()) {
return true;
}
} else {
+ Function function;
try {
- Function function =
- FunctionUtil.lookupUserDefinedFunctionDecl(metadataProvider.getMetadataTxnContext(), fs);
- if (function != null && function.getDeterministic() != null && !function.getDeterministic()) {
- return true;
- }
+ function = metadataProvider.lookupUserDefinedFunction(fs);
} catch (AlgebricksException e) {
- throw new CompilationException(ErrorCode.METADATA_ERROR, e, callExpr.getSourceLocation());
+ throw new CompilationException(ErrorCode.METADATA_ERROR, e, callExpr.getSourceLocation(), e.toString());
+ }
+ if (function == null || function.getDeterministic() == null) {
+ // fail if function not found because all functions must have been resolved at this point
+ // fail if function does not define deterministic property (because it's a SQL++ function
+ // and they were supposed to be inlined at this point)
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, callExpr.getSourceLocation(), fs);
+ }
+ if (!function.getDeterministic()) {
+ return true;
}
}
return super.visit(callExpr, arg);
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckSql92AggregateVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckSql92AggregateVisitor.java
index a2dafbd..027560c 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckSql92AggregateVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/CheckSql92AggregateVisitor.java
@@ -128,7 +128,7 @@
return true;
}
- if (!ia.isAny() && ia.getIndexExpr().accept(this, parentSelectBlock)) {
+ if (ia.getIndexExpr() != null && ia.getIndexExpr().accept(this, parentSelectBlock)) {
return true;
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/DeepCopyVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/DeepCopyVisitor.java
index 70ebcfc..684a738 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/DeepCopyVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/DeepCopyVisitor.java
@@ -481,7 +481,7 @@
if (ia.getIndexExpr() != null) {
indexExpr = (Expression) ia.getIndexExpr().accept(this, arg);
}
- IndexAccessor copy = new IndexAccessor(expr, indexExpr);
+ IndexAccessor copy = new IndexAccessor(expr, ia.getIndexKind(), indexExpr);
copy.setSourceLocation(ia.getSourceLocation());
copy.addHints(ia.getHints());
return copy;
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppAstPrintVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppAstPrintVisitor.java
index 7c9a4a7..038be3e 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppAstPrintVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppAstPrintVisitor.java
@@ -57,9 +57,7 @@
import org.apache.asterix.lang.sqlpp.expression.SelectExpression;
import org.apache.asterix.lang.sqlpp.expression.WindowExpression;
import org.apache.asterix.lang.sqlpp.struct.SetOperationRight;
-import org.apache.asterix.lang.sqlpp.util.FunctionMapUtil;
import org.apache.asterix.lang.sqlpp.visitor.base.ISqlppVisitor;
-import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.hyracks.algebricks.common.utils.Pair;
public class SqlppAstPrintVisitor extends QueryPrintVisitor implements ISqlppVisitor<Void, Integer> {
@@ -252,11 +250,6 @@
@Override
public Void visit(CallExpr callExpr, Integer step) throws CompilationException {
FunctionSignature functionSignature = callExpr.getFunctionSignature();
- FunctionSignature normalizedFunctionSignature = FunctionMapUtil
- .normalizeBuiltinFunctionSignature(functionSignature, false, callExpr.getSourceLocation());
- if (BuiltinFunctions.isBuiltinCompilerFunction(normalizedFunctionSignature, true)) {
- functionSignature = normalizedFunctionSignature;
- }
//TODO(MULTI_PART_DATAVERSE_NAME):temporary workaround to preserve AST reference results
if (FunctionUtil.isBuiltinDatasetFunction(functionSignature)) {
String singleArg = callExpr.getExprList().stream().map(LiteralExpr.class::cast).map(LiteralExpr::getValue)
@@ -366,7 +359,9 @@
@Override
public Void visit(WindowExpression winExpr, Integer step) throws CompilationException {
- out.println(skip(step) + "WINDOW " + winExpr.getFunctionSignature() + "[");
+ out.print(skip(step) + "WINDOW ");
+ printFunctionSignature(out, winExpr.getFunctionSignature(), winExpr.getFunctionSignature().getArity());
+ out.println("[");
for (Expression expr : winExpr.getExprList()) {
expr.accept(this, step + 1);
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppSubstituteExpressionVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppSubstituteExpressionVisitor.java
index 636f8a6..127e17a 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppSubstituteExpressionVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppSubstituteExpressionVisitor.java
@@ -39,7 +39,8 @@
private final Map<Expression, Expression> exprMap = new HashMap<>();
- public SqlppSubstituteExpressionVisitor(LangRewritingContext context, Map<Expression, Expression> exprMap) {
+ public SqlppSubstituteExpressionVisitor(LangRewritingContext context,
+ Map<? extends Expression, ? extends Expression> exprMap) {
super(context);
this.exprMap.putAll(exprMap);
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
index e1b93b9..b23492a 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
+++ b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
@@ -59,6 +59,7 @@
import org.apache.asterix.common.annotations.InsertRandIntDataGen;
import org.apache.asterix.common.annotations.ListDataGen;
import org.apache.asterix.common.annotations.ListValFileDataGen;
+import org.apache.asterix.common.annotations.RangeAnnotation;
import org.apache.asterix.common.annotations.SkipSecondaryIndexSearchExpressionAnnotation;
import org.apache.asterix.common.annotations.TypeDataGen;
import org.apache.asterix.common.annotations.UndeclaredFieldsDataGen;
@@ -118,6 +119,7 @@
import org.apache.asterix.lang.common.literal.StringLiteral;
import org.apache.asterix.lang.common.literal.TrueLiteral;
import org.apache.asterix.lang.common.parser.ScopeChecker;
+import org.apache.asterix.lang.common.statement.AdapterDropStatement;
import org.apache.asterix.lang.common.statement.CompactStatement;
import org.apache.asterix.lang.common.statement.ConnectFeedStatement;
import org.apache.asterix.lang.common.statement.StartFeedStatement;
@@ -231,13 +233,8 @@
private static final String SETS = "SETS";
private static final String TIES = "TIES";
private static final String UNBOUNDED = "UNBOUNDED";
- private static final String ACTION = "ACTION";
- private static final String LANGUAGE = "LANGUAGE";
- private static final String CALL = "CALL";
- private static final String DETERMINISTIC = "DETERMINISTIC";
+ private static final String REPLACE = "REPLACE";
private static final String RETURNS = "RETURNS";
- private static final String INLINE = "INLINE";
-
private static final String INT_TYPE_NAME = "int";
@@ -268,7 +265,7 @@
public DataverseName dataverse;
public String library;
public String function;
- public SqlppHint hint;
+ public Token hintToken;
public SourceLocation sourceLoc;
}
@@ -346,7 +343,8 @@
});
}
- private Expression parseExpression() throws CompilationException {
+ @Override
+ public Expression parseExpression() throws CompilationException {
return parseImpl(new ParseFunction<Expression>() {
@Override
public Expression parse() throws ParseException {
@@ -468,12 +466,20 @@
}
private boolean isToken(String image) {
+ return isToken(token, image);
+ }
+
+ private static boolean isToken(Token token, String image) {
return token.image.equalsIgnoreCase(image);
}
private void expectToken(String image) throws SqlppParseException {
- if (!isToken(image)) {
- throw createUnexpectedTokenError();
+ expectToken(token, image);
+ }
+
+ private static void expectToken(Token token, String image) throws SqlppParseException {
+ if (!isToken(token, image)) {
+ throw createUnexpectedTokenError(token);
}
}
@@ -481,7 +487,7 @@
return createUnexpectedTokenError(token, null);
}
- private SqlppParseException createUnexpectedTokenError(Token t) {
+ private static SqlppParseException createUnexpectedTokenError(Token t) {
return createUnexpectedTokenError(t, null);
}
@@ -489,7 +495,7 @@
return createUnexpectedTokenError(token, expected);
}
- private SqlppParseException createUnexpectedTokenError(Token t, String expected) {
+ private static SqlppParseException createUnexpectedTokenError(Token t, String expected) {
String message = "Unexpected token: " + LogRedactionUtil.userData(t.image) +
(expected == null ? "" : ". Expected: " + LogRedactionUtil.userData(expected));
return new SqlppParseException(getSourceLocation(t), message);
@@ -561,6 +567,13 @@
"Unexpected return type declaration for function " + fnName);
}
}
+
+ private void ensureIntegerLiteral(LiteralExpr expr, String errorPrefix) throws SqlppParseException {
+ Literal lit = expr.getValue();
+ if (lit.getLiteralType() != Literal.Type.INTEGER && lit.getLiteralType() != Literal.Type.LONG) {
+ throw new SqlppParseException(expr.getSourceLocation(), errorPrefix + " should be an INTEGER");
+ }
+ }
}
PARSER_END(SQLPPParser)
@@ -656,12 +669,13 @@
{
<CREATE> { startToken = token; }
(
- stmt = CreateTypeStatement(startToken)
+ stmt = CreateOrReplaceStatement(startToken)
+ | stmt = CreateTypeStatement(startToken)
| stmt = CreateNodegroupStatement(startToken)
| stmt = CreateDatasetStatement(startToken)
| stmt = CreateIndexStatement(startToken)
| stmt = CreateDataverseStatement(startToken)
- | stmt = CreateFunctionStatement(startToken)
+ | stmt = CreateFunctionStatement(startToken, false)
| stmt = CreateAdapterStatement(startToken)
| stmt = CreateSynonymStatement(startToken)
| stmt = CreateFeedStatement(startToken)
@@ -672,6 +686,23 @@
}
}
+Statement CreateOrReplaceStatement(Token startStmtToken) throws ParseException:
+{
+ Statement stmt = null;
+ Token replaceToken = null;
+}
+{
+ <OR> <IDENTIFIER> { replaceToken = token; }
+ (
+ stmt = CreateFunctionStatement(startStmtToken, true)
+ )
+ {
+ // check expected token here to make the grammar extension plugin happy
+ expectToken(replaceToken, REPLACE);
+ return stmt;
+ }
+}
+
TypeDecl CreateTypeStatement(Token startStmtToken) throws ParseException:
{
TypeDecl stmt = null;
@@ -777,7 +808,6 @@
TypeExpression typeExpr = null;
TypeExpression metaTypeExpr = null;
Pair<List<Integer>, List<List<String>>> primaryKeyFields = null;
- String nodeGroupName = null;
Map<String,String> hints = new HashMap<String,String>();
DatasetDecl stmt = null;
boolean autogenerated = false;
@@ -802,21 +832,15 @@
ifNotExists = IfNotExists()
primaryKeyFields = PrimaryKey()
(<AUTOGENERATED> { autogenerated = true; } )?
- (<ON> nodeGroupName = Identifier() )?
( <HINTS> hints = Properties() )?
( LOOKAHEAD(2) <WITH> <FILTER> <ON> filterField = NestedField() )?
( <WITH> withRecord = RecordConstructor() )?
{
- if(filterField!=null && filterField.first!=0){
- throw new SqlppParseException(getSourceLocation(startStmtToken),
- "A filter field can only be a field in the main record of the dataset.");
- }
- InternalDetailsDecl idd = new InternalDetailsDecl(primaryKeyFields.second, primaryKeyFields.first, autogenerated,
- filterField == null? null : filterField.second);
try {
- stmt = new DatasetDecl(nameComponents.first, nameComponents.second, typeExpr, metaTypeExpr,
- nodeGroupName != null ? new Identifier(nodeGroupName) : null, hints, DatasetType.INTERNAL, idd, withRecord,
- ifNotExists);
+ InternalDetailsDecl idd = new InternalDetailsDecl(primaryKeyFields.second, primaryKeyFields.first, autogenerated,
+ filterField == null? null : filterField.first, filterField == null? null : filterField.second);
+ stmt = new DatasetDecl(nameComponents.first, nameComponents.second, typeExpr, metaTypeExpr, hints,
+ DatasetType.INTERNAL, idd, withRecord, ifNotExists);
return addSourceLocation(stmt, startStmtToken);
} catch (CompilationException e) {
throw new SqlppParseException(getSourceLocation(startStmtToken), e.getMessage());
@@ -831,7 +855,6 @@
boolean ifNotExists = false;
String adapterName = null;
Map<String,String> properties = null;
- String nodeGroupName = null;
Map<String,String> hints = new HashMap<String,String>();
DatasetDecl stmt = null;
RecordConstructor withRecord = null;
@@ -841,7 +864,6 @@
typeExpr = DatasetTypeSpecification()
ifNotExists = IfNotExists()
<USING> adapterName = AdapterName() properties = Configuration()
- ( <ON> nodeGroupName = Identifier() )?
( <HINTS> hints = Properties() )?
( <WITH> withRecord = RecordConstructor() )?
{
@@ -849,9 +871,8 @@
edd.setAdapter(adapterName);
edd.setProperties(properties);
try {
- stmt = new DatasetDecl(nameComponents.first, nameComponents.second, typeExpr, null,
- nodeGroupName != null? new Identifier(nodeGroupName): null, hints, DatasetType.EXTERNAL, edd, withRecord,
- ifNotExists);
+ stmt = new DatasetDecl(nameComponents.first, nameComponents.second, typeExpr, null, hints, DatasetType.EXTERNAL,
+ edd, withRecord, ifNotExists);
return addSourceLocation(stmt, startStmtToken);
} catch (CompilationException e) {
throw new SqlppParseException(getSourceLocation(startStmtToken), e.getMessage());
@@ -1100,18 +1121,6 @@
}
}
-CreateFunctionStatement CreateFunctionStatement(Token startStmtToken) throws ParseException:
-{
- CreateFunctionStatement stmt = null;
-}
-{
- <FUNCTION> stmt = FunctionSpecification(startStmtToken)
- {
- return stmt;
- }
-}
-
-
CreateAdapterStatement CreateAdapterStatement(Token startStmtToken) throws ParseException:
{
CreateAdapterStatement stmt = null;
@@ -1125,49 +1134,48 @@
CreateAdapterStatement AdapterSpecification(Token startStmtToken) throws ParseException:
{
- AdapterIdentifier signature = null;
- Token beginPos;
- Token endPos;
- Pair<DataverseName,Identifier> adaptName = null;
- DataverseName currentDataverse = defaultDataverse;
- String lang = null;
- String libName ="";
- String externalIdent = "";
- ListConstructor resources = null;
+ Pair<DataverseName,Identifier> adapterName = null;
+ Pair<DataverseName,Identifier> libraryName = null;
+ List<String> externalIdentifier = null;
boolean ifNotExists = false;
}
{
- adaptName = QualifiedName()
- <IDENTIFIER> {expectToken(LANGUAGE);} lang = Identifier() <AS> libName = ConstantString() <COMMA> externalIdent = ConstantString() ifNotExists = IfNotExists()
- {
- signature = new AdapterIdentifier(adaptName.getFirst(),adaptName.getSecond().getValue());
- CreateAdapterStatement stmt =
- new CreateAdapterStatement(signature, lang, libName, externalIdent, ifNotExists);
- return addSourceLocation(stmt, startStmtToken);
- }
-
+ adapterName = QualifiedName()
+ ifNotExists = IfNotExists()
+ <AS> externalIdentifier = FunctionExternalIdentifier()
+ <AT> libraryName = QualifiedName()
+ {
+ CreateAdapterStatement stmt = new CreateAdapterStatement(adapterName.first, adapterName.second.getValue(),
+ libraryName.first, libraryName.second.getValue(), externalIdentifier, ifNotExists);
+ return addSourceLocation(stmt, startStmtToken);
+ }
}
-CreateFunctionStatement FunctionSpecification(Token startStmtToken) throws ParseException:
+CreateFunctionStatement CreateFunctionStatement(Token startStmtToken, boolean orReplace) throws ParseException:
+{
+ CreateFunctionStatement stmt = null;
+}
+{
+ <FUNCTION> stmt = FunctionSpecification(startStmtToken, orReplace)
+ {
+ return stmt;
+ }
+}
+
+CreateFunctionStatement FunctionSpecification(Token startStmtToken, boolean orReplace) throws ParseException:
{
FunctionSignature signature = null;
- boolean ifNotExists = false;
- String functionBody = null;
- VarIdentifier var = null;
- Expression functionBodyExpr = null;
- Token beginPos;
- Token endPos;
FunctionName fctName = null;
- DataverseName currentDataverse = defaultDataverse;
- TypeExpression returnType = null;
- boolean deterministic = false;
- boolean nullCall = false;
- String lang = null;
- String libName ="";
- String externalIdent = "";
- List<String> externalIdentList = null;
List<Pair<VarIdentifier,TypeExpression>> params = null;
- RecordConstructor resources = null;
+ TypeExpression returnType = null;
+ Token beginPos = null, endPos = null;
+ Expression functionBodyExpr = null;
+ Pair<DataverseName,Identifier> libraryName = null;
+ List<String> externalIdentifier = null;
+ RecordConstructor withOptions = null;
+ boolean ifNotExists = false;
+ CreateFunctionStatement stmt = null;
+ DataverseName currentDataverse = defaultDataverse;
}
{
fctName = FunctionName()
@@ -1181,69 +1189,41 @@
(
<LEFTBRACE>
{
- createNewScope();
- beginPos = token;
+ beginPos = token;
+ createNewScope();
}
functionBodyExpr = FunctionBody()
- <RIGHTBRACE>{
- endPos = token;
- functionBody = extractFragment(beginPos.beginLine, beginPos.beginColumn, endPos.beginLine, endPos.beginColumn);
- signature = new FunctionSignature(fctName.dataverse, fctName.function, params.size());
- getCurrentScope().addFunctionDescriptor(signature, false);
- removeCurrentScope();
- defaultDataverse = currentDataverse;
- ensureNoTypeDeclsInFunction(fctName.function, params, returnType, startStmtToken);
- CreateFunctionStatement stmt = new CreateFunctionStatement(signature, params, functionBody, functionBodyExpr, ifNotExists);
- return addSourceLocation(stmt, startStmtToken);
- }
+ <RIGHTBRACE>
+ {
+ endPos = token;
+ String functionBody = extractFragment(beginPos.beginLine, beginPos.beginColumn, endPos.beginLine,
+ endPos.beginColumn);
+ signature = new FunctionSignature(fctName.dataverse, fctName.function, params.size());
+ getCurrentScope().addFunctionDescriptor(signature, false);
+ removeCurrentScope();
+ defaultDataverse = currentDataverse;
+ ensureNoTypeDeclsInFunction(fctName.function, params, returnType, startStmtToken);
+ stmt = new CreateFunctionStatement(signature, params, functionBody, functionBodyExpr, orReplace, ifNotExists);
+ return addSourceLocation(stmt, startStmtToken);
+ }
)
|
- <IDENTIFIER> {expectToken(LANGUAGE);}
- (
- LOOKAHEAD({laIdentifier(INLINE)})
- (
- <IDENTIFIER> <AS>
- {
- createNewScope();
- beginPos = token;
- }
- functionBodyExpr = FunctionBody()
- {
- endPos = token;
- functionBody = extractFragment(beginPos.endLine, beginPos.beginColumn+1, endPos.endLine, endPos.endColumn+1);
- signature = new FunctionSignature(fctName.dataverse, fctName.function, params.size());
- getCurrentScope().addFunctionDescriptor(signature, false);
- removeCurrentScope();
- defaultDataverse = currentDataverse;
- ensureNoTypeDeclsInFunction(fctName.function, params, returnType, startStmtToken);
- CreateFunctionStatement stmt = new CreateFunctionStatement(signature, params, functionBody, functionBodyExpr, ifNotExists);
- return addSourceLocation(stmt, startStmtToken);
- }
- )
- |
- (
- lang = Identifier()
- ( (<NOT> <IDENTIFIER> {expectToken(DETERMINISTIC); deterministic = false;}) | (<IDENTIFIER> {expectToken(DETERMINISTIC); deterministic = true;}) )?
- (<NULL> <IDENTIFIER> { expectToken(CALL); nullCall = true;})?
- <AS> libName = ConstantString()
- { externalIdentList = new ArrayList<String>(2); }
- ( <COMMA> externalIdent = ConstantString() { externalIdentList.add(externalIdent); } )+
- (<WITH> resources = RecordConstructor())?
- {
- signature = new FunctionSignature(fctName.dataverse, fctName.function, params.size());
- defaultDataverse = currentDataverse;
- CreateFunctionStatement stmt = null;
- try{
- stmt =
- new CreateFunctionStatement(signature, params, returnType, deterministic, nullCall,
- lang, libName, externalIdentList, resources, ifNotExists);
- } catch (AlgebricksException e) {
- throw new SqlppParseException(getSourceLocation(startStmtToken), e.getMessage());
- }
- return addSourceLocation(stmt, startStmtToken);
- }
- )
- )
+ (
+ <AS> externalIdentifier = FunctionExternalIdentifier()
+ <AT> libraryName = QualifiedName()
+ (<WITH> withOptions = RecordConstructor())?
+ {
+ signature = new FunctionSignature(fctName.dataverse, fctName.function, params.size());
+ defaultDataverse = currentDataverse;
+ try {
+ stmt = new CreateFunctionStatement(signature, params, returnType, libraryName.first,
+ libraryName.second.getValue(), externalIdentifier, withOptions, orReplace, ifNotExists);
+ } catch (AlgebricksException e) {
+ throw new SqlppParseException(getSourceLocation(startStmtToken), e.getMessage());
+ }
+ return addSourceLocation(stmt, startStmtToken);
+ }
+ )
)
}
@@ -1306,6 +1286,19 @@
}
}
+List<String> FunctionExternalIdentifier() throws ParseException:
+{
+ String ident = null;
+ List<String> identList = new ArrayList(2);
+}
+{
+ ident = StringLiteral() { identList.add(ident.trim()); }
+ ( <COMMA> ident = StringLiteral() { identList.add(ident.trim()); } )*
+ {
+ return identList;
+ }
+}
+
CreateFeedStatement CreateFeedStatement(Token startStmtToken) throws ParseException:
{
CreateFeedStatement stmt = null;
@@ -1378,7 +1371,6 @@
}
}
-
CreateSynonymStatement CreateSynonymStatement(Token startStmtToken) throws ParseException:
{
CreateSynonymStatement stmt = null;
@@ -1455,20 +1447,38 @@
FunctionSignature FunctionSignature() throws ParseException:
{
FunctionName fctName = null;
+ List<Pair<VarIdentifier,TypeExpression>> params = null;
int arity = 0;
}
{
- fctName = FunctionName() <ATT> <INTEGER_LITERAL>
- {
- arity = new Integer(token.image);
- if (arity < 0 && arity != FunctionIdentifier.VARARGS) {
- throw new SqlppParseException(getSourceLocation(token), "Invalid arity:" + arity);
- }
+ fctName = FunctionName()
+ (
+ LOOKAHEAD(2) params = FunctionParameters() { arity = params.size(); }
+ | ( <LEFTPAREN> arity = FunctionArity() <RIGHTPAREN> )
+ | ( <ATT> arity = FunctionArity() ) // back-compat
+ )
+ {
+ return new FunctionSignature(fctName.dataverse, fctName.function, arity);
+ }
+}
- // TODO use fctName.library
- String fqFunctionName = fctName.library == null ? fctName.function : fctName.library + "#" + fctName.function;
- return new FunctionSignature(fctName.dataverse, fqFunctionName, arity);
+int FunctionArity() throws ParseException:
+{
+ int arity;
+}
+{
+ <INTEGER_LITERAL>
+ {
+ try {
+ arity = Integer.parseInt(token.image);
+ } catch (NumberFormatException e) {
+ throw new SqlppParseException(getSourceLocation(token), "Invalid arity: " + token.image);
}
+ if (arity < 0 && arity != FunctionIdentifier.VARARGS) {
+ throw new SqlppParseException(getSourceLocation(token), "Invalid arity: " + arity);
+ }
+ return arity;
+ }
}
Pair<List<Integer>, List<List<String>>> PrimaryKey() throws ParseException:
@@ -1507,6 +1517,7 @@
| stmt = DropNodeGroupStatement(startToken)
| stmt = DropTypeStatement(startToken)
| stmt = DropDataverseStatement(startToken)
+ | stmt = DropAdapterStatement(startToken)
| stmt = DropFunctionStatement(startToken)
| stmt = DropFeedStatement(startToken)
| stmt = DropFeedPolicyStatement(startToken)
@@ -1637,6 +1648,30 @@
}
}
+AdapterDropStatement DropAdapterStatement(Token startStmtToken) throws ParseException:
+{
+ AdapterDropStatement stmt = null;
+}
+{
+ <ADAPTER> stmt = DropAdapterSpecification(startStmtToken)
+ {
+ return stmt;
+ }
+}
+
+AdapterDropStatement DropAdapterSpecification(Token startStmtToken) throws ParseException:
+{
+ Pair<DataverseName,Identifier> adapterName = null;
+ boolean ifExists = false;
+}
+{
+ adapterName = QualifiedName() ifExists = IfExists()
+ {
+ AdapterDropStatement stmt = new AdapterDropStatement(adapterName.first, adapterName.second.getValue(), ifExists);
+ return addSourceLocation(stmt, startStmtToken);
+ }
+}
+
FunctionDropStatement DropFunctionStatement(Token startStmtToken) throws ParseException:
{
FunctionDropStatement stmt = null;
@@ -2294,19 +2329,19 @@
FunctionName FunctionName() throws ParseException:
{
- Triple<List<String>, SourceLocation, SqlppHint> prefix = null;
+ Triple<List<String>, SourceLocation, Token> prefix = null;
String suffix = null;
}
{
// Note: there's a copy of this production in PrimaryExpr() (LOOKAHEAD for FunctionCallExpr())
// that copy must be kept in sync with this code
prefix = MultipartIdentifierWithHints(SqlppHint.INDEXED_NESTED_LOOP_JOIN_HINT,
- SqlppHint.SKIP_SECONDARY_INDEX_SEARCH_HINT)
+ SqlppHint.SKIP_SECONDARY_INDEX_SEARCH_HINT, SqlppHint.RANGE_HINT)
(<SHARP> suffix = Identifier())?
{
FunctionName result = new FunctionName();
result.sourceLoc = prefix.second;
- result.hint = prefix.third;
+ result.hintToken = prefix.third;
List<String> list = prefix.first;
int ln = list.size();
String last = list.get(ln - 1);
@@ -2450,7 +2485,7 @@
List<String> MultipartIdentifier() throws ParseException:
{
- Triple<List<String>, SourceLocation, SqlppHint> result = null;
+ Triple<List<String>, SourceLocation, Token> result = null;
}
{
result = MultipartIdentifierWithHints(null)
@@ -2459,12 +2494,12 @@
}
}
-Triple<List<String>, SourceLocation, SqlppHint> MultipartIdentifierWithHints(SqlppHint... expectedHints)
+Triple<List<String>, SourceLocation, Token> MultipartIdentifierWithHints(SqlppHint... expectedHints)
throws ParseException:
{
List<String> list = new ArrayList<String>();
SourceLocation sourceLoc = null;
- SqlppHint hint = null;
+ Token hint = null;
String item = null;
}
{
@@ -2473,15 +2508,12 @@
list.add(item);
sourceLoc = getSourceLocation(token);
if (expectedHints != null && expectedHints.length > 0) {
- Token hintToken = fetchHint(token, expectedHints);
- if (hintToken != null) {
- hint = hintToken.hint;
- }
+ hint = fetchHint(token, expectedHints);
}
}
(<DOT> item = Identifier() { list.add(item); } )*
{
- return new Triple<List<String>, SourceLocation, SqlppHint>(list, sourceLoc, hint);
+ return new Triple<List<String>, SourceLocation, Token>(list, sourceLoc, hint);
}
}
@@ -3060,49 +3092,33 @@
AbstractAccessor IndexAccessor(Expression inputExpr) throws ParseException:
{
Token startToken = null;
- boolean isListSliceExpression = false;
- AbstractAccessor resultExpression = null;
- Expression argumentExpression1 = null;
- Expression argumentExpression2 = null;
+ boolean star = false, slice = false;
+ Expression expr1 = null, expr2 = null;
}
{
<LEFTBRACKET> { startToken = token; }
- ( argumentExpression1 = Expression()
- {
- if (argumentExpression1.getKind() == Expression.Kind.LITERAL_EXPRESSION)
- {
- Literal lit = ((LiteralExpr)argumentExpression1).getValue();
- if (lit.getLiteralType() != Literal.Type.INTEGER &&
- lit.getLiteralType() != Literal.Type.LONG) {
- throw new SqlppParseException(argumentExpression1.getSourceLocation(), "Index should be an INTEGER");
- }
- }
- }
+ (
+ <MUL> { star = true; }
+ |
+ ( expr1 = Expression() ( <COLON> { slice = true; } ( expr2 = Expression() )? )? )
)
- (<COLON>
- {
- isListSliceExpression = true;
- }
- ( argumentExpression2 = Expression()
- {
- if (argumentExpression2.getKind() == Expression.Kind.LITERAL_EXPRESSION) {
- Literal lit = ((LiteralExpr)argumentExpression2).getValue();
- if (lit.getLiteralType() != Literal.Type.INTEGER &&
- lit.getLiteralType() != Literal.Type.LONG) {
- throw new SqlppParseException(argumentExpression2.getSourceLocation(), "Index should be an INTEGER");
- }
- }
- })?
- )?
<RIGHTBRACKET>
{
- if (!isListSliceExpression) {
- resultExpression = new IndexAccessor(inputExpr, argumentExpression1);
- } else {
- resultExpression = new ListSliceExpression(inputExpr, argumentExpression1, argumentExpression2);
+ if (expr1 != null && expr1.getKind() == Expression.Kind.LITERAL_EXPRESSION) {
+ ensureIntegerLiteral( (LiteralExpr) expr1, "Index");
}
-
- return addSourceLocation(resultExpression, startToken);
+ if (expr2 != null && expr2.getKind() == Expression.Kind.LITERAL_EXPRESSION) {
+ ensureIntegerLiteral( (LiteralExpr) expr2, "Index");
+ }
+ AbstractAccessor resultAccessor;
+ if (slice) {
+ resultAccessor = new ListSliceExpression(inputExpr, expr1, expr2);
+ } else if (star) {
+ resultAccessor = new IndexAccessor(inputExpr, IndexAccessor.IndexKind.STAR, null);
+ } else {
+ resultAccessor = new IndexAccessor(inputExpr, IndexAccessor.IndexKind.ELEMENT, expr1);
+ }
+ return addSourceLocation(resultAccessor, startToken);
}
}
@@ -3450,14 +3466,27 @@
return windowExpr;
} else {
CallExpr callExpr = new CallExpr(signature, argList, filterExpr);
- if (funcName.hint != null) {
- switch (funcName.hint) {
+ if (funcName.hintToken != null) {
+ switch (funcName.hintToken.hint) {
case INDEXED_NESTED_LOOP_JOIN_HINT:
callExpr.addHint(IndexedNLJoinExpressionAnnotation.INSTANCE);
break;
case SKIP_SECONDARY_INDEX_SEARCH_HINT:
callExpr.addHint(SkipSecondaryIndexSearchExpressionAnnotation.INSTANCE);
break;
+ case RANGE_HINT:
+ try {
+ RangeAnnotation rangeAnn = new RangeAnnotation();
+ rangeAnn.setObject((Object) RangeMapBuilder.parseHint(parseExpression(funcName.hintToken.hintParams)));
+ callExpr.addHint(rangeAnn);
+ } catch (CompilationException e) {
+ {
+ SqlppParseException e2 = new SqlppParseException(getSourceLocation(funcName.hintToken), e.getMessage());
+ e2.initCause(e);
+ throw e2;
+ }
+ }
+ break;
}
}
FunctionMapUtil.normalizedListInputFunctions(callExpr);
diff --git a/asterixdb/asterix-maven-plugins/asterix-grammar-extension-maven-plugin/src/main/java/org/apache/asterix/extension/grammar/GrammarExtensionMojo.java b/asterixdb/asterix-maven-plugins/asterix-grammar-extension-maven-plugin/src/main/java/org/apache/asterix/extension/grammar/GrammarExtensionMojo.java
index 52b2be5..d47e9a6 100644
--- a/asterixdb/asterix-maven-plugins/asterix-grammar-extension-maven-plugin/src/main/java/org/apache/asterix/extension/grammar/GrammarExtensionMojo.java
+++ b/asterixdb/asterix-maven-plugins/asterix-grammar-extension-maven-plugin/src/main/java/org/apache/asterix/extension/grammar/GrammarExtensionMojo.java
@@ -25,6 +25,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.io.LineNumberReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
@@ -324,7 +325,7 @@
}
String innerBlock2String = null;
if (baseBlocks.second != null) {
- BufferedReader blockReader = stringToReader(baseBlocks.second);
+ LineNumberReader blockReader = stringToReader(baseBlocks.second);
Position blockPosition = new Position();
blockPosition.index = 0;
blockPosition.line = blockReader.readLine();
@@ -337,7 +338,8 @@
blockPosition.line = blockReader.readLine();
}
if (blockPosition.line == null) {
- throw new MojoExecutionException(errorMessage);
+ throw new MojoExecutionException(errorMessage + " at line " + blockReader.getLineNumber() + " of "
+ + StringUtils.abbreviate(baseBlocks.second, 100));
}
int block2Open = blockPosition.line.indexOf(OPEN_BRACE);
blockPosition.line = blockPosition.line.substring(block2Open + 1);
@@ -350,7 +352,8 @@
blockPosition.line = blockReader.readLine();
}
if (blockPosition.line == null) {
- throw new MojoExecutionException(errorMessage);
+ throw new MojoExecutionException(errorMessage + " at line " + blockReader.getLineNumber() + " of "
+ + StringUtils.abbreviate(baseBlocks.second, 100));
}
int innerBlock1Open = blockPosition.line.indexOf(OPEN_PAREN);
writer.write(" ");
@@ -372,7 +375,8 @@
}
int innerBlock2Open = blockPosition.line.indexOf(OPEN_BRACE);
if (innerBlock2Open < 0) {
- throw new MojoExecutionException(errorMessage);
+ throw new MojoExecutionException(errorMessage + " at line " + blockReader.getLineNumber() + " of "
+ + StringUtils.abbreviate(baseBlocks.second, 100));
}
blockPosition.index = innerBlock2Open;
readBlock(blockReader, OPEN_BRACE, CLOSE_BRACE, blockPosition);
@@ -989,9 +993,9 @@
}
}
- private BufferedReader stringToReader(String aString) {
+ private LineNumberReader stringToReader(String aString) {
InputStream is = new ByteArrayInputStream(aString.getBytes(StandardCharsets.UTF_8));
- return new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
+ return new LineNumberReader(new InputStreamReader(is, StandardCharsets.UTF_8));
}
private File prepareOutputFile() throws MojoExecutionException {
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java
index 7f50cab..268a9c0 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java
@@ -180,6 +180,16 @@
}
@Override
+ public boolean isDataverseNotEmpty(MetadataTransactionContext ctx, DataverseName dataverseName)
+ throws AlgebricksException {
+ try {
+ return metadataNode.isDataverseNotEmpty(ctx.getTxnId(), dataverseName);
+ } catch (RemoteException e) {
+ throw new MetadataException(ErrorCode.REMOTE_EXCEPTION_WHEN_CALLING_METADATA_NODE, e);
+ }
+ }
+
+ @Override
public List<Dataverse> getDataverses(MetadataTransactionContext ctx) throws AlgebricksException {
try {
return metadataNode.getDataverses(ctx.getTxnId());
@@ -566,7 +576,7 @@
public Function getFunction(MetadataTransactionContext ctx, FunctionSignature functionSignature)
throws AlgebricksException {
// First look in the context to see if this transaction created the
- // requested dataset itself (but the dataset is still uncommitted).
+ // requested function itself (but the function is still uncommitted).
Function function = ctx.getFunction(functionSignature);
if (function != null) {
// Don't add this dataverse to the cache, since it is still
@@ -974,6 +984,30 @@
}
@Override
+ public void updateFunction(MetadataTransactionContext ctx, Function function) throws AlgebricksException {
+ try {
+ metadataNode.updateFunction(ctx.getTxnId(), function);
+ } catch (RemoteException e) {
+ throw new MetadataException(ErrorCode.REMOTE_EXCEPTION_WHEN_CALLING_METADATA_NODE, e);
+ }
+ // reflect the function into the cache
+ ctx.dropFunction(function.getSignature());
+ ctx.addFunction(function);
+ }
+
+ @Override
+ public void updateDatatype(MetadataTransactionContext ctx, Datatype datatype) throws AlgebricksException {
+ try {
+ metadataNode.updateDatatype(ctx.getTxnId(), datatype);
+ } catch (RemoteException e) {
+ throw new MetadataException(ErrorCode.REMOTE_EXCEPTION_WHEN_CALLING_METADATA_NODE, e);
+ }
+ // reflect the datatype into the cache
+ ctx.dropDataDatatype(datatype.getDataverseName(), datatype.getDatatypeName());
+ ctx.addDatatype(datatype);
+ }
+
+ @Override
public <T extends IExtensionMetadataEntity> void addEntity(MetadataTransactionContext mdTxnCtx, T entity)
throws AlgebricksException {
try {
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
index d5d181f..88098f8 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
@@ -86,6 +86,7 @@
import org.apache.asterix.metadata.entitytupletranslators.NodeTupleTranslator;
import org.apache.asterix.metadata.entitytupletranslators.SynonymTupleTranslator;
import org.apache.asterix.metadata.utils.DatasetUtil;
+import org.apache.asterix.metadata.utils.TypeUtil;
import org.apache.asterix.metadata.valueextractors.MetadataEntityValueExtractor;
import org.apache.asterix.metadata.valueextractors.TupleCopyValueExtractor;
import org.apache.asterix.om.base.AInt32;
@@ -433,15 +434,12 @@
// Insert into the 'function' dataset.
FunctionTupleTranslator tupleReaderWriter =
tupleTranslatorProvider.getFunctionTupleTranslator(txnId, this, true);
-
ITupleReference functionTuple = tupleReaderWriter.getTupleFromMetadataEntity(function);
insertTupleIntoIndex(txnId, MetadataPrimaryIndexes.FUNCTION_DATASET, functionTuple);
-
} catch (HyracksDataException e) {
if (e.getComponent().equals(ErrorCode.HYRACKS) && e.getErrorCode() == ErrorCode.DUPLICATE_KEY) {
- throw new AlgebricksException("A function with this name " + function.getName() + " and arity "
- + function.getArity() + " already exists in dataverse '" + function.getDataverseName() + "'.",
- e);
+ throw new AlgebricksException("A function with this name " + function.getSignature()
+ + " already exists in dataverse '" + function.getDataverseName() + "'.", e);
} else {
throw new AlgebricksException(e);
}
@@ -547,8 +545,7 @@
// As a side effect, acquires an S lock on the 'Function' dataset on behalf of txnId.
List<Function> dataverseFunctions = getDataverseFunctions(txnId, dataverseName);
for (Function function : dataverseFunctions) {
- dropFunction(txnId, new FunctionSignature(dataverseName, function.getName(), function.getArity()),
- true);
+ dropFunction(txnId, function.getSignature(), true);
}
// Drop all adapters in this dataverse.
@@ -596,6 +593,18 @@
}
@Override
+ public boolean isDataverseNotEmpty(TxnId txnId, DataverseName dataverseName) throws AlgebricksException {
+ return !getDataverseDatatypes(txnId, dataverseName).isEmpty()
+ || !getDataverseDatasets(txnId, dataverseName).isEmpty()
+ || !getDataverseLibraries(txnId, dataverseName).isEmpty()
+ || !getDataverseAdapters(txnId, dataverseName).isEmpty()
+ || !getDataverseFunctions(txnId, dataverseName).isEmpty()
+ || !getDataverseFeedPolicies(txnId, dataverseName).isEmpty()
+ || !getDataverseFeeds(txnId, dataverseName).isEmpty()
+ || !getDataverseSynonyms(txnId, dataverseName).isEmpty();
+ }
+
+ @Override
public void dropDataset(TxnId txnId, DataverseName dataverseName, String datasetName) throws AlgebricksException {
dropDataset(txnId, dataverseName, datasetName, false);
}
@@ -709,9 +718,14 @@
@Override
public void dropDatatype(TxnId txnId, DataverseName dataverseName, String datatypeName) throws AlgebricksException {
+ dropDatatype(txnId, dataverseName, datatypeName, false);
+ }
- confirmDatatypeIsUnused(txnId, dataverseName, datatypeName);
-
+ private void dropDatatype(TxnId txnId, DataverseName dataverseName, String datatypeName, boolean force)
+ throws AlgebricksException {
+ if (!force) {
+ confirmDatatypeIsUnused(txnId, dataverseName, datatypeName);
+ }
// Delete the datatype entry, including all it's nested anonymous types.
try {
ITupleReference searchKey = createTuple(dataverseName, datatypeName);
@@ -876,16 +890,7 @@
}
public List<Function> getAllFunctions(TxnId txnId) throws AlgebricksException {
- try {
- FunctionTupleTranslator tupleReaderWriter =
- tupleTranslatorProvider.getFunctionTupleTranslator(txnId, this, false);
- IValueExtractor<Function> valueExtractor = new MetadataEntityValueExtractor<>(tupleReaderWriter);
- List<Function> results = new ArrayList<>();
- searchIndex(txnId, MetadataPrimaryIndexes.FUNCTION_DATASET, null, valueExtractor, results);
- return results;
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
+ return getFunctionsImpl(txnId, null);
}
public List<Datatype> getAllDatatypes(TxnId txnId) throws AlgebricksException {
@@ -937,15 +942,16 @@
continue;
}
if (set.getItemTypeDataverseName().equals(dataverseName)) {
- throw new AlgebricksException(
- "Cannot drop dataverse. Type " + dataverseName + "." + set.getItemTypeName()
- + " used by dataset " + set.getDataverseName() + "." + set.getDatasetName());
+ throw new AlgebricksException("Cannot drop dataverse. Type "
+ + TypeUtil.getFullyQualifiedDisplayName(set.getItemTypeDataverseName(), set.getItemTypeName())
+ + " used by dataset " + DatasetUtil.getFullyQualifiedDisplayName(set));
}
if (set.getMetaItemTypeDataverseName() != null
&& set.getMetaItemTypeDataverseName().equals(dataverseName)) {
- throw new AlgebricksException(
- "Cannot drop dataverse. Type " + dataverseName + "." + set.getMetaItemTypeName()
- + " used by dataset " + set.getDataverseName() + "." + set.getDatasetName());
+ throw new AlgebricksException("Cannot drop dataverse. Type "
+ + TypeUtil.getFullyQualifiedDisplayName(set.getMetaItemTypeDataverseName(),
+ set.getMetaItemTypeName())
+ + " used by dataset " + DatasetUtil.getFullyQualifiedDisplayName(set));
}
}
@@ -959,24 +965,22 @@
}
for (Triple<DataverseName, String, String> datasetDependency : function.getDependencies().get(0)) {
if (datasetDependency.first.equals(dataverseName)) {
- throw new AlgebricksException("Cannot drop dataverse. Function " + function.getDataverseName() + "."
- + function.getName() + "@" + function.getArity() + " depends on dataset "
- + datasetDependency.first + "." + datasetDependency.second);
+ throw new AlgebricksException("Cannot drop dataverse. Function " + function.getSignature()
+ + " depends on dataset " + DatasetUtil.getFullyQualifiedDisplayName(datasetDependency.first,
+ datasetDependency.second));
}
}
for (Triple<DataverseName, String, String> functionDependency : function.getDependencies().get(1)) {
if (functionDependency.first.equals(dataverseName)) {
- throw new AlgebricksException(
- "Cannot drop dataverse. Function " + function.getDataverseName() + "." + function.getName()
- + "@" + function.getArity() + " depends on function " + functionDependency.first
- + "." + functionDependency.second + "@" + functionDependency.third);
+ throw new AlgebricksException("Cannot drop dataverse. Function " + function.getSignature()
+ + " depends on function " + new FunctionSignature(functionDependency.first,
+ functionDependency.second, Integer.parseInt(functionDependency.third)));
}
}
for (Triple<DataverseName, String, String> type : function.getDependencies().get(2)) {
if (type.first.equals(dataverseName)) {
- throw new AlgebricksException(
- "Cannot drop dataverse. Function " + function.getDataverseName() + "." + function.getName()
- + "@" + function.getArity() + " depends on type " + type.first + "." + type.second);
+ throw new AlgebricksException("Cannot drop dataverse. Function " + function.getSignature()
+ + " depends on type " + TypeUtil.getFullyQualifiedDisplayName(type.first, type.second));
}
}
}
@@ -990,10 +994,9 @@
}
for (FunctionSignature functionSignature : feedConnection.getAppliedFunctions()) {
if (dataverseName.equals(functionSignature.getDataverseName())) {
- throw new AlgebricksException("Cannot drop dataverse. Feed connection "
- + feedConnection.getDataverseName() + "." + feedConnection.getFeedName()
- + " depends on function " + functionSignature.getDataverseName() + "."
- + functionSignature.getName() + "@" + functionSignature.getArity());
+ throw new AlgebricksException(
+ "Cannot drop dataverse. Feed connection " + feedConnection.getDataverseName() + "."
+ + feedConnection.getFeedName() + " depends on function " + functionSignature);
}
}
}
@@ -1007,8 +1010,8 @@
if (functionalDependency.first.equals(signature.getDataverseName())
&& functionalDependency.second.equals(signature.getName())
&& functionalDependency.third.equals(Integer.toString(signature.getArity()))) {
- throw new AlgebricksException("Cannot drop function " + signature + " being used by function "
- + function.getDataverseName() + "." + function.getName() + "@" + function.getArity());
+ throw new AlgebricksException(
+ "Cannot drop function " + signature + " being used by function " + function.getSignature());
}
}
}
@@ -1032,8 +1035,7 @@
if (datasetDependency.first.equals(dataverseName) && datasetDependency.second.equals(datasetName)) {
throw new AlgebricksException("Cannot drop dataset "
+ DatasetUtil.getFullyQualifiedDisplayName(dataverseName, datasetName)
- + " being used by function " + function.getDataverseName() + "." + function.getName() + "@"
- + function.getArity());
+ + " being used by function " + function.getSignature());
}
}
}
@@ -1049,10 +1051,10 @@
throws AlgebricksException {
List<Function> functions = getAllFunctions(txnId);
for (Function function : functions) {
- if (libraryName.equals(function.getLibrary()) && dataverseName.equals(function.getDataverseName())) {
- throw new AlgebricksException(
- "Cannot drop library " + dataverseName + '.' + libraryName + " being used by funciton "
- + function.getDataverseName() + '.' + function.getName() + '@' + function.getArity());
+ if (libraryName.equals(function.getLibraryName())
+ && dataverseName.equals(function.getLibraryDataverseName())) {
+ throw new AlgebricksException("Cannot drop library " + dataverseName + '.' + libraryName
+ + " being used by funciton " + function.getSignature());
}
}
}
@@ -1062,7 +1064,7 @@
List<DatasourceAdapter> adapters = getAllAdapters(txnId);
for (DatasourceAdapter adapter : adapters) {
if (libraryName.equals(adapter.getLibraryName())
- && adapter.getAdapterIdentifier().getDataverseName().equals(dataverseName)) {
+ && dataverseName.equals(adapter.getLibraryDataverseName())) {
throw new AlgebricksException("Cannot drop library " + dataverseName + '.' + libraryName
+ " being used by adapter " + adapter.getAdapterIdentifier().getDataverseName() + '.'
+ adapter.getAdapterIdentifier().getName());
@@ -1083,8 +1085,9 @@
List<Dataset> datasets = getAllDatasets(txnId);
for (Dataset set : datasets) {
if (set.getItemTypeName().equals(datatypeName) && set.getItemTypeDataverseName().equals(dataverseName)) {
- throw new AlgebricksException("Cannot drop type " + dataverseName + "." + datatypeName
- + " being used by dataset " + set.getDataverseName() + "." + set.getDatasetName());
+ throw new AlgebricksException(
+ "Cannot drop type " + TypeUtil.getFullyQualifiedDisplayName(dataverseName, datatypeName)
+ + " being used by dataset " + DatasetUtil.getFullyQualifiedDisplayName(set));
}
}
}
@@ -1106,8 +1109,9 @@
}
AbstractComplexType recType = (AbstractComplexType) dataType.getDatatype();
if (recType.containsType(typeToBeDropped)) {
- throw new AlgebricksException("Cannot drop type " + dataverseName + "." + datatypeName
- + " being used by type " + dataverseName + "." + recType.getTypeName());
+ throw new AlgebricksException("Cannot drop type "
+ + TypeUtil.getFullyQualifiedDisplayName(dataverseName, datatypeName) + " being used by type "
+ + TypeUtil.getFullyQualifiedDisplayName(dataverseName, recType.getTypeName()));
}
}
}
@@ -1119,9 +1123,9 @@
for (Function function : functions) {
for (Triple<DataverseName, String, String> datasetDependency : function.getDependencies().get(2)) {
if (datasetDependency.first.equals(dataverseName) && datasetDependency.second.equals(dataTypeName)) {
- throw new AlgebricksException("Cannot drop type " + dataverseName + "." + dataTypeName
- + " is being used by function " + function.getDataverseName() + "." + function.getName()
- + "@" + function.getArity());
+ throw new AlgebricksException(
+ "Cannot drop type " + TypeUtil.getFullyQualifiedDisplayName(dataverseName, dataTypeName)
+ + " is being used by function " + function.getSignature());
}
}
}
@@ -1240,27 +1244,18 @@
@Override
public Function getFunction(TxnId txnId, FunctionSignature functionSignature) throws AlgebricksException {
- try {
- ITupleReference searchKey = createTuple(functionSignature.getDataverseName(), functionSignature.getName(),
- Integer.toString(functionSignature.getArity()));
- FunctionTupleTranslator tupleReaderWriter =
- tupleTranslatorProvider.getFunctionTupleTranslator(txnId, this, false);
- List<Function> results = new ArrayList<>();
- IValueExtractor<Function> valueExtractor = new MetadataEntityValueExtractor<>(tupleReaderWriter);
- searchIndex(txnId, MetadataPrimaryIndexes.FUNCTION_DATASET, searchKey, valueExtractor, results);
- if (results.isEmpty()) {
- return null;
- }
- return results.get(0);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
+ List<Function> functions = getFunctionsImpl(txnId, createTuple(functionSignature.getDataverseName(),
+ functionSignature.getName(), Integer.toString(functionSignature.getArity())));
+ return functions.isEmpty() ? null : functions.get(0);
}
@Override
public List<Function> getDataverseFunctions(TxnId txnId, DataverseName dataverseName) throws AlgebricksException {
+ return getFunctionsImpl(txnId, createTuple(dataverseName));
+ }
+
+ private List<Function> getFunctionsImpl(TxnId txnId, ITupleReference searchKey) throws AlgebricksException {
try {
- ITupleReference searchKey = createTuple(dataverseName);
FunctionTupleTranslator tupleReaderWriter =
tupleTranslatorProvider.getFunctionTupleTranslator(txnId, this, false);
List<Function> results = new ArrayList<>();
@@ -1282,25 +1277,19 @@
if (!force) {
confirmFunctionCanBeDeleted(txnId, functionSignature);
}
- Function function = getFunction(txnId, functionSignature);
- if (function == null) {
- throw new AlgebricksException(
- "Cannot drop function '" + functionSignature.toString() + "' because it doesn't exist.");
- }
try {
// Delete entry from the 'function' dataset.
ITupleReference searchKey = createTuple(functionSignature.getDataverseName(), functionSignature.getName(),
Integer.toString(functionSignature.getArity()));
- // Searches the index for the tuple to be deleted. Acquires an S
- // lock on the 'function' dataset.
+ // Searches the index for the tuple to be deleted. Acquires an S lock on the 'function' dataset.
ITupleReference functionTuple =
getTupleToBeDeleted(txnId, MetadataPrimaryIndexes.FUNCTION_DATASET, searchKey);
deleteTupleFromIndex(txnId, MetadataPrimaryIndexes.FUNCTION_DATASET, functionTuple);
} catch (HyracksDataException e) {
if (e.getComponent().equals(ErrorCode.HYRACKS)
&& e.getErrorCode() == ErrorCode.UPDATE_OR_DELETE_NON_EXISTENT_KEY) {
- throw new AlgebricksException("There is no function with the name " + functionSignature.getName()
- + " and arity " + functionSignature.getArity(), e);
+ throw new AlgebricksException(
+ "Cannot drop function '" + functionSignature + "' because it doesn't exist", e);
} else {
throw new AlgebricksException(e);
}
@@ -1648,7 +1637,6 @@
LibraryTupleTranslator tupleReaderWriter = tupleTranslatorProvider.getLibraryTupleTranslator(true);
ITupleReference libraryTuple = tupleReaderWriter.getTupleFromMetadataEntity(library);
insertTupleIntoIndex(txnId, MetadataPrimaryIndexes.LIBRARY_DATASET, libraryTuple);
-
} catch (HyracksDataException e) {
if (e.getComponent().equals(ErrorCode.HYRACKS) && e.getErrorCode() == ErrorCode.DUPLICATE_KEY) {
throw new AlgebricksException("A library with this name " + library.getDataverseName()
@@ -1661,13 +1649,18 @@
@Override
public void dropLibrary(TxnId txnId, DataverseName dataverseName, String libraryName) throws AlgebricksException {
- confirmLibraryCanBeDeleted(txnId, dataverseName, libraryName);
+ dropLibrary(txnId, dataverseName, libraryName, false);
+ }
+ private void dropLibrary(TxnId txnId, DataverseName dataverseName, String libraryName, boolean force)
+ throws AlgebricksException {
+ if (!force) {
+ confirmLibraryCanBeDeleted(txnId, dataverseName, libraryName);
+ }
try {
// Delete entry from the 'Library' dataset.
ITupleReference searchKey = createTuple(dataverseName, libraryName);
- // Searches the index for the tuple to be deleted. Acquires an S
- // lock on the 'Adapter' dataset.
+ // Searches the index for the tuple to be deleted. Acquires an S lock on the 'Library' dataset.
ITupleReference datasetTuple =
getTupleToBeDeleted(txnId, MetadataPrimaryIndexes.LIBRARY_DATASET, searchKey);
deleteTupleFromIndex(txnId, MetadataPrimaryIndexes.LIBRARY_DATASET, datasetTuple);
@@ -2088,40 +2081,41 @@
// This method will delete previous entry of the dataset and insert the new one
// Delete entry from the 'datasets' dataset.
ITupleReference searchKey = createTuple(dataset.getDataverseName(), dataset.getDatasetName());
- // Searches the index for the tuple to be deleted. Acquires an S
- // lock on the 'dataset' dataset.
+ // Searches the index for the tuple to be deleted. Acquires an S lock on the 'dataset' dataset.
ITupleReference datasetTuple =
getTupleToBeDeleted(txnId, MetadataPrimaryIndexes.DATASET_DATASET, searchKey);
deleteTupleFromIndex(txnId, MetadataPrimaryIndexes.DATASET_DATASET, datasetTuple);
- // Previous tuple was deleted
// Insert into the 'dataset' dataset.
DatasetTupleTranslator tupleReaderWriter = tupleTranslatorProvider.getDatasetTupleTranslator(true);
datasetTuple = tupleReaderWriter.getTupleFromMetadataEntity(dataset);
insertTupleIntoIndex(txnId, MetadataPrimaryIndexes.DATASET_DATASET, datasetTuple);
} catch (HyracksDataException e) {
- throw new AlgebricksException(e);
+ if (e.getComponent().equals(ErrorCode.HYRACKS)
+ && e.getErrorCode() == ErrorCode.UPDATE_OR_DELETE_NON_EXISTENT_KEY) {
+ throw new AlgebricksException(
+ "Cannot drop dataset '" + dataset.getDatasetName() + "' because it doesn't exist");
+ } else {
+ throw new AlgebricksException(e);
+ }
}
}
@Override
public void updateLibrary(TxnId txnId, Library library) throws AlgebricksException {
- try {
- // This method will delete previous entry of the library and insert the new one
- // Delete entry from the 'library' dataset.
- ITupleReference searchKey = createTuple(library.getDataverseName(), library.getName());
- // Searches the index for the tuple to be deleted. Acquires an S
- // lock on the 'library' dataset.
- ITupleReference libraryTuple =
- getTupleToBeDeleted(txnId, MetadataPrimaryIndexes.LIBRARY_DATASET, searchKey);
- deleteTupleFromIndex(txnId, MetadataPrimaryIndexes.LIBRARY_DATASET, libraryTuple);
- // Previous tuple was deleted
- // Insert into the 'library' dataset.
- LibraryTupleTranslator tupleReaderWriter = tupleTranslatorProvider.getLibraryTupleTranslator(true);
- libraryTuple = tupleReaderWriter.getTupleFromMetadataEntity(library);
- insertTupleIntoIndex(txnId, MetadataPrimaryIndexes.LIBRARY_DATASET, libraryTuple);
- } catch (HyracksDataException e) {
- throw new AlgebricksException(e);
- }
+ dropLibrary(txnId, library.getDataverseName(), library.getName(), true);
+ addLibrary(txnId, library);
+ }
+
+ @Override
+ public void updateFunction(TxnId txnId, Function function) throws AlgebricksException {
+ dropFunction(txnId, function.getSignature(), true);
+ addFunction(txnId, function);
+ }
+
+ @Override
+ public void updateDatatype(TxnId txnId, Datatype datatype) throws AlgebricksException {
+ dropDatatype(txnId, datatype.getDataverseName(), datatype.getDatatypeName(), true);
+ addDatatype(txnId, datatype);
}
public ITxnIdFactory getTxnIdFactory() {
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataTransactionContext.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataTransactionContext.java
index 90fe3a5..0bf8c3d 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataTransactionContext.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataTransactionContext.java
@@ -158,14 +158,15 @@
}
public void dropFunction(FunctionSignature signature) {
- Function function = new Function(signature, null, null, null, null, null, null, null, false, false, null, null);
+ Function function =
+ new Function(signature, null, null, null, null, null, null, null, null, null, false, false, null, null);
droppedCache.addFunctionIfNotExists(function);
logAndApply(new MetadataLogicalOperation(function, false));
}
public void dropAdapter(DataverseName dataverseName, String adapterName) {
AdapterIdentifier adapterIdentifier = new AdapterIdentifier(dataverseName, adapterName);
- DatasourceAdapter adapter = new DatasourceAdapter(adapterIdentifier, null, null);
+ DatasourceAdapter adapter = new DatasourceAdapter(adapterIdentifier, null, null, null, null);
droppedCache.addAdapterIfNotExists(adapter);
logAndApply(new MetadataLogicalOperation(adapter, false));
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java
index 09a4a94..1646a93 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataManager.java
@@ -150,6 +150,16 @@
void dropDataverse(MetadataTransactionContext ctx, DataverseName dataverseName) throws AlgebricksException;
/**
+ * Returns {@code true} if the dataverse with given name is not empty
+ * (i.e. contains any datatypes, datasets or any other entities).
+ * @param ctx
+ * MetadataTransactionContext of an active metadata transaction.
+ * @param dataverseName
+ * Name of the dataverse.
+ */
+ boolean isDataverseNotEmpty(MetadataTransactionContext ctx, DataverseName dataverseName) throws AlgebricksException;
+
+ /**
* Inserts a new dataset into the metadata.
*
* @param ctx
@@ -713,6 +723,24 @@
void updateLibrary(MetadataTransactionContext ctx, Library library) throws AlgebricksException;
/**
+ * @param mdTxnCtx
+ * MetadataTransactionContext of an active metadata transaction.
+ * @param function
+ * An instance of type Function that represents the function being
+ * updated
+ */
+ void updateFunction(MetadataTransactionContext mdTxnCtx, Function function) throws AlgebricksException;
+
+ /**
+ * @param mdTxnCtx
+ * MetadataTransactionContext of an active metadata transaction.
+ * @param datatype
+ * An instance of type Datatype that represents the datatype being
+ * updated
+ */
+ void updateDatatype(MetadataTransactionContext mdTxnCtx, Datatype datatype) throws AlgebricksException;
+
+ /**
* Add an extension entity to its extension dataset under the ongoing metadata
* transaction
*
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java
index 0330008..bca4171 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataNode.java
@@ -140,14 +140,24 @@
*
* @param txnId
* A globally unique id for an active metadata transaction.
- * @return A list of dataset instances.
+ * @param dataverseName
+ * Name of the dataverse to drop.
* @throws AlgebricksException
* For example, if the dataverse does not exist.
- * @throws RemoteException
*/
void dropDataverse(TxnId txnId, DataverseName dataverseName) throws AlgebricksException, RemoteException;
/**
+ * Returns {@code true} if given dataverse is not empty
+ * (i.e. contains any datatypes, datasets or any other entities).
+ * @param txnId
+ * A globally unique id for an active metadata transaction.
+ * @param dataverseName
+ * Name of the dataverse
+ */
+ boolean isDataverseNotEmpty(TxnId txnId, DataverseName dataverseName) throws AlgebricksException, RemoteException;
+
+ /**
* Inserts a new dataset into the metadata, acquiring local locks on behalf of
* the given transaction id.
*
@@ -814,6 +824,28 @@
void updateLibrary(TxnId txnId, Library library) throws AlgebricksException, RemoteException;
/**
+ * update an existing function in the metadata, acquiring local locks on behalf
+ * of the given transaction id.
+ *
+ * @param txnId
+ * A globally unique id for an active metadata transaction.
+ * @param function
+ * updated Function instance.
+ */
+ void updateFunction(TxnId txnId, Function function) throws AlgebricksException, RemoteException;
+
+ /**
+ * update an existing datatype in the metadata, acquiring local locks on behalf
+ * of the given transaction id.
+ *
+ * @param txnId
+ * A globally unique id for an active metadata transaction.
+ * @param datatype
+ * updated Datatype instance.
+ */
+ void updateDatatype(TxnId txnId, Datatype datatype) throws AlgebricksException, RemoteException;
+
+ /**
* Adds an extension entity under the ongoing transaction job id
*
* @param txnId
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
index d85422d..cf089fa 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
@@ -211,7 +211,7 @@
for (int i = 0; i < indexes.length; i++) {
IDatasetDetails id = new InternalDatasetDetails(FileStructure.BTREE, PartitioningStrategy.HASH,
indexes[i].getPartitioningExpr(), indexes[i].getPartitioningExpr(), null,
- indexes[i].getPartitioningExprType(), false, null);
+ indexes[i].getPartitioningExprType(), false, null, null);
MetadataManager.INSTANCE.addDataset(mdTxnCtx,
new Dataset(indexes[i].getDataverseName(), indexes[i].getIndexedDatasetName(),
indexes[i].getDataverseName(), indexes[i].getPayloadRecordType().getTypeName(),
@@ -318,7 +318,7 @@
String adapterName =
((ITypedAdapterFactory) (Class.forName(adapterFactoryClassName).newInstance())).getAlias();
return new DatasourceAdapter(new AdapterIdentifier(MetadataConstants.METADATA_DATAVERSE_NAME, adapterName),
- adapterFactoryClassName, IDataSourceAdapter.AdapterType.INTERNAL);
+ IDataSourceAdapter.AdapterType.INTERNAL, adapterFactoryClassName, null, null);
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
throw new MetadataException("Unable to instantiate builtin Adapter", e);
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java
index a1d6743..8430f44 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataRecordTypes.java
@@ -75,6 +75,7 @@
public static final String FIELD_NAME_IS_PRIMARY = "IsPrimary";
public static final String FIELD_NAME_KIND = "Kind";
public static final String FIELD_NAME_LANGUAGE = "Language";
+ public static final String FIELD_NAME_LIBRARY_DATAVERSE_NAME = "LibraryDataverseName";
public static final String FIELD_NAME_LIBRARY_NAME = "LibraryName";
public static final String FIELD_NAME_LAST_REFRESH_TIME = "LastRefreshTime";
public static final String FIELD_NAME_METATYPE_DATAVERSE_NAME = "MetatypeDataverseName";
@@ -340,11 +341,15 @@
public static final int FUNCTION_ARECORD_FUNCTION_KIND_FIELD_INDEX = 7;
public static final int FUNCTION_ARECORD_FUNCTION_DEPENDENCIES_FIELD_INDEX = 8;
//open types
- public static final String FUNCTION_ARECORD_FUNCTION_WITHPARAM_LIST_NAME = "WithParams";
- public static final String FUNCTION_ARECORD_FUNCTION_LIBRARY_FIELD_NAME = "Library";
+ public static final String FUNCTION_ARECORD_FUNCTION_RESOURCES_FIELD_NAME = "Resources";
public static final String FUNCTION_ARECORD_FUNCTION_NULLCALL_FIELD_NAME = "NullCall";
public static final String FUNCTION_ARECORD_FUNCTION_DETERMINISTIC_FIELD_NAME = "Deterministic";
public static final String FUNCTION_ARECORD_FUNCTION_PARAMTYPES_FIELD_NAME = "ParamTypes";
+ public static final String FUNCTION_ARECORD_FUNCTION_EXTERNAL_IDENTIFIER_FIELD_NAME = "ExternalIdentifier";
+ @Deprecated // back-compat
+ public static final String FUNCTION_ARECORD_FUNCTION_LIBRARY_FIELD_NAME = "Library";
+ @Deprecated // back-compat
+ public static final String FUNCTION_ARECORD_FUNCTION_WITHPARAMS_FIELD_NAME = "WithParams";
public static final ARecordType FUNCTION_RECORDTYPE = createRecordType(
// RecordTypeName
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java
index 93927dd..1303b21 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java
@@ -52,11 +52,19 @@
public abstract class FunctionDataSource extends DataSource {
- public FunctionDataSource(DataSourceId id, INodeDomain domain) throws AlgebricksException {
+ protected final FunctionIdentifier functionId;
+
+ public FunctionDataSource(DataSourceId id, FunctionIdentifier functionId, INodeDomain domain)
+ throws AlgebricksException {
super(id, RecordUtil.FULLY_OPEN_RECORD_TYPE, null, DataSource.Type.FUNCTION, domain);
+ this.functionId = functionId;
schemaTypes = new IAType[] { itemType };
}
+ public FunctionIdentifier getFunctionId() {
+ return functionId;
+ }
+
@Override
public boolean isScanAccessPathALeaf() {
return true;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
index 8597a21..d84cade 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
@@ -29,7 +29,6 @@
import java.util.Map;
import java.util.Optional;
import java.util.Set;
-import java.util.function.Function;
import org.apache.asterix.common.cluster.IClusterStateManager;
import org.apache.asterix.common.config.DatasetConfig.DatasetType;
@@ -41,6 +40,7 @@
import org.apache.asterix.common.dataflow.LSMTreeInsertDeleteOperatorDescriptor;
import org.apache.asterix.common.exceptions.AsterixException;
import org.apache.asterix.common.external.IDataSourceAdapter;
+import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.common.metadata.LockList;
import org.apache.asterix.common.storage.ICompressionManager;
@@ -81,6 +81,7 @@
import org.apache.asterix.metadata.entities.Feed;
import org.apache.asterix.metadata.entities.FeedConnection;
import org.apache.asterix.metadata.entities.FeedPolicyEntity;
+import org.apache.asterix.metadata.entities.Function;
import org.apache.asterix.metadata.entities.Index;
import org.apache.asterix.metadata.entities.Synonym;
import org.apache.asterix.metadata.feeds.FeedMetadataUtil;
@@ -130,12 +131,14 @@
import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.IMissingWriterFactory;
import org.apache.hyracks.api.dataflow.value.IResultSerializerFactory;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
import org.apache.hyracks.api.dataflow.value.ITypeTraits;
import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
import org.apache.hyracks.api.exceptions.IWarningCollector;
import org.apache.hyracks.api.io.FileSplit;
+import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
import org.apache.hyracks.api.job.JobSpecification;
import org.apache.hyracks.api.result.IResultMetadata;
import org.apache.hyracks.api.result.ResultSetId;
@@ -180,7 +183,7 @@
private boolean blockingOperatorDisabled = false;
public static MetadataProvider create(ICcApplicationContext appCtx, Dataverse defaultDataverse) {
- Function<ICcApplicationContext, IMetadataProvider<?, ?>> factory =
+ java.util.function.Function<ICcApplicationContext, IMetadataProvider<?, ?>> factory =
((ICCExtensionManager) appCtx.getExtensionManager()).getMetadataProviderFactory();
MetadataProvider mp = factory != null ? (MetadataProvider) factory.apply(appCtx) : new MetadataProvider(appCtx);
mp.setDefaultDataverse(defaultDataverse);
@@ -443,7 +446,14 @@
@Override
public IFunctionInfo lookupFunction(FunctionIdentifier fid) {
- return BuiltinFunctions.lookupFunction(fid);
+ return BuiltinFunctions.getBuiltinFunctionInfo(fid);
+ }
+
+ public Function lookupUserDefinedFunction(FunctionSignature signature) throws AlgebricksException {
+ if (signature.getDataverseName() == null) {
+ return null;
+ }
+ return MetadataManager.INSTANCE.getFunction(mdTxnCtx, signature);
}
@Override
@@ -718,9 +728,10 @@
public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getDeleteRuntime(
IDataSource<DataSourceId> dataSource, IOperatorSchema propagatedSchema, IVariableTypeEnvironment typeEnv,
List<LogicalVariable> keys, LogicalVariable payload, List<LogicalVariable> additionalNonKeyFields,
- RecordDescriptor inputRecordDesc, JobGenContext context, JobSpecification spec) throws AlgebricksException {
+ List<LogicalVariable> additionalNonFilteringFields, RecordDescriptor inputRecordDesc, JobGenContext context,
+ JobSpecification spec) throws AlgebricksException {
return getInsertOrDeleteRuntime(IndexOperation.DELETE, dataSource, propagatedSchema, keys, payload,
- additionalNonKeyFields, inputRecordDesc, context, spec, false, null);
+ additionalNonKeyFields, inputRecordDesc, context, spec, false, additionalNonFilteringFields);
}
@Override
@@ -955,22 +966,33 @@
}
// set the record permutation
fieldPermutation[i++] = inputSchema.findVariable(payload);
- // set the filters' permutations.
- if (numFilterFields > 0) {
- int idx = inputSchema.findVariable(filterKeys.get(0));
- fieldPermutation[i++] = idx;
- }
+ // set the meta record permutation
if (additionalNonFilterFields != null) {
for (LogicalVariable var : additionalNonFilterFields) {
int idx = inputSchema.findVariable(var);
fieldPermutation[i++] = idx;
}
}
- return DatasetUtil.createPrimaryIndexUpsertOp(spec, this, dataset, recordDesc, fieldPermutation,
+
+ // set the filters' permutations.
+ if (numFilterFields > 0) {
+ int idx = inputSchema.findVariable(filterKeys.get(0));
+ fieldPermutation[i++] = idx;
+ }
+
+ return createPrimaryIndexUpsertOp(spec, this, dataset, recordDesc, fieldPermutation,
context.getMissingWriterFactory());
}
+ protected Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> createPrimaryIndexUpsertOp(JobSpecification spec,
+ MetadataProvider metadataProvider, Dataset dataset, RecordDescriptor inputRecordDesc,
+ int[] fieldPermutation, IMissingWriterFactory missingWriterFactory) throws AlgebricksException {
+ // this can be used by extensions to pick up their own operators
+ return DatasetUtil.createPrimaryIndexUpsertOp(spec, this, dataset, inputRecordDesc, fieldPermutation,
+ missingWriterFactory);
+ }
+
public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> buildExternalDatasetDataScannerRuntime(
JobSpecification jobSpec, IAType itemType, ITypedAdapterFactory adapterFactory) throws AlgebricksException {
if (itemType.getTypeTag() != ATypeTag.OBJECT) {
@@ -1064,12 +1086,7 @@
i++;
}
fieldPermutation[i++] = propagatedSchema.findVariable(payload);
- int[] filterFields = new int[numFilterFields];
- if (numFilterFields > 0) {
- int idx = propagatedSchema.findVariable(additionalNonKeyFields.get(0));
- fieldPermutation[i++] = idx;
- filterFields[0] = idx;
- }
+
if (additionalNonFilteringFields != null) {
for (LogicalVariable variable : additionalNonFilteringFields) {
int idx = propagatedSchema.findVariable(variable);
@@ -1077,6 +1094,13 @@
}
}
+ int[] filterFields = new int[numFilterFields];
+ if (numFilterFields > 0) {
+ int idx = propagatedSchema.findVariable(additionalNonKeyFields.get(0));
+ fieldPermutation[i++] = idx;
+ filterFields[0] = idx;
+ }
+
Index primaryIndex = MetadataManager.INSTANCE.getIndex(mdTxnCtx, dataset.getDataverseName(),
dataset.getDatasetName(), dataset.getDatasetName());
Pair<IFileSplitProvider, AlgebricksPartitionConstraint> splitsAndConstraint =
@@ -1112,17 +1136,34 @@
pkidfh = new IndexDataflowHelperFactory(storageComponentProvider.getStorageManager(),
primaryKeySplitsAndConstraint.first);
}
- op = new LSMPrimaryInsertOperatorDescriptor(spec, inputRecordDesc, fieldPermutation, idfh, pkidfh,
+ op = createLSMPrimaryInsertOperatorDescriptor(spec, inputRecordDesc, fieldPermutation, idfh, pkidfh,
modificationCallbackFactory, searchCallbackFactory, numKeys, filterFields);
} else {
- op = new LSMTreeInsertDeleteOperatorDescriptor(spec, inputRecordDesc, fieldPermutation, indexOp, idfh,
+ op = createLSMTreeInsertDeleteOperatorDescriptor(spec, inputRecordDesc, fieldPermutation, indexOp, idfh,
null, true, modificationCallbackFactory);
}
}
return new Pair<>(op, splitsAndConstraint.second);
}
+ protected LSMPrimaryInsertOperatorDescriptor createLSMPrimaryInsertOperatorDescriptor(JobSpecification spec,
+ RecordDescriptor inputRecordDesc, int[] fieldPermutation, IIndexDataflowHelperFactory idfh,
+ IIndexDataflowHelperFactory pkidfh, IModificationOperationCallbackFactory modificationCallbackFactory,
+ ISearchOperationCallbackFactory searchCallbackFactory, int numKeys, int[] filterFields) {
+ // this can be used by extensions to pick up their own operators
+ return new LSMPrimaryInsertOperatorDescriptor(spec, inputRecordDesc, fieldPermutation, idfh, pkidfh,
+ modificationCallbackFactory, searchCallbackFactory, numKeys, filterFields);
+ }
+
+ protected LSMTreeInsertDeleteOperatorDescriptor createLSMTreeInsertDeleteOperatorDescriptor(
+ IOperatorDescriptorRegistry spec, RecordDescriptor outRecDesc, int[] fieldPermutation, IndexOperation op,
+ IIndexDataflowHelperFactory indexHelperFactory, ITupleFilterFactory tupleFilterFactory, boolean isPrimary,
+ IModificationOperationCallbackFactory modCallbackFactory) {
+ return new LSMTreeInsertDeleteOperatorDescriptor(spec, outRecDesc, fieldPermutation, op, indexHelperFactory,
+ tupleFilterFactory, isPrimary, modCallbackFactory);
+ }
+
private Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getIndexInsertOrDeleteOrUpsertRuntime(
IndexOperation indexOp, IDataSourceIndex<String, DataSourceId> dataSourceIndex,
IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IVariableTypeEnvironment typeEnv,
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Dataset.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Dataset.java
index cc4bb09..2171974 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Dataset.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Dataset.java
@@ -62,6 +62,7 @@
import org.apache.asterix.metadata.utils.InvertedIndexResourceFactoryProvider;
import org.apache.asterix.metadata.utils.MetadataUtil;
import org.apache.asterix.metadata.utils.RTreeResourceFactoryProvider;
+import org.apache.asterix.metadata.utils.TypeUtil;
import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.IAType;
@@ -424,6 +425,14 @@
// #. finally, delete the dataset.
MetadataManager.INSTANCE.dropDataset(mdTxnCtx.getValue(), dataverseName, datasetName);
+ // drop inline types
+ if (TypeUtil.isDatasetInlineTypeName(this, recordTypeDataverseName, recordTypeName)) {
+ MetadataManager.INSTANCE.dropDatatype(mdTxnCtx.getValue(), recordTypeDataverseName, recordTypeName);
+ }
+ if (hasMetaPart() && TypeUtil.isDatasetInlineTypeName(this, metaTypeDataverseName, metaTypeName)) {
+ MetadataManager.INSTANCE.dropDatatype(mdTxnCtx.getValue(), metaTypeDataverseName, metaTypeName);
+ }
+
// Drops the associated nodegroup if it is no longer used by any other dataset.
if (dropCorrespondingNodeGroup) {
metadataProvider.getApplicationContext().getMetadataLockManager()
@@ -455,9 +464,9 @@
public IResourceFactory getResourceFactory(MetadataProvider mdProvider, Index index, ARecordType recordType,
ARecordType metaType, ILSMMergePolicyFactory mergePolicyFactory, Map<String, String> mergePolicyProperties)
throws AlgebricksException {
- ITypeTraits[] filterTypeTraits = DatasetUtil.computeFilterTypeTraits(this, recordType);
+ ITypeTraits[] filterTypeTraits = DatasetUtil.computeFilterTypeTraits(this, recordType, metaType);
IBinaryComparatorFactory[] filterCmpFactories = DatasetUtil.computeFilterBinaryComparatorFactories(this,
- recordType, mdProvider.getStorageComponentProvider().getComparatorFactoryProvider());
+ recordType, metaType, mdProvider.getStorageComponentProvider().getComparatorFactoryProvider());
IResourceFactory resourceFactory;
switch (index.getIndexType()) {
case BTREE:
@@ -699,6 +708,15 @@
return ((InternalDatasetDetails) getDatasetDetails()).getPartitioningKey();
}
+ /**
+ @return the array of type traits that contains the following type traits in order
+ 1) the primary keys,
+ 2) the query record type,
+ 3) the metadata type trait if the dataset has metadata
+ */
+ // ToDo: returning such an array can be confusing because it may contain the metadata type or not.
+ // instead of returning an array, create a new class that contains 1) a type trait array for the primary keys,
+ // 2) the record type trait, and 3) an nullable meta type trait
public ITypeTraits[] getPrimaryTypeTraits(MetadataProvider metadataProvider, ARecordType recordType,
ARecordType metaType) throws AlgebricksException {
IStorageComponentProvider storageComponentProvider = metadataProvider.getStorageComponentProvider();
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/DatasourceAdapter.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/DatasourceAdapter.java
index 5e0ece3..eedfe8d 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/DatasourceAdapter.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/DatasourceAdapter.java
@@ -19,32 +19,27 @@
package org.apache.asterix.metadata.entities;
import org.apache.asterix.common.external.IDataSourceAdapter.AdapterType;
+import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.external.dataset.adapter.AdapterIdentifier;
import org.apache.asterix.metadata.MetadataCache;
import org.apache.asterix.metadata.api.IMetadataEntity;
public class DatasourceAdapter implements IMetadataEntity<DatasourceAdapter> {
- private static final long serialVersionUID = 2L;
+ private static final long serialVersionUID = 3L;
private final AdapterIdentifier adapterIdentifier;
private final String classname;
private final AdapterType type;
- //TODO:also need libraryDataverse
+ private final DataverseName libraryDataverseName;
private final String libraryName;
- public DatasourceAdapter(AdapterIdentifier adapterIdentifier, String classname, AdapterType type) {
+ public DatasourceAdapter(AdapterIdentifier adapterIdentifier, AdapterType type, String classname,
+ DataverseName libraryDataverseName, String libraryName) {
this.adapterIdentifier = adapterIdentifier;
- this.classname = classname;
this.type = type;
- this.libraryName = null;
- }
-
- public DatasourceAdapter(AdapterIdentifier adapterIdentifier, String classname, AdapterType type,
- String libraryName) {
- this.adapterIdentifier = adapterIdentifier;
this.classname = classname;
- this.type = type;
+ this.libraryDataverseName = libraryDataverseName;
this.libraryName = libraryName;
}
@@ -70,6 +65,10 @@
return type;
}
+ public DataverseName getLibraryDataverseName() {
+ return libraryDataverseName;
+ }
+
public String getLibraryName() {
return libraryName;
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Function.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Function.java
index 542bbaf..968cf14 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Function.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Function.java
@@ -40,15 +40,18 @@
private final String body;
private final String language;
private final String kind;
- private final String library;
+ private final DataverseName libraryDataverseName;
+ private final String libraryName;
+ private final List<String> externalIdentifier;
private final Boolean deterministic; // null for SQL++ and AQL functions
private final Boolean nullCall; // null for SQL++ and AQL functions
private final Map<String, String> resources;
private final List<List<Triple<DataverseName, String, String>>> dependencies;
public Function(FunctionSignature signature, List<String> paramNames, List<TypeSignature> paramTypes,
- TypeSignature returnType, String functionBody, String functionKind, String language, String library,
- Boolean nullCall, Boolean deterministic, Map<String, String> resources,
+ TypeSignature returnType, String functionBody, String functionKind, String language,
+ DataverseName libraryDataverseName, String libraryName, List<String> externalIdentifier, Boolean nullCall,
+ Boolean deterministic, Map<String, String> resources,
List<List<Triple<DataverseName, String, String>>> dependencies) {
this.signature = signature;
this.paramNames = paramNames;
@@ -57,7 +60,9 @@
this.returnType = returnType;
this.language = language;
this.kind = functionKind;
- this.library = library;
+ this.libraryDataverseName = libraryDataverseName;
+ this.libraryName = libraryName;
+ this.externalIdentifier = externalIdentifier;
this.nullCall = nullCall;
this.deterministic = deterministic;
this.resources = resources == null ? Collections.emptyMap() : resources;
@@ -86,18 +91,25 @@
return paramNames;
}
+ /**
+ * @return {@code null} for non-external functions;
+ * for external function the list may contain {@code null} which means 'any' type
+ */
public List<TypeSignature> getParameterTypes() {
return paramTypes;
}
- public String getFunctionBody() {
- return body;
- }
-
+ /**
+ * @return {@code null} for non-external functions
+ */
public TypeSignature getReturnType() {
return returnType;
}
+ public String getFunctionBody() {
+ return body;
+ }
+
public String getLanguage() {
return language;
}
@@ -107,11 +119,19 @@
}
public boolean isExternal() {
- return library != null;
+ return externalIdentifier != null;
}
- public String getLibrary() {
- return library;
+ public DataverseName getLibraryDataverseName() {
+ return libraryDataverseName;
+ }
+
+ public String getLibraryName() {
+ return libraryName;
+ }
+
+ public List<String> getExternalIdentifier() {
+ return externalIdentifier;
}
public Boolean getNullCall() {
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/InternalDatasetDetails.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/InternalDatasetDetails.java
index e4f8948..c82b86a 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/InternalDatasetDetails.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/InternalDatasetDetails.java
@@ -22,6 +22,7 @@
import java.io.DataOutput;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import org.apache.asterix.builders.IARecordBuilder;
import org.apache.asterix.builders.OrderedListBuilder;
@@ -61,15 +62,18 @@
private final List<List<String>> primaryKeys;
private final List<IAType> primaryKeyTypes;
private final boolean autogenerated;
+ private final Integer filterSourceIndicator;
private final List<String> filterField;
private final List<Integer> keySourceIndicators;
public static final String FILTER_FIELD_NAME = "FilterField";
+ public static final String FILTER_SOURCE_INDICATOR_FIELD_NAME = "FilterSourceIndicator";
public static final String KEY_FILD_SOURCE_INDICATOR_FIELD_NAME = "KeySourceIndicator";
public InternalDatasetDetails(FileStructure fileStructure, PartitioningStrategy partitioningStrategy,
List<List<String>> partitioningKey, List<List<String>> primaryKey, List<Integer> keyFieldIndicators,
- List<IAType> primaryKeyType, boolean autogenerated, List<String> filterField) {
+ List<IAType> primaryKeyType, boolean autogenerated, Integer filterSourceIndicator,
+ List<String> filterField) {
this.fileStructure = fileStructure;
this.partitioningStrategy = partitioningStrategy;
this.partitioningKeys = partitioningKey;
@@ -84,7 +88,14 @@
this.keySourceIndicators = keyFieldIndicators;
this.primaryKeyTypes = primaryKeyType;
this.autogenerated = autogenerated;
- this.filterField = filterField;
+ if (filterSourceIndicator != null) {
+ // to make sure filter source indicator and filter field is consistent
+ this.filterSourceIndicator = filterSourceIndicator;
+ this.filterField = Objects.requireNonNull(filterField);
+ } else {
+ this.filterSourceIndicator = null;
+ this.filterField = null;
+ }
}
public List<List<String>> getPartitioningKey() {
@@ -119,6 +130,10 @@
return filterField;
}
+ public Integer getFilterSourceIndicator() {
+ return filterSourceIndicator;
+ }
+
@Override
public DatasetType getDatasetType() {
return DatasetType.INTERNAL;
@@ -209,10 +224,21 @@
fieldValue);
// write filter fields if any
+ Integer filterSourceIndicator = getFilterSourceIndicator();
List<String> filterField = getFilterField();
if (filterField != null) {
- listBuilder.reset(heterogeneousList);
ArrayBackedValueStorage nameValue = new ArrayBackedValueStorage();
+ // write filter source indicator
+ nameValue.reset();
+ aString.setValue(FILTER_SOURCE_INDICATOR_FIELD_NAME);
+ stringSerde.serialize(aString, nameValue.getDataOutput());
+ fieldValue.reset();
+ aInt8.setValue(filterSourceIndicator.byteValue());
+ int8Serde.serialize(aInt8, fieldValue.getDataOutput());
+ internalRecordBuilder.addField(nameValue, fieldValue);
+
+ // write filter fields
+ listBuilder.reset(heterogeneousList);
nameValue.reset();
aString.setValue(FILTER_FIELD_NAME);
stringSerde.serialize(aString, nameValue.getDataOutput());
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/AbstractTupleTranslator.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/AbstractTupleTranslator.java
index 16137ef..a35246f 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/AbstractTupleTranslator.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/AbstractTupleTranslator.java
@@ -32,6 +32,7 @@
import org.apache.asterix.om.base.AInt32;
import org.apache.asterix.om.base.AInt64;
import org.apache.asterix.om.base.AMutableString;
+import org.apache.asterix.om.base.ANull;
import org.apache.asterix.om.base.ARecord;
import org.apache.asterix.om.base.AString;
import org.apache.asterix.om.types.ARecordType;
@@ -51,6 +52,9 @@
public abstract class AbstractTupleTranslator<T> implements IMetadataEntityTupleTranslator<T> {
@SuppressWarnings("unchecked")
+ protected final ISerializerDeserializer<ANull> nullSerde =
+ SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.ANULL);
+ @SuppressWarnings("unchecked")
protected final ISerializerDeserializer<AString> stringSerde =
SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.ASTRING);
@SuppressWarnings("unchecked")
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
index f0567a4..e4069c2 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
@@ -151,11 +151,25 @@
.getValueByPos(MetadataRecordTypes.INTERNAL_DETAILS_ARECORD_AUTOGENERATED_FIELD_INDEX))
.getBoolean();
+ // check if there is a filter source indicator
+ Integer filterSourceIndicator = null;
+ int filterSourceIndicatorPos = datasetDetailsRecord.getType()
+ .getFieldIndex(InternalDatasetDetails.FILTER_SOURCE_INDICATOR_FIELD_NAME);
+ if (filterSourceIndicatorPos >= 0) {
+ filterSourceIndicator =
+ (int) ((AInt8) datasetDetailsRecord.getValueByPos(filterSourceIndicatorPos)).getByteValue();
+ }
+
// Check if there is a filter field.
List<String> filterField = null;
int filterFieldPos =
datasetDetailsRecord.getType().getFieldIndex(InternalDatasetDetails.FILTER_FIELD_NAME);
if (filterFieldPos >= 0) {
+ // backward compatibility, if a dataset contains filter field but no filter source indicator
+ // we set the indicator to 0 by default.
+ if (filterSourceIndicator == null) {
+ filterSourceIndicator = 0;
+ }
filterField = new ArrayList<>();
cursor = ((AOrderedList) datasetDetailsRecord.getValueByPos(filterFieldPos)).getCursor();
while (cursor.next()) {
@@ -180,7 +194,8 @@
}
datasetDetails = new InternalDatasetDetails(fileStructure, partitioningStrategy, partitioningKey,
- partitioningKey, keyFieldSourceIndicator, partitioningKeyType, autogenerated, filterField);
+ partitioningKey, keyFieldSourceIndicator, partitioningKeyType, autogenerated,
+ filterSourceIndicator, filterField);
break;
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasourceAdapterTupleTranslator.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasourceAdapterTupleTranslator.java
index 6279451..5327b22 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasourceAdapterTupleTranslator.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasourceAdapterTupleTranslator.java
@@ -56,12 +56,21 @@
((AString) adapterRecord.getValueByPos(MetadataRecordTypes.DATASOURCE_ADAPTER_ARECORD_TYPE_FIELD_INDEX))
.getStringValue());
+ DataverseName libraryDataverseName = null;
+ String libraryName = null;
int libraryNameIdx = adapterRecord.getType().getFieldIndex(MetadataRecordTypes.FIELD_NAME_LIBRARY_NAME);
- String libraryName =
- libraryNameIdx >= 0 ? ((AString) adapterRecord.getValueByPos(libraryNameIdx)).getStringValue() : null;
+ if (libraryNameIdx >= 0) {
+ libraryName = ((AString) adapterRecord.getValueByPos(libraryNameIdx)).getStringValue();
+ int libraryDataverseNameIdx =
+ adapterRecord.getType().getFieldIndex(MetadataRecordTypes.FIELD_NAME_LIBRARY_DATAVERSE_NAME);
+ libraryDataverseName = libraryDataverseNameIdx >= 0
+ ? DataverseName.createFromCanonicalForm(
+ ((AString) adapterRecord.getValueByPos(libraryDataverseNameIdx)).getStringValue())
+ : dataverseName;
+ }
- return new DatasourceAdapter(new AdapterIdentifier(dataverseName, adapterName), classname, adapterType,
- libraryName);
+ return new DatasourceAdapter(new AdapterIdentifier(dataverseName, adapterName), adapterType, classname,
+ libraryDataverseName, libraryName);
}
@Override
@@ -132,6 +141,15 @@
if (adapter.getLibraryName() == null) {
return;
}
+
+ fieldName.reset();
+ aString.setValue(MetadataRecordTypes.FIELD_NAME_LIBRARY_DATAVERSE_NAME);
+ stringSerde.serialize(aString, fieldName.getDataOutput());
+ fieldValue.reset();
+ aString.setValue(adapter.getLibraryDataverseName().getCanonicalForm());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ recordBuilder.addField(fieldName, fieldValue);
+
fieldName.reset();
aString.setValue(MetadataRecordTypes.FIELD_NAME_LIBRARY_NAME);
stringSerde.serialize(aString, fieldName.getDataOutput());
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/FunctionTupleTranslator.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/FunctionTupleTranslator.java
index 7135305..dddd28e 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/FunctionTupleTranslator.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/FunctionTupleTranslator.java
@@ -20,20 +20,25 @@
package org.apache.asterix.metadata.entitytupletranslators;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_LIBRARY_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_RETURN_TYPE_DATAVERSE_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_TYPE;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FIELD_NAME_VALUE;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_DETERMINISTIC_FIELD_NAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_EXTERNAL_IDENTIFIER_FIELD_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_LIBRARY_FIELD_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_NULLCALL_FIELD_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_PARAMTYPES_FIELD_NAME;
-import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_WITHPARAM_LIST_NAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_RESOURCES_FIELD_NAME;
+import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_WITHPARAMS_FIELD_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.PROPERTIES_NAME_FIELD_NAME;
import static org.apache.asterix.metadata.bootstrap.MetadataRecordTypes.PROPERTIES_VALUE_FIELD_NAME;
import java.io.DataOutput;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -41,6 +46,9 @@
import org.apache.asterix.builders.IARecordBuilder;
import org.apache.asterix.builders.OrderedListBuilder;
import org.apache.asterix.builders.RecordBuilder;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.functions.ExternalFunctionLanguage;
import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.common.transactions.TxnId;
@@ -49,17 +57,19 @@
import org.apache.asterix.metadata.bootstrap.MetadataRecordTypes;
import org.apache.asterix.metadata.entities.BuiltinTypeMap;
import org.apache.asterix.metadata.entities.Function;
-import org.apache.asterix.metadata.utils.TypeUtil;
import org.apache.asterix.om.base.ABoolean;
+import org.apache.asterix.om.base.ANull;
import org.apache.asterix.om.base.AOrderedList;
import org.apache.asterix.om.base.ARecord;
import org.apache.asterix.om.base.AString;
import org.apache.asterix.om.base.IACursor;
+import org.apache.asterix.om.base.IAObject;
import org.apache.asterix.om.pointables.base.DefaultOpenFieldType;
import org.apache.asterix.om.types.AOrderedListType;
import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.TypeSignature;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.common.utils.Triple;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
@@ -93,7 +103,7 @@
}
}
- protected Function createMetadataEntityFromARecord(ARecord functionRecord) {
+ protected Function createMetadataEntityFromARecord(ARecord functionRecord) throws AlgebricksException {
String dataverseCanonicalName =
((AString) functionRecord.getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_DATAVERSENAME_FIELD_INDEX))
.getStringValue();
@@ -111,12 +121,17 @@
paramNames.add(((AString) paramNameCursor.get()).getStringValue());
}
- List<TypeSignature> paramTypes = getParamTypes(functionRecord, arity, dataverseName);
+ List<TypeSignature> paramTypes = getParamTypes(functionRecord, dataverseName);
+ TypeSignature returnType;
String returnTypeName = ((AString) functionRecord
.getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_RETURN_TYPE_FIELD_INDEX)).getStringValue();
- String returnTypeDataverseNameCanonical = getString(functionRecord, FIELD_NAME_RETURN_TYPE_DATAVERSE_NAME);
- TypeSignature returnType = getTypeSignature(returnTypeName, returnTypeDataverseNameCanonical, dataverseName);
+ if (returnTypeName.isEmpty()) {
+ returnType = null; // == any
+ } else {
+ String returnTypeDataverseNameCanonical = getString(functionRecord, FIELD_NAME_RETURN_TYPE_DATAVERSE_NAME);
+ returnType = getTypeSignature(returnTypeName, returnTypeDataverseNameCanonical, dataverseName);
+ }
String definition = ((AString) functionRecord
.getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_DEFINITION_FIELD_INDEX)).getStringValue();
@@ -125,11 +140,41 @@
String functionKind =
((AString) functionRecord.getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_KIND_FIELD_INDEX))
.getStringValue();
- String functionLibrary = getString(functionRecord, FUNCTION_ARECORD_FUNCTION_LIBRARY_FIELD_NAME);
- Boolean nullCall = getBoolean(functionRecord, FUNCTION_ARECORD_FUNCTION_NULLCALL_FIELD_NAME);
- Boolean deterministic = getBoolean(functionRecord, FUNCTION_ARECORD_FUNCTION_DETERMINISTIC_FIELD_NAME);
- Map<String, String> resources = getResources(functionRecord);
+ Map<String, String> resources = null;
+ DataverseName libraryDataverseName = null;
+ String libraryName;
+ List<String> externalIdentifier = null;
+ AOrderedList externalIdentifierList =
+ getOrderedList(functionRecord, FUNCTION_ARECORD_FUNCTION_EXTERNAL_IDENTIFIER_FIELD_NAME);
+ if (externalIdentifierList != null) {
+ externalIdentifier = new ArrayList<>(externalIdentifierList.size());
+ IACursor externalIdentifierCursor = externalIdentifierList.getCursor();
+ while (externalIdentifierCursor.next()) {
+ externalIdentifierList.add(externalIdentifierCursor.get());
+ }
+ libraryName = getString(functionRecord, MetadataRecordTypes.FIELD_NAME_LIBRARY_NAME);
+ String libraryDataverseCanonicalName = getString(functionRecord, FIELD_NAME_LIBRARY_DATAVERSE_NAME);
+ libraryDataverseName = DataverseName.createFromCanonicalForm(libraryDataverseCanonicalName);
+ resources = getResources(functionRecord, FUNCTION_ARECORD_FUNCTION_RESOURCES_FIELD_NAME);
+ definition = null;
+ } else {
+ // back-compat. get external identifier from function body
+ libraryName = getString(functionRecord, FUNCTION_ARECORD_FUNCTION_LIBRARY_FIELD_NAME);
+ if (libraryName != null) {
+ libraryDataverseName = dataverseName;
+ externalIdentifier =
+ decodeExternalIdentifierBackCompat(definition, ExternalFunctionLanguage.valueOf(language));
+ resources = getResources(functionRecord, FUNCTION_ARECORD_FUNCTION_WITHPARAMS_FIELD_NAME);
+ }
+ }
+
+ Boolean nullCall = null;
+ Boolean deterministic = null;
+ if (externalIdentifier != null) {
+ nullCall = getBoolean(functionRecord, FUNCTION_ARECORD_FUNCTION_NULLCALL_FIELD_NAME);
+ deterministic = getBoolean(functionRecord, FUNCTION_ARECORD_FUNCTION_DETERMINISTIC_FIELD_NAME);
+ }
IACursor dependenciesCursor = ((AOrderedList) functionRecord
.getValueByPos(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_DEPENDENCIES_FIELD_INDEX)).getCursor();
@@ -148,35 +193,46 @@
FunctionSignature signature = new FunctionSignature(dataverseName, functionName, arity);
return new Function(signature, paramNames, paramTypes, returnType, definition, functionKind, language,
- functionLibrary, nullCall, deterministic, resources, dependencies);
+ libraryDataverseName, libraryName, externalIdentifier, nullCall, deterministic, resources,
+ dependencies);
}
- private List<TypeSignature> getParamTypes(ARecord functionRecord, int arity, DataverseName functionDataverseName) {
- List<TypeSignature> paramTypes = new ArrayList<>(arity);
+ private List<TypeSignature> getParamTypes(ARecord functionRecord, DataverseName functionDataverseName) {
ARecordType functionRecordType = functionRecord.getType();
int paramTypesFieldIdx = functionRecordType.getFieldIndex(FUNCTION_ARECORD_FUNCTION_PARAMTYPES_FIELD_NAME);
- if (paramTypesFieldIdx >= 0) {
- IACursor cursor = ((AOrderedList) functionRecord.getValueByPos(paramTypesFieldIdx)).getCursor();
- while (cursor.next()) {
- ARecord paramTypeRecord = (ARecord) cursor.get();
- String paramTypeName = getString(paramTypeRecord, FIELD_NAME_TYPE);
- String paramTypeDataverseNameCanonical = getString(paramTypeRecord, FIELD_NAME_DATAVERSE_NAME);
- TypeSignature paramType =
- getTypeSignature(paramTypeName, paramTypeDataverseNameCanonical, functionDataverseName);
- paramTypes.add(paramType);
+ if (paramTypesFieldIdx < 0) {
+ return null;
+ }
+
+ AOrderedList paramTypeList = (AOrderedList) functionRecord.getValueByPos(paramTypesFieldIdx);
+ List<TypeSignature> paramTypes = new ArrayList<>(paramTypeList.size());
+ IACursor cursor = paramTypeList.getCursor();
+ while (cursor.next()) {
+ IAObject paramTypeObject = cursor.get();
+ TypeSignature paramType;
+ switch (paramTypeObject.getType().getTypeTag()) {
+ case NULL:
+ paramType = null; // == any
+ break;
+ case OBJECT:
+ ARecord paramTypeRecord = (ARecord) paramTypeObject;
+ String paramTypeName = getString(paramTypeRecord, FIELD_NAME_TYPE);
+ String paramTypeDataverseNameCanonical = getString(paramTypeRecord, FIELD_NAME_DATAVERSE_NAME);
+ paramType = getTypeSignature(paramTypeName, paramTypeDataverseNameCanonical, functionDataverseName);
+ break;
+ default:
+ throw new IllegalStateException(); //TODO:FIXME
}
- } else {
- for (int i = 0; i < arity; i++) {
- paramTypes.add(TypeUtil.ANY_TYPE_SIGNATURE);
- }
+ paramTypes.add(paramType);
}
return paramTypes;
}
private TypeSignature getTypeSignature(String typeName, String typeDataverseNameCanonical,
DataverseName functionDataverseName) {
+ // back-compat: handle "any"
if (BuiltinType.ANY.getTypeName().equals(typeName)) {
- return TypeUtil.ANY_TYPE_SIGNATURE;
+ return null; // == any
}
BuiltinType builtinType = BuiltinTypeMap.getBuiltinType(typeName);
if (builtinType != null) {
@@ -201,11 +257,12 @@
return new Triple<>(dataverseName, second, third);
}
- private Map<String, String> getResources(ARecord functionRecord) {
- Map<String, String> adaptorConfiguration = new HashMap<>();
+ private Map<String, String> getResources(ARecord functionRecord, String resourcesFieldName) {
+ Map<String, String> adaptorConfiguration = null;
final ARecordType functionType = functionRecord.getType();
- final int functionLibraryIdx = functionType.getFieldIndex(FUNCTION_ARECORD_FUNCTION_WITHPARAM_LIST_NAME);
+ final int functionLibraryIdx = functionType.getFieldIndex(resourcesFieldName);
if (functionLibraryIdx >= 0) {
+ adaptorConfiguration = new HashMap<>();
IACursor cursor = ((AOrderedList) functionRecord.getValueByPos(functionLibraryIdx)).getCursor();
while (cursor.next()) {
ARecord field = (ARecord) cursor.get();
@@ -222,8 +279,8 @@
private String getString(ARecord aRecord, String fieldName) {
final ARecordType functionType = aRecord.getType();
- final int functionLibraryIdx = functionType.getFieldIndex(fieldName);
- return functionLibraryIdx >= 0 ? ((AString) aRecord.getValueByPos(functionLibraryIdx)).getStringValue() : null;
+ final int fieldIndex = functionType.getFieldIndex(fieldName);
+ return fieldIndex >= 0 ? ((AString) aRecord.getValueByPos(fieldIndex)).getStringValue() : null;
}
private Boolean getBoolean(ARecord aRecord, String fieldName) {
@@ -232,6 +289,12 @@
return fieldIndex >= 0 ? ((ABoolean) aRecord.getValueByPos(fieldIndex)).getBoolean() : null;
}
+ private AOrderedList getOrderedList(ARecord aRecord, String fieldName) {
+ final ARecordType aRecordType = aRecord.getType();
+ final int fieldIndex = aRecordType.getFieldIndex(fieldName);
+ return fieldIndex >= 0 ? ((AOrderedList) aRecord.getValueByPos(fieldIndex)) : null;
+ }
+
@Override
public ITupleReference getTupleFromMetadataEntity(Function function) throws HyracksDataException {
DataverseName dataverseName = function.getDataverseName();
@@ -288,14 +351,15 @@
// write field 4
// Note: return type's dataverse name is written later in the open part
+ TypeSignature returnType = function.getReturnType();
fieldValue.reset();
- aString.setValue(function.getReturnType().getName());
+ aString.setValue(returnType != null ? returnType.getName() : "");
stringSerde.serialize(aString, fieldValue.getDataOutput());
recordBuilder.addField(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_RETURN_TYPE_FIELD_INDEX, fieldValue);
// write field 5
fieldValue.reset();
- aString.setValue(function.getFunctionBody());
+ aString.setValue(function.isExternal() ? "" : function.getFunctionBody());
stringSerde.serialize(aString, fieldValue.getDataOutput());
recordBuilder.addField(MetadataRecordTypes.FUNCTION_ARECORD_FUNCTION_DEFINITION_FIELD_INDEX, fieldValue);
@@ -375,20 +439,28 @@
listBuilder.write(fieldValue.getDataOutput(), true);
fieldName.reset();
- aString.setValue(FUNCTION_ARECORD_FUNCTION_WITHPARAM_LIST_NAME);
+ aString.setValue(FUNCTION_ARECORD_FUNCTION_RESOURCES_FIELD_NAME);
stringSerde.serialize(aString, fieldName.getDataOutput());
recordBuilder.addField(fieldName, fieldValue);
}
protected void writeParameterTypes(Function function) throws HyracksDataException {
+ List<TypeSignature> parameterTypes = function.getParameterTypes();
+ if (parameterTypes == null) {
+ return;
+ }
OrderedListBuilder listBuilder = new OrderedListBuilder();
ArrayBackedValueStorage itemValue = new ArrayBackedValueStorage();
listBuilder.reset(DefaultOpenFieldType.NESTED_OPEN_AORDERED_LIST_TYPE);
- for (TypeSignature paramType : function.getParameterTypes()) {
+ for (TypeSignature paramType : parameterTypes) {
itemValue.reset();
- writeTypeRecord(paramType.getDataverseName(), paramType.getName(), function.getDataverseName(),
- itemValue.getDataOutput());
+ if (paramType == null) {
+ nullSerde.serialize(ANull.NULL, itemValue.getDataOutput());
+ } else {
+ writeTypeRecord(paramType.getDataverseName(), paramType.getName(), function.getDataverseName(),
+ itemValue.getDataOutput());
+ }
listBuilder.addItem(itemValue);
}
fieldValue.reset();
@@ -402,31 +474,59 @@
}
protected void writeLibrary(Function function) throws HyracksDataException {
- if (function.getLibrary() == null) {
+ if (!function.isExternal()) {
return;
}
+
fieldName.reset();
- aString.setValue(FUNCTION_ARECORD_FUNCTION_LIBRARY_FIELD_NAME);
+ aString.setValue(FIELD_NAME_LIBRARY_DATAVERSE_NAME);
stringSerde.serialize(aString, fieldName.getDataOutput());
fieldValue.reset();
- aString.setValue(function.getLibrary());
+ aString.setValue(function.getLibraryDataverseName().getCanonicalForm());
stringSerde.serialize(aString, fieldValue.getDataOutput());
recordBuilder.addField(fieldName, fieldValue);
+
+ fieldName.reset();
+ aString.setValue(MetadataRecordTypes.FIELD_NAME_LIBRARY_NAME);
+ stringSerde.serialize(aString, fieldName.getDataOutput());
+ fieldValue.reset();
+ aString.setValue(function.getLibraryName());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ recordBuilder.addField(fieldName, fieldValue);
+
+ fieldName.reset();
+ aString.setValue(FUNCTION_ARECORD_FUNCTION_EXTERNAL_IDENTIFIER_FIELD_NAME);
+ stringSerde.serialize(aString, fieldName.getDataOutput());
+ OrderedListBuilder listBuilder = new OrderedListBuilder();
+ ArrayBackedValueStorage itemValue = new ArrayBackedValueStorage();
+ listBuilder.reset(stringList);
+ for (String externalIdPart : function.getExternalIdentifier()) {
+ itemValue.reset();
+ aString.setValue(externalIdPart);
+ stringSerde.serialize(aString, itemValue.getDataOutput());
+ listBuilder.addItem(itemValue);
+ }
+ fieldValue.reset();
+ listBuilder.write(fieldValue.getDataOutput(), true);
+ recordBuilder.addField(fieldName, fieldValue);
}
protected void writeReturnTypeDataverseName(Function function) throws HyracksDataException {
- DataverseName returnTypeDataverseName = function.getReturnType().getDataverseName();
- boolean skipReturnTypeDataverseName =
- returnTypeDataverseName == null || returnTypeDataverseName.equals(function.getDataverseName());
- if (!skipReturnTypeDataverseName) {
- fieldName.reset();
- aString.setValue(FIELD_NAME_RETURN_TYPE_DATAVERSE_NAME);
- stringSerde.serialize(aString, fieldName.getDataOutput());
- fieldValue.reset();
- aString.setValue(returnTypeDataverseName.getCanonicalForm());
- stringSerde.serialize(aString, fieldValue.getDataOutput());
- recordBuilder.addField(fieldName, fieldValue);
+ TypeSignature returnType = function.getReturnType();
+ if (returnType == null) {
+ return;
}
+ DataverseName returnTypeDataverseName = returnType.getDataverseName();
+ if (returnTypeDataverseName == null || returnTypeDataverseName.equals(function.getDataverseName())) {
+ return;
+ }
+ fieldName.reset();
+ aString.setValue(FIELD_NAME_RETURN_TYPE_DATAVERSE_NAME);
+ stringSerde.serialize(aString, fieldName.getDataOutput());
+ fieldValue.reset();
+ aString.setValue(returnTypeDataverseName.getCanonicalForm());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ recordBuilder.addField(fieldName, fieldValue);
}
protected void writeNullCall(Function function) throws HyracksDataException {
@@ -520,4 +620,38 @@
}
return dependencySubnames;
}
-}
\ No newline at end of file
+
+ // back-compat
+ private static List<String> decodeExternalIdentifierBackCompat(String encodedValue,
+ ExternalFunctionLanguage language) throws AlgebricksException {
+ switch (language) {
+ case JAVA:
+ // input: class
+ //
+ // output:
+ // [0] = class
+ return Collections.singletonList(encodedValue);
+
+ case PYTHON:
+ // input:
+ // case 1 (method): package.module:class.method
+ // case 2 (function): package.module:function
+ //
+ // output:
+ // case 1:
+ // [0] = package.module
+ // [1] = class.method
+ // case 2:
+ // [0] = package.module
+ // [1] = function
+ int idx = encodedValue.lastIndexOf(':');
+ if (idx < 0) {
+ throw new AsterixException(ErrorCode.METADATA_ERROR, encodedValue);
+ }
+ return Arrays.asList(encodedValue.substring(0, idx), encodedValue.substring(idx + 1));
+
+ default:
+ throw new AsterixException(ErrorCode.METADATA_ERROR, language);
+ }
+ }
+}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/feeds/FeedMetadataUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/feeds/FeedMetadataUtil.java
index 466778c..d5e941f 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/feeds/FeedMetadataUtil.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/feeds/FeedMetadataUtil.java
@@ -170,8 +170,7 @@
private static ITypedAdapterFactory createExternalAdapterFactory(MetadataTransactionContext mdTxnCtx,
DatasourceAdapter adapterEntity, String adapterFactoryClassname)
throws AlgebricksException, RemoteException, HyracksDataException {
- //TODO:library dataverse must be explicitly specified in the adapter entity
- DataverseName libraryDataverse = adapterEntity.getAdapterIdentifier().getDataverseName();
+ DataverseName libraryDataverse = adapterEntity.getLibraryDataverseName();
String libraryName = adapterEntity.getLibraryName();
Library library = MetadataManager.INSTANCE.getLibrary(mdTxnCtx, libraryDataverse, libraryName);
if (library == null) {
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalFunctionCompilerUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalFunctionCompilerUtil.java
index 6c88621..029b13a 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalFunctionCompilerUtil.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalFunctionCompilerUtil.java
@@ -19,14 +19,13 @@
package org.apache.asterix.metadata.functions;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.functions.ExternalFunctionLanguage;
-import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.BuiltinTypeMap;
import org.apache.asterix.metadata.entities.Function;
@@ -37,6 +36,7 @@
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression.FunctionKind;
import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public class ExternalFunctionCompilerUtil {
@@ -63,31 +63,24 @@
private static IFunctionInfo getScalarFunctionInfo(MetadataProvider metadataProvider, Function function)
throws AlgebricksException {
- if (function.getDeterministic() == null) {
- throw new AsterixException(ErrorCode.METADATA_ERROR, "");
- }
- List<IAType> paramTypes = new ArrayList<>(function.getParameterTypes().size());
- for (TypeSignature ts : function.getParameterTypes()) {
- IAType paramType = resolveFunctionType(ts, metadataProvider);
- paramTypes.add(paramType);
- }
+ List<IAType> paramTypes = getParameterTypes(function, metadataProvider);
- IAType returnType = resolveFunctionType(function.getReturnType(), metadataProvider);
+ IAType returnType = getType(function.getReturnType(), metadataProvider);
IResultTypeComputer typeComputer = new ExternalTypeComputer(returnType, paramTypes);
- ExternalFunctionLanguage lang;
- try {
- lang = ExternalFunctionLanguage.valueOf(function.getLanguage());
- } catch (IllegalArgumentException e) {
- throw new AsterixException(ErrorCode.METADATA_ERROR, function.getLanguage());
- }
- List<String> externalIdentifier = decodeExternalIdentifier(lang, function.getFunctionBody());
+ ExternalFunctionLanguage lang = getExternalFunctionLanguage(function.getLanguage());
- return new ExternalScalarFunctionInfo(function.getSignature().createFunctionIdentifier(), returnType,
- externalIdentifier, lang, function.getLibrary(), paramTypes, function.getResources(),
- function.getDeterministic(), typeComputer);
+ Boolean deterministic = function.getDeterministic();
+ if (deterministic == null) {
+ // all external functions should store 'deterministic' property
+ throw new AsterixException(ErrorCode.METADATA_ERROR, function.getSignature().toString());
+ }
+
+ return new ExternalScalarFunctionInfo(function.getSignature().createFunctionIdentifier(), paramTypes,
+ returnType, typeComputer, lang, function.getLibraryDataverseName(), function.getLibraryName(),
+ function.getExternalIdentifier(), function.getResources(), deterministic);
}
private static IFunctionInfo getUnnestFunctionInfo(MetadataProvider metadataProvider, Function function) {
@@ -102,9 +95,41 @@
return null;
}
- private static IAType resolveFunctionType(TypeSignature typeSignature, MetadataProvider metadataProvider)
+ private static List<IAType> getParameterTypes(Function function, MetadataProvider metadataProvider)
throws AlgebricksException {
+ int arity = function.getArity();
+ if (arity == 0) {
+ return Collections.emptyList();
+ } else if (arity >= 0) {
+ List<IAType> types = new ArrayList<>(arity);
+ List<TypeSignature> typeSignatures = function.getParameterTypes();
+ if (typeSignatures != null) {
+ if (typeSignatures.size() != arity) {
+ throw new AsterixException(ErrorCode.METADATA_ERROR, function.getSignature().toString());
+ }
+ for (TypeSignature ts : typeSignatures) {
+ IAType paramType = getType(ts, metadataProvider);
+ types.add(paramType);
+ }
+ } else {
+ for (int i = 0; i < arity; i++) {
+ types.add(BuiltinType.ANY);
+ }
+ }
+ return types;
+ } else {
+ // we don't yet support variadic external functions
+ throw new AsterixException(ErrorCode.METADATA_ERROR, function.getSignature().toString());
+ }
+ }
+
+ private static IAType getType(TypeSignature typeSignature, MetadataProvider metadataProvider)
+ throws AlgebricksException {
+ if (typeSignature == null) {
+ return BuiltinType.ANY;
+ }
String typeName = typeSignature.getName();
+ // back-compat: handle "any"
if (BuiltinType.ANY.getTypeName().equals(typeName)) {
return BuiltinType.ANY;
}
@@ -115,79 +140,31 @@
return type;
}
- public static String encodeExternalIdentifier(FunctionSignature functionSignature,
- ExternalFunctionLanguage language, List<String> identList) throws AlgebricksException {
- switch (language) {
- case JAVA:
- // input:
- // [0] = package.class
- //
- // output: package.class
-
- return identList.get(0);
-
- case PYTHON:
- // input: either a method or a top-level function
- // [0] = package.module(:class)?
- // [1] = (function_or_method)? - if missing then defaults to declared function name
- //
- // output:
- // case 1 (method): package.module:class.method
- // case 2 (function): package.module:function
-
- String ident0 = identList.get(0);
- String ident1 = identList.size() > 1 ? identList.get(1) : functionSignature.getName();
- boolean classExists = ident0.indexOf(':') > 0;
- return ident0 + (classExists ? '.' : ':') + ident1;
-
- default:
- throw new AsterixException(ErrorCode.COMPILATION_ERROR, language);
+ public static ExternalFunctionLanguage getExternalFunctionLanguage(String language) throws AsterixException {
+ try {
+ return ExternalFunctionLanguage.valueOf(language);
+ } catch (IllegalArgumentException e) {
+ throw new AsterixException(ErrorCode.METADATA_ERROR, language);
}
}
- public static List<String> decodeExternalIdentifier(ExternalFunctionLanguage language, String encodedValue)
- throws AlgebricksException {
+ public static void validateExternalIdentifier(List<String> externalIdentifier, ExternalFunctionLanguage language,
+ SourceLocation sourceLoc) throws CompilationException {
+ int expectedSize;
switch (language) {
case JAVA:
- // input: class
- //
- // output:
- // [0] = class
- return Collections.singletonList(encodedValue);
-
+ expectedSize = 1;
+ break;
case PYTHON:
- // input:
- // case 1 (method): package.module:class.method
- // case 2 (function): package.module:function
- //
- // output:
- // case 1:
- // [0] = package.module
- // [1] = class
- // [2] = method
- // case 2:
- // [0] = package.module
- // [1] = function
-
- int d1 = encodedValue.indexOf(':');
- if (d1 <= 0) {
- throw new AsterixException(ErrorCode.COMPILATION_ERROR, encodedValue);
- }
- String moduleName = encodedValue.substring(0, d1);
- int d2 = encodedValue.lastIndexOf('.');
- if (d2 > d1) {
- // class.method
- String className = encodedValue.substring(d1 + 1, d2);
- String methodName = encodedValue.substring(d2 + 1);
- return Arrays.asList(moduleName, className, methodName);
- } else {
- // function
- String functionName = encodedValue.substring(d1 + 1);
- return Arrays.asList(moduleName, functionName);
- }
-
+ expectedSize = 2;
+ break;
default:
- throw new AsterixException(ErrorCode.COMPILATION_ERROR, language);
+ throw new CompilationException(ErrorCode.METADATA_ERROR, language.name());
+ }
+ int actualSize = externalIdentifier.size();
+ if (actualSize != expectedSize) {
+ throw new CompilationException(ErrorCode.INVALID_EXTERNAL_IDENTIFIER_SIZE, sourceLoc,
+ String.valueOf(actualSize), language.name());
}
}
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalScalarFunctionInfo.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalScalarFunctionInfo.java
index da28d18..854320a 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalScalarFunctionInfo.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalScalarFunctionInfo.java
@@ -22,6 +22,7 @@
import java.util.Map;
import org.apache.asterix.common.functions.ExternalFunctionLanguage;
+import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.om.functions.ExternalFunctionInfo;
import org.apache.asterix.om.typecomputer.base.IResultTypeComputer;
import org.apache.asterix.om.types.IAType;
@@ -30,19 +31,12 @@
public class ExternalScalarFunctionInfo extends ExternalFunctionInfo {
- private static final long serialVersionUID = 2L;
+ private static final long serialVersionUID = 3L;
- public ExternalScalarFunctionInfo(String namespace, String library, String name, int arity, IAType returnType,
- List<String> externalIdentifier, ExternalFunctionLanguage language, List<IAType> argumentTypes,
- Map<String, String> params, boolean deterministic, IResultTypeComputer rtc) {
- super(namespace, name, arity, FunctionKind.SCALAR, argumentTypes, returnType, rtc, language, library,
- externalIdentifier, params, deterministic);
- }
-
- public ExternalScalarFunctionInfo(FunctionIdentifier fid, IAType returnType, List<String> externalIdentifier,
- ExternalFunctionLanguage language, String library, List<IAType> argumentTypes, Map<String, String> params,
- boolean deterministic, IResultTypeComputer rtc) {
- super(fid, FunctionKind.SCALAR, argumentTypes, returnType, rtc, language, library, externalIdentifier, params,
- deterministic);
+ public ExternalScalarFunctionInfo(FunctionIdentifier fid, List<IAType> parameterTypes, IAType returnType,
+ IResultTypeComputer rtc, ExternalFunctionLanguage language, DataverseName libraryDataverseName,
+ String libraryName, List<String> externalIdentifier, Map<String, String> resources, boolean deterministic) {
+ super(fid, FunctionKind.SCALAR, parameterTypes, returnType, rtc, language, libraryDataverseName, libraryName,
+ externalIdentifier, resources, deterministic);
}
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
index 3b312bb..bf3f8cf 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
@@ -103,35 +103,43 @@
private DatasetUtil() {
}
+ public static Integer getFilterSourceIndicator(Dataset dataset) {
+ return ((InternalDatasetDetails) dataset.getDatasetDetails()).getFilterSourceIndicator();
+ }
+
public static List<String> getFilterField(Dataset dataset) {
return ((InternalDatasetDetails) dataset.getDatasetDetails()).getFilterField();
}
public static IBinaryComparatorFactory[] computeFilterBinaryComparatorFactories(Dataset dataset,
- ARecordType itemType, IBinaryComparatorFactoryProvider comparatorFactoryProvider)
+ ARecordType recordType, ARecordType metaType, IBinaryComparatorFactoryProvider comparatorFactoryProvider)
throws AlgebricksException {
if (dataset.getDatasetType() == DatasetType.EXTERNAL) {
return null;
}
+ Integer filterFieldSourceIndicator = getFilterSourceIndicator(dataset);
List<String> filterField = getFilterField(dataset);
if (filterField == null) {
return null;
}
IBinaryComparatorFactory[] bcfs = new IBinaryComparatorFactory[1];
+ ARecordType itemType = filterFieldSourceIndicator == 0 ? recordType : metaType;
IAType type = itemType.getSubFieldType(filterField);
bcfs[0] = comparatorFactoryProvider.getBinaryComparatorFactory(type, true);
return bcfs;
}
- public static ITypeTraits[] computeFilterTypeTraits(Dataset dataset, ARecordType itemType)
+ public static ITypeTraits[] computeFilterTypeTraits(Dataset dataset, ARecordType recordType, ARecordType metaType)
throws AlgebricksException {
if (dataset.getDatasetType() == DatasetType.EXTERNAL) {
return null;
}
+ Integer filterFieldSourceIndicator = getFilterSourceIndicator(dataset);
List<String> filterField = getFilterField(dataset);
if (filterField == null) {
return null;
}
+ ARecordType itemType = filterFieldSourceIndicator == 0 ? recordType : metaType;
ITypeTraits[] typeTraits = new ITypeTraits[1];
IAType type = itemType.getSubFieldType(filterField);
typeTraits[0] = TypeTraitProvider.INSTANCE.getTypeTrait(type);
@@ -151,7 +159,8 @@
int numKeys = partitioningKeys.size();
int[] filterFields = new int[1];
- filterFields[0] = numKeys + 1;
+ int valueFields = dataset.hasMetaPart() ? 2 : 1;
+ filterFields[0] = numKeys + valueFields;
return filterFields;
}
@@ -471,9 +480,13 @@
}
// add the previous filter third
int fieldIdx = -1;
+ Integer filterSourceIndicator = null;
+ ARecordType filterItemType = null;
if (numFilterFields > 0) {
+ filterSourceIndicator = DatasetUtil.getFilterSourceIndicator(dataset);
String filterField = DatasetUtil.getFilterField(dataset).get(0);
- String[] fieldNames = itemType.getFieldNames();
+ filterItemType = filterSourceIndicator == 0 ? itemType : metaItemType;
+ String[] fieldNames = filterItemType.getFieldNames();
int i = 0;
for (; i < fieldNames.length; i++) {
if (fieldNames[i].equals(filterField)) {
@@ -481,9 +494,10 @@
}
}
fieldIdx = i;
- outputTypeTraits[f] = dataFormat.getTypeTraitProvider().getTypeTrait(itemType.getFieldTypes()[fieldIdx]);
+ outputTypeTraits[f] =
+ dataFormat.getTypeTraitProvider().getTypeTrait(filterItemType.getFieldTypes()[fieldIdx]);
outputSerDes[f] =
- dataFormat.getSerdeProvider().getSerializerDeserializer(itemType.getFieldTypes()[fieldIdx]);
+ dataFormat.getSerdeProvider().getSerializerDeserializer(filterItemType.getFieldTypes()[fieldIdx]);
f++;
}
for (int j = 0; j < inputRecordDesc.getFieldCount(); j++) {
@@ -493,7 +507,8 @@
RecordDescriptor outputRecordDesc = new RecordDescriptor(outputSerDes, outputTypeTraits);
op = new LSMPrimaryUpsertOperatorDescriptor(spec, outputRecordDesc, fieldPermutation, idfh,
missingWriterFactory, modificationCallbackFactory, searchCallbackFactory,
- dataset.getFrameOpCallbackFactory(metadataProvider), numKeys, itemType, fieldIdx, hasSecondaries);
+ dataset.getFrameOpCallbackFactory(metadataProvider), numKeys, filterSourceIndicator, filterItemType,
+ fieldIdx, hasSecondaries);
return new Pair<>(op, splitsAndConstraint.second);
}
@@ -582,7 +597,8 @@
public static String createNodeGroupForNewDataset(DataverseName dataverseName, String datasetName,
long rebalanceCount, Set<String> ncNames, MetadataProvider metadataProvider) throws Exception {
ICcApplicationContext appCtx = metadataProvider.getApplicationContext();
- String nodeGroup = dataverseName + "." + datasetName + (rebalanceCount == 0L ? "" : "_" + rebalanceCount);
+ String nodeGroup = dataverseName.getCanonicalForm() + "." + datasetName
+ + (rebalanceCount == 0L ? "" : "_" + rebalanceCount);
MetadataTransactionContext mdTxnCtx = metadataProvider.getMetadataTxnContext();
appCtx.getMetadataLockManager().acquireNodeGroupWriteLock(metadataProvider.getLocks(), nodeGroup);
NodeGroup ng = MetadataManager.INSTANCE.getNodegroup(mdTxnCtx, nodeGroup);
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/InvertedIndexResourceFactoryProvider.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/InvertedIndexResourceFactoryProvider.java
index f1fe625..f2b7558 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/InvertedIndexResourceFactoryProvider.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/InvertedIndexResourceFactoryProvider.java
@@ -127,6 +127,9 @@
invertedIndexFieldsForNonBulkLoadOps, bloomFilterFalsePositiveRate);
}
+ // Returns an array of the type traits of the inverted list elements
+ // It contains the primary key(s) type traits of the corresponding indexed rows,
+ // and those primary keys are the elements in the inverted list.
private static ITypeTraits[] getInvListTypeTraits(MetadataProvider metadataProvider, Dataset dataset,
ARecordType recordType, ARecordType metaType) throws AlgebricksException {
ITypeTraits[] primaryTypeTraits = dataset.getPrimaryTypeTraits(metadataProvider, recordType, metaType);
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataLockUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataLockUtil.java
index eab69e0..4309c2e 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataLockUtil.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataLockUtil.java
@@ -138,11 +138,14 @@
@Override
public void createFunctionBegin(IMetadataLockManager lockMgr, LockList locks, DataverseName dataverseName,
- String functionName, String libraryName) throws AlgebricksException {
+ String functionName, DataverseName libraryDataverseName, String libraryName) throws AlgebricksException {
lockMgr.acquireDataverseReadLock(locks, dataverseName);
lockMgr.acquireFunctionWriteLock(locks, dataverseName, functionName);
if (libraryName != null) {
- lockMgr.acquireLibraryReadLock(locks, dataverseName, libraryName);
+ if (!dataverseName.equals(libraryDataverseName)) {
+ lockMgr.acquireDataverseReadLock(locks, libraryDataverseName);
+ }
+ lockMgr.acquireLibraryReadLock(locks, libraryDataverseName, libraryName);
}
}
@@ -155,11 +158,14 @@
@Override
public void createAdapterBegin(IMetadataLockManager lockMgr, LockList locks, DataverseName dataverseName,
- String adapterName, String libraryName) throws AlgebricksException {
+ String adapterName, DataverseName libraryDataverseName, String libraryName) throws AlgebricksException {
lockMgr.acquireDataverseReadLock(locks, dataverseName);
lockMgr.acquireAdapterWriteLock(locks, dataverseName, adapterName);
if (libraryName != null) {
- lockMgr.acquireLibraryReadLock(locks, dataverseName, libraryName);
+ if (!dataverseName.equals(libraryDataverseName)) {
+ lockMgr.acquireDataverseReadLock(locks, libraryDataverseName);
+ }
+ lockMgr.acquireLibraryReadLock(locks, libraryDataverseName, libraryName);
}
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryBTreeOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryBTreeOperationsHelper.java
index f47786d..bc5ac8b 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryBTreeOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryBTreeOperationsHelper.java
@@ -27,6 +27,7 @@
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
import org.apache.asterix.metadata.entities.Index;
+import org.apache.asterix.metadata.entities.InternalDatasetDetails;
import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.runtime.utils.RuntimeUtils;
@@ -276,10 +277,14 @@
}
if (numFilterFields > 0) {
+ ARecordType filterItemType =
+ ((InternalDatasetDetails) dataset.getDatasetDetails()).getFilterSourceIndicator() == 0 ? itemType
+ : metaType;
secondaryFieldAccessEvalFactories[numSecondaryKeys] = metadataProvider.getDataFormat()
- .getFieldAccessEvaluatorFactory(metadataProvider.getFunctionManager(), itemType, filterFieldName,
- numPrimaryKeys, sourceLoc);
- Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(filterFieldName, itemType);
+ .getFieldAccessEvaluatorFactory(metadataProvider.getFunctionManager(), filterItemType,
+ filterFieldName, numPrimaryKeys, sourceLoc);
+ Pair<IAType, Boolean> keyTypePair;
+ keyTypePair = Index.getNonNullableKeyFieldType(filterFieldName, filterItemType);
IAType type = keyTypePair.first;
ISerializerDeserializer serde = serdeProvider.getSerializerDeserializer(type);
secondaryRecFields[numPrimaryKeys + numSecondaryKeys] = serde;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedBTreeOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedBTreeOperationsHelper.java
index 3930563..40f2610 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedBTreeOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedBTreeOperationsHelper.java
@@ -24,6 +24,7 @@
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
import org.apache.asterix.metadata.entities.Index;
+import org.apache.asterix.metadata.entities.InternalDatasetDetails;
import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.runtime.operators.LSMSecondaryIndexBulkLoadOperatorDescriptor;
@@ -185,10 +186,14 @@
}
if (numFilterFields > 0) {
- secondaryFieldAccessEvalFactories[numSecondaryKeys] =
- metadataProvider.getDataFormat().getFieldAccessEvaluatorFactory(
- metadataProvider.getFunctionManager(), itemType, filterFieldName, recordColumn, sourceLoc);
- Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(filterFieldName, itemType);
+ ARecordType filterItemType =
+ ((InternalDatasetDetails) dataset.getDatasetDetails()).getFilterSourceIndicator() == 0 ? itemType
+ : metaType;
+ secondaryFieldAccessEvalFactories[numSecondaryKeys] = metadataProvider.getDataFormat()
+ .getFieldAccessEvaluatorFactory(metadataProvider.getFunctionManager(), filterItemType,
+ filterFieldName, recordColumn, sourceLoc);
+ Pair<IAType, Boolean> keyTypePair;
+ keyTypePair = Index.getNonNullableKeyFieldType(filterFieldName, filterItemType);
IAType type = keyTypePair.first;
ISerializerDeserializer serde = serdeProvider.getSerializerDeserializer(type);
secondaryRecFields[numPrimaryKeys + numSecondaryKeys] = serde;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedInvertedIndexOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedInvertedIndexOperationsHelper.java
index 734f913..cf84e56 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedInvertedIndexOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedInvertedIndexOperationsHelper.java
@@ -25,6 +25,8 @@
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
import org.apache.asterix.metadata.entities.Index;
+import org.apache.asterix.metadata.entities.InternalDatasetDetails;
+import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.om.utils.NonTaggedFormatUtil;
import org.apache.asterix.runtime.utils.RuntimeUtils;
@@ -120,10 +122,13 @@
secondaryTypeTraits[0] = typeTraitProvider.getTypeTrait(secondaryKeyType);
}
if (numFilterFields > 0) {
- secondaryFieldAccessEvalFactories[numSecondaryKeys] =
- metadataProvider.getDataFormat().getFieldAccessEvaluatorFactory(
- metadataProvider.getFunctionManager(), itemType, filterFieldName, recordColumn, sourceLoc);
- Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(filterFieldName, itemType);
+ ARecordType filterItemType =
+ ((InternalDatasetDetails) dataset.getDatasetDetails()).getFilterSourceIndicator() == 0 ? itemType
+ : metaType;
+ secondaryFieldAccessEvalFactories[numSecondaryKeys] = metadataProvider.getDataFormat()
+ .getFieldAccessEvaluatorFactory(metadataProvider.getFunctionManager(), filterItemType,
+ filterFieldName, recordColumn, sourceLoc);
+ Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(filterFieldName, filterItemType);
IAType type = keyTypePair.first;
ISerializerDeserializer serde = serdeProvider.getSerializerDeserializer(type);
secondaryRecFields[numPrimaryKeys + numSecondaryKeys] = serde;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedRTreeOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedRTreeOperationsHelper.java
index c870c60..d10c093 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedRTreeOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedRTreeOperationsHelper.java
@@ -29,6 +29,8 @@
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
import org.apache.asterix.metadata.entities.Index;
+import org.apache.asterix.metadata.entities.InternalDatasetDetails;
+import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.om.utils.NonTaggedFormatUtil;
@@ -123,12 +125,15 @@
enforcedRecFields[numPrimaryKeys] = SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(itemType);
enforcedRecDesc = new RecordDescriptor(enforcedRecFields, enforcedTypeTraits);
if (numFilterFields > 0) {
+ ARecordType filterItemType =
+ ((InternalDatasetDetails) dataset.getDatasetDetails()).getFilterSourceIndicator() == 0 ? itemType
+ : metaType;
rtreeFields = new int[numNestedSecondaryKeyFields + numPrimaryKeys];
for (int i = 0; i < rtreeFields.length; i++) {
rtreeFields[i] = i;
}
- Pair<IAType, Boolean> typePair = Index.getNonNullableKeyFieldType(filterFieldName, itemType);
+ Pair<IAType, Boolean> typePair = Index.getNonNullableKeyFieldType(filterFieldName, filterItemType);
IAType type = typePair.first;
ISerializerDeserializer serde = SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(type);
secondaryRecFields[numPrimaryKeys + numNestedSecondaryKeyFields] = serde;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
index 6bcc039..fd45ff4 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
@@ -235,7 +235,9 @@
secondaryBTreeFields[i] = i;
}
- IAType type = itemType.getSubFieldType(filterFieldName);
+ IAType type = ((InternalDatasetDetails) dataset.getDatasetDetails()).getFilterSourceIndicator() == 0
+ ? itemType.getSubFieldType(filterFieldName, itemType)
+ : metaType.getSubFieldType(filterFieldName, metaType);
filterCmpFactories[0] = BinaryComparatorFactoryProvider.INSTANCE.getBinaryComparatorFactory(type, true);
filterTypeTraits[0] = TypeTraitProvider.INSTANCE.getTypeTrait(type);
secondaryFilterFields[0] = getNumSecondaryKeys() + numPrimaryKeys;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryInvertedIndexOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryInvertedIndexOperationsHelper.java
index 2ac2048..85205b3 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryInvertedIndexOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryInvertedIndexOperationsHelper.java
@@ -26,6 +26,8 @@
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
import org.apache.asterix.metadata.entities.Index;
+import org.apache.asterix.metadata.entities.InternalDatasetDetails;
+import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.om.utils.NonTaggedFormatUtil;
import org.apache.asterix.runtime.utils.RuntimeUtils;
@@ -122,10 +124,13 @@
secondaryTypeTraits[0] = typeTraitProvider.getTypeTrait(secondaryKeyType);
}
if (numFilterFields > 0) {
+ ARecordType filterItemType =
+ ((InternalDatasetDetails) dataset.getDatasetDetails()).getFilterSourceIndicator() == 0 ? itemType
+ : metaType;
secondaryFieldAccessEvalFactories[numSecondaryKeys] = metadataProvider.getDataFormat()
- .getFieldAccessEvaluatorFactory(metadataProvider.getFunctionManager(), itemType, filterFieldName,
- numPrimaryKeys, sourceLoc);
- Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(filterFieldName, itemType);
+ .getFieldAccessEvaluatorFactory(metadataProvider.getFunctionManager(), filterItemType,
+ filterFieldName, numPrimaryKeys, sourceLoc);
+ Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(filterFieldName, filterItemType);
IAType type = keyTypePair.first;
ISerializerDeserializer serde = serdeProvider.getSerializerDeserializer(type);
secondaryRecFields[numPrimaryKeys + numSecondaryKeys] = serde;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryRTreeOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryRTreeOperationsHelper.java
index fef5097..1d60772 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryRTreeOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryRTreeOperationsHelper.java
@@ -31,6 +31,8 @@
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
import org.apache.asterix.metadata.entities.Index;
+import org.apache.asterix.metadata.entities.InternalDatasetDetails;
+import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.om.utils.NonTaggedFormatUtil;
@@ -139,12 +141,15 @@
enforcedRecFields[numPrimaryKeys] = SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(itemType);
enforcedRecDesc = new RecordDescriptor(enforcedRecFields, enforcedTypeTraits);
if (numFilterFields > 0) {
+ ARecordType filterItemType =
+ ((InternalDatasetDetails) dataset.getDatasetDetails()).getFilterSourceIndicator() == 0 ? itemType
+ : metaType;
rtreeFields = new int[numNestedSecondaryKeyFields + numPrimaryKeys];
for (int i = 0; i < rtreeFields.length; i++) {
rtreeFields[i] = i;
}
- Pair<IAType, Boolean> typePair = Index.getNonNullableKeyFieldType(filterFieldName, itemType);
+ Pair<IAType, Boolean> typePair = Index.getNonNullableKeyFieldType(filterFieldName, filterItemType);
IAType type = typePair.first;
ISerializerDeserializer serde = SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(type);
secondaryRecFields[numPrimaryKeys + numNestedSecondaryKeyFields] = serde;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/TypeUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/TypeUtil.java
index 11dc1ee..7660909 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/TypeUtil.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/TypeUtil.java
@@ -19,6 +19,8 @@
package org.apache.asterix.metadata.utils;
import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.Deque;
import java.util.LinkedHashMap;
import java.util.List;
@@ -28,12 +30,12 @@
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.metadata.entities.Dataset;
+import org.apache.asterix.metadata.entities.Function;
import org.apache.asterix.metadata.entities.Index;
import org.apache.asterix.om.typecomputer.impl.TypeComputeUtils;
import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.AUnionType;
-import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.om.types.TypeSignature;
import org.apache.asterix.om.types.hierachy.ATypeHierarchy;
@@ -46,8 +48,6 @@
*/
public class TypeUtil {
- public static final TypeSignature ANY_TYPE_SIGNATURE = new TypeSignature(BuiltinType.ANY);
-
private static final char TYPE_NAME_DELIMITER = '$';
private static final String DATASET_INLINE_TYPE_PREFIX = "$d$t$";
@@ -263,7 +263,12 @@
}
public static boolean isDatasetInlineTypeName(Dataset dataset, DataverseName typeDataverseName, String typeName) {
- return dataset.getDataverseName().equals(typeDataverseName) && typeName.startsWith(DATASET_INLINE_TYPE_PREFIX);
+ return isInlineTypeName(dataset.getDataverseName(), typeDataverseName, typeName, DATASET_INLINE_TYPE_PREFIX);
+ }
+
+ private static boolean isInlineTypeName(DataverseName entityDataverseName, DataverseName typeDataverseName,
+ String typeName, String inlineTypePrefix) {
+ return entityDataverseName.equals(typeDataverseName) && typeName.startsWith(inlineTypePrefix);
}
public static String createFunctionParameterTypeName(String functionName, int arity, int parameterIndex) {
@@ -277,4 +282,39 @@
return sb.toString();
}
+
+ public static boolean isFunctionInlineTypeName(Function function, DataverseName typeDataverseName,
+ String typeName) {
+ return isInlineTypeName(function.getDataverseName(), typeDataverseName, typeName, FUNCTION_INLINE_TYPE_PREFIX);
+ }
+
+ public static String getFullyQualifiedDisplayName(DataverseName dataverseName, String typeName) {
+ return dataverseName + "." + typeName;
+ }
+
+ /**
+ * Inline type names are unique within a function, so we don't need to perform duplicate elimination
+ */
+ public static List<TypeSignature> getFunctionInlineTypes(Function function) {
+ List<TypeSignature> inlineTypes = Collections.emptyList();
+ TypeSignature returnType = function.getReturnType();
+ if (returnType != null
+ && isFunctionInlineTypeName(function, returnType.getDataverseName(), returnType.getName())) {
+ inlineTypes = new ArrayList<>();
+ inlineTypes.add(returnType);
+ }
+ List<TypeSignature> parameterTypes = function.getParameterTypes();
+ if (parameterTypes != null) {
+ for (TypeSignature parameterType : parameterTypes) {
+ if (parameterType != null && isFunctionInlineTypeName(function, parameterType.getDataverseName(),
+ parameterType.getName())) {
+ if (inlineTypes.isEmpty()) {
+ inlineTypes = new ArrayList<>();
+ }
+ inlineTypes.add(parameterType);
+ }
+ }
+ }
+ return inlineTypes;
+ }
}
diff --git a/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslatorTest.java b/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslatorTest.java
index 58f03af..73eeae4 100644
--- a/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslatorTest.java
+++ b/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslatorTest.java
@@ -50,7 +50,7 @@
Collections.singletonList(Collections.singletonList("row_id")),
Collections.singletonList(Collections.singletonList("row_id")),
indicator == null ? null : Collections.singletonList(indicator),
- Collections.singletonList(BuiltinType.AINT64), false, Collections.emptyList());
+ Collections.singletonList(BuiltinType.AINT64), false, null, null);
Dataset dataset = new Dataset(DataverseName.createSinglePartName("test"), "log",
DataverseName.createSinglePartName("foo"), "LogType", DataverseName.createSinglePartName("CB"),
diff --git a/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslatorTest.java b/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslatorTest.java
index cc02c49..5fcb6e0 100644
--- a/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslatorTest.java
+++ b/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslatorTest.java
@@ -61,7 +61,7 @@
Collections.singletonList(Collections.singletonList("row_id")),
Collections.singletonList(Collections.singletonList("row_id")),
indicator == null ? null : Collections.singletonList(indicator),
- Collections.singletonList(BuiltinType.AINT64), false, Collections.emptyList());
+ Collections.singletonList(BuiltinType.AINT64), false, null, null);
DataverseName dvTest = DataverseName.createSinglePartName("test");
DataverseName dvFoo = DataverseName.createSinglePartName("foo");
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/ExpressionTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/ExpressionTypeComputer.java
index 1dcf6a6..e581140 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/ExpressionTypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/ExpressionTypeComputer.java
@@ -20,10 +20,8 @@
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.om.constants.AsterixConstantValue;
-import org.apache.asterix.om.functions.BuiltinFunctions;
-import org.apache.asterix.om.functions.ExternalFunctionInfo;
+import org.apache.asterix.om.functions.FunctionInfo;
import org.apache.asterix.om.typecomputer.base.IResultTypeComputer;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
@@ -35,7 +33,6 @@
import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionTypeComputer;
import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
public class ExpressionTypeComputer implements IExpressionTypeComputer {
@@ -69,18 +66,7 @@
private IAType getTypeForFunction(AbstractFunctionCallExpression expr, IVariableTypeEnvironment env,
IMetadataProvider<?, ?> mp) throws AlgebricksException {
- FunctionIdentifier fi = expr.getFunctionIdentifier();
- // Note: built-in functions + udfs
- IResultTypeComputer rtc;
- FunctionSignature signature = new FunctionSignature(fi);
- if (BuiltinFunctions.isBuiltinCompilerFunction(signature, true)) {
- rtc = BuiltinFunctions.getResultTypeComputer(fi);
- } else {
- rtc = ((ExternalFunctionInfo) expr.getFunctionInfo()).getResultTypeComputer();
- }
- if (rtc == null) {
- throw new AlgebricksException("Type computer missing for " + fi);
- }
+ IResultTypeComputer rtc = ((FunctionInfo) expr.getFunctionInfo()).getResultTypeComputer();
return rtc.computeType(expr, env, mp);
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/PartialAggregationTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/PartialAggregationTypeComputer.java
index 4a0384d..f012f5c 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/PartialAggregationTypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/PartialAggregationTypeComputer.java
@@ -19,6 +19,7 @@
package org.apache.asterix.dataflow.data.common;
import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.FunctionInfo;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
@@ -45,7 +46,6 @@
private Object getTypeForFunction(AbstractFunctionCallExpression expr, IVariableTypeEnvironment env,
IMetadataProvider<?, ?> metadataProvider) throws AlgebricksException {
- return BuiltinFunctions.getResultTypeComputer(expr.getFunctionIdentifier()).computeType(expr, env,
- metadataProvider);
+ return ((FunctionInfo) expr.getFunctionInfo()).getResultTypeComputer().computeType(expr, env, metadataProvider);
}
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
index 6906ae4..cab8c22 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
@@ -37,6 +37,7 @@
import org.apache.hyracks.algebricks.data.IPrinterFactoryProvider;
import org.apache.hyracks.algebricks.data.ISerializerDeserializerProvider;
import org.apache.hyracks.algebricks.data.ITypeTraitProvider;
+import org.apache.hyracks.algebricks.data.IUnnestingPositionWriterFactory;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.dataflow.value.IMissingWriterFactory;
import org.apache.hyracks.api.dataflow.value.IPredicateEvaluatorFactoryProvider;
@@ -66,6 +67,8 @@
public IMissingWriterFactory getMissingWriterFactory();
+ public IUnnestingPositionWriterFactory getUnnestingPositionWriterFactory();
+
public Triple<IScalarEvaluatorFactory, ScalarFunctionCallExpression, IAType> partitioningEvaluatorFactory(
IFunctionManager functionManager, ARecordType recType, List<String> fldName, SourceLocation sourceLoc)
throws AlgebricksException;
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/constants/AsterixConstantValue.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/constants/AsterixConstantValue.java
index fa0a74e..337e966 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/constants/AsterixConstantValue.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/constants/AsterixConstantValue.java
@@ -26,10 +26,10 @@
public class AsterixConstantValue implements IAlgebricksConstantValue {
- private IAObject object;
+ private final IAObject object;
public AsterixConstantValue(IAObject object) {
- this.setObject(object);
+ this.object = object;
}
@Override
@@ -52,10 +52,6 @@
return object == ABoolean.TRUE;
}
- public void setObject(IAObject object) {
- this.object = object;
- }
-
public IAObject getObject() {
return object;
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctionInfo.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctionInfo.java
new file mode 100644
index 0000000..acb348d
--- /dev/null
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctionInfo.java
@@ -0,0 +1,39 @@
+/*
+ * 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 org.apache.asterix.om.typecomputer.base.IResultTypeComputer;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+
+public final class BuiltinFunctionInfo extends FunctionInfo {
+ private static final long serialVersionUID = -6013109889177637590L;
+
+ private final boolean isPrivate;
+
+ public BuiltinFunctionInfo(FunctionIdentifier fi, IResultTypeComputer typeComputer, boolean isFunctional,
+ boolean isPrivate) {
+ super(fi, typeComputer, isFunctional);
+ this.isPrivate = isPrivate;
+ }
+
+ public boolean isPrivate() {
+ return isPrivate;
+ }
+}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
index 19c1b51..268c1f6 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
@@ -34,7 +34,6 @@
import java.util.Set;
import org.apache.asterix.common.functions.FunctionConstants;
-import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.om.typecomputer.base.IResultTypeComputer;
import org.apache.asterix.om.typecomputer.impl.ABinaryTypeComputer;
import org.apache.asterix.om.typecomputer.impl.ABooleanArrayContainsTypeComputer;
@@ -136,7 +135,6 @@
import org.apache.asterix.om.typecomputer.impl.UnaryBinaryInt64TypeComputer;
import org.apache.asterix.om.typecomputer.impl.UniformInputTypeComputer;
import org.apache.asterix.om.typecomputer.impl.UnorderedListConstructorTypeComputer;
-import org.apache.asterix.om.types.hierachy.ATypeHierarchy;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
@@ -149,34 +147,27 @@
public class BuiltinFunctions {
- public enum SpatialFilterKind {
- SI
- }
-
- private static final FunctionInfoRepository registeredFunctions = new FunctionInfoRepository();
- private static final Map<IFunctionInfo, ATypeHierarchy.Domain> registeredFunctionsDomain = new HashMap<>();
-
- // it is supposed to be an identity mapping
- private static final Map<IFunctionInfo, IFunctionInfo> builtinPublicFunctionsSet = new HashMap<>();
- private static final Map<IFunctionInfo, IFunctionInfo> builtinPrivateFunctionsSet = new HashMap<>();
- private static final Map<IFunctionInfo, IResultTypeComputer> funTypeComputer = new HashMap<>();
- private static final Map<IFunctionInfo, Set<? extends BuiltinFunctionProperty>> builtinFunctionProperties =
+ private static final Map<FunctionIdentifier, BuiltinFunctionInfo> registeredFunctions = new HashMap<>();
+ private static final Map<FunctionIdentifier, Set<? extends BuiltinFunctionProperty>> builtinFunctionProperties =
new HashMap<>();
- private static final Set<IFunctionInfo> builtinAggregateFunctions = new HashSet<>();
- private static final Map<IFunctionInfo, IFunctionToDataSourceRewriter> datasourceFunctions = new HashMap<>();
- private static final Set<IFunctionInfo> similarityFunctions = new HashSet<>();
- private static final Set<IFunctionInfo> globalAggregateFunctions = new HashSet<>();
- private static final Map<IFunctionInfo, IFunctionInfo> aggregateToLocalAggregate = new HashMap<>();
- private static final Map<IFunctionInfo, IFunctionInfo> aggregateToIntermediateAggregate = new HashMap<>();
- private static final Map<IFunctionInfo, IFunctionInfo> aggregateToGlobalAggregate = new HashMap<>();
- private static final Map<IFunctionInfo, IFunctionInfo> aggregateToSerializableAggregate = new HashMap<>();
- private static final Map<IFunctionInfo, Boolean> builtinUnnestingFunctions = new HashMap<>();
- private static final Map<IFunctionInfo, IFunctionInfo> scalarToAggregateFunctionMap = new HashMap<>();
- private static final Map<IFunctionInfo, IFunctionInfo> distinctToRegularAggregateFunctionMap = new HashMap<>();
- private static final Map<IFunctionInfo, IFunctionInfo> sqlToWindowFunctions = new HashMap<>();
- private static final Set<IFunctionInfo> windowFunctions = new HashSet<>();
- private static final Map<IFunctionInfo, SpatialFilterKind> spatialFilterFunctions = new HashMap<>();
+ private static final Map<FunctionIdentifier, IFunctionToDataSourceRewriter> datasourceFunctions = new HashMap<>();
+ private static final Map<FunctionIdentifier, Boolean> builtinUnnestingFunctions = new HashMap<>();
+
+ private static final Set<FunctionIdentifier> builtinAggregateFunctions = new HashSet<>();
+ private static final Set<FunctionIdentifier> globalAggregateFunctions = new HashSet<>();
+ private static final Map<FunctionIdentifier, FunctionIdentifier> aggregateToLocalAggregate = new HashMap<>();
+ private static final Map<FunctionIdentifier, FunctionIdentifier> aggregateToIntermediateAggregate = new HashMap<>();
+ private static final Map<FunctionIdentifier, FunctionIdentifier> aggregateToGlobalAggregate = new HashMap<>();
+ private static final Map<FunctionIdentifier, FunctionIdentifier> aggregateToSerializableAggregate = new HashMap<>();
+ private static final Map<FunctionIdentifier, FunctionIdentifier> scalarToAggregateFunctionMap = new HashMap<>();
+ private static final Map<FunctionIdentifier, FunctionIdentifier> distinctToRegularAggregateFunctionMap =
+ new HashMap<>();
+ private static final Map<FunctionIdentifier, FunctionIdentifier> sqlToWindowFunctions = new HashMap<>();
+ private static final Set<FunctionIdentifier> windowFunctions = new HashSet<>();
+
+ private static final Map<FunctionIdentifier, SpatialFilterKind> spatialFilterFunctions = new HashMap<>();
+ private static final Set<FunctionIdentifier> similarityFunctions = new HashSet<>();
public static final FunctionIdentifier TYPE_OF = new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "type-of", 1);
public static final FunctionIdentifier GET_HANDLE =
@@ -1586,7 +1577,7 @@
public static final FunctionIdentifier TREAT_AS_INTEGER =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "treat-as-integer", 1);
public static final FunctionIdentifier IS_NUMERIC_ADD_COMPATIBLE =
- new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "is-numeric-add-compatibe", 1);
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "is-numeric-add-compatible", 1);
public static final FunctionIdentifier EXTERNAL_LOOKUP =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "external-lookup", FunctionIdentifier.VARARGS);
@@ -1601,17 +1592,10 @@
public static final FunctionIdentifier DECODE_DATAVERSE_NAME =
new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "decode-dataverse-name", 1);
-
- public static IFunctionInfo getAsterixFunctionInfo(FunctionIdentifier fid) {
- return registeredFunctions.get(fid);
- }
-
- public static FunctionInfo lookupFunction(FunctionIdentifier fid) {
- return (FunctionInfo) registeredFunctions.get(fid);
- }
+ public static final FunctionIdentifier DECODE_DATAVERSE_DISPLAY_NAME =
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, "decode-dataverse-display-name", 1);
static {
-
// first, take care of Algebricks builtin functions
addFunction(IS_MISSING, BooleanOnlyTypeComputer.INSTANCE, true);
addFunction(IS_UNKNOWN, BooleanOnlyTypeComputer.INSTANCE, true);
@@ -1692,9 +1676,9 @@
addFunction(FLOAT_CONSTRUCTOR, AFloatTypeComputer.INSTANCE, true);
addPrivateFunction(FUZZY_EQ, BooleanFunctionTypeComputer.INSTANCE, true);
- addPrivateFunction(GET_HANDLE, null, true);
+ addPrivateFunction(GET_HANDLE, AnyTypeComputer.INSTANCE, true);
addPrivateFunction(GET_ITEM, NonTaggedGetItemResultType.INSTANCE, true);
- addPrivateFunction(GET_DATA, null, true);
+ addPrivateFunction(GET_DATA, AnyTypeComputer.INSTANCE, true);
addPrivateFunction(GRAM_TOKENS, OrderedListOfAStringTypeComputer.INSTANCE, true);
addPrivateFunction(HASHED_GRAM_TOKENS, OrderedListOfAInt32TypeComputer.INSTANCE, true);
addPrivateFunction(HASHED_WORD_TOKENS, OrderedListOfAInt32TypeComputer.INSTANCE, true);
@@ -1705,8 +1689,8 @@
addFunction(INT64_CONSTRUCTOR, AInt64TypeComputer.INSTANCE, true);
addFunction(LEN, AInt64TypeComputer.INSTANCE, true);
addFunction(LINE_CONSTRUCTOR, ALineTypeComputer.INSTANCE, true);
- addPrivateFunction(MAKE_FIELD_INDEX_HANDLE, null, true);
- addPrivateFunction(MAKE_FIELD_NAME_HANDLE, null, true);
+ addPrivateFunction(MAKE_FIELD_INDEX_HANDLE, AnyTypeComputer.INSTANCE, true);
+ addPrivateFunction(MAKE_FIELD_NAME_HANDLE, AnyTypeComputer.INSTANCE, true);
addPrivateFunction(NUMERIC_UNARY_MINUS, NumericUnaryTypeComputer.INSTANCE, true);
addPrivateFunction(NUMERIC_SUBTRACT, NumericAddSubMulDivTypeComputer.INSTANCE_SUB, true);
@@ -2146,7 +2130,7 @@
addFunction(SPATIAL_AREA, ADoubleTypeComputer.INSTANCE, true);
addFunction(SPATIAL_CELL, ARectangleTypeComputer.INSTANCE, true);
addFunction(SPATIAL_DISTANCE, ADoubleTypeComputer.INSTANCE, true);
- addFunctionWithDomain(SPATIAL_INTERSECT, ATypeHierarchy.Domain.SPATIAL, ABooleanTypeComputer.INSTANCE, true);
+ addFunction(SPATIAL_INTERSECT, ABooleanTypeComputer.INSTANCE, true);
addFunction(GET_POINT_X_COORDINATE_ACCESSOR, ADoubleTypeComputer.INSTANCE, true);
addFunction(GET_POINT_Y_COORDINATE_ACCESSOR, ADoubleTypeComputer.INSTANCE, true);
addFunction(GET_CIRCLE_RADIUS_ACCESSOR, ADoubleTypeComputer.INSTANCE, true);
@@ -2235,7 +2219,7 @@
addFunction(TID, AInt64TypeComputer.INSTANCE, true);
addFunction(TIME_CONSTRUCTOR, ATimeTypeComputer.INSTANCE, true);
- addPrivateFunction(TYPE_OF, null, true);
+ addPrivateFunction(TYPE_OF, AnyTypeComputer.INSTANCE, true);
addPrivateFunction(UNORDERED_LIST_CONSTRUCTOR, UnorderedListConstructorTypeComputer.INSTANCE, true);
addFunction(WORD_TOKENS, OrderedListOfAStringTypeComputer.INSTANCE, true);
@@ -2376,7 +2360,8 @@
addFunction(META, OpenARecordTypeComputer.INSTANCE, true);
addPrivateFunction(META_KEY, AnyTypeComputer.INSTANCE, false);
- addFunction(DECODE_DATAVERSE_NAME, OrderedListOfAStringTypeComputer.INSTANCE, true);
+ addFunction(DECODE_DATAVERSE_NAME, OrderedListOfAStringTypeComputer.INSTANCE_NULLABLE, true);
+ addFunction(DECODE_DATAVERSE_DISPLAY_NAME, AStringTypeComputer.INSTANCE_NULLABLE, true);
addPrivateFunction(COLLECTION_TO_SEQUENCE, CollectionToSequenceTypeComputer.INSTANCE, true);
@@ -3084,78 +3069,65 @@
public static void addDatasourceFunction(FunctionIdentifier fi, IFunctionToDataSourceRewriter transformer,
DataSourceFunctionProperty... properties) {
- IFunctionInfo finfo = getAsterixFunctionInfo(fi);
- datasourceFunctions.put(finfo, transformer);
- registerFunctionProperties(finfo, DataSourceFunctionProperty.class, properties);
+ datasourceFunctions.put(fi, transformer);
+ registerFunctionProperties(fi, DataSourceFunctionProperty.class, properties);
}
public static IFunctionToDataSourceRewriter getDatasourceTransformer(FunctionIdentifier fi) {
- return datasourceFunctions.getOrDefault(getAsterixFunctionInfo(fi), IFunctionToDataSourceRewriter.NOOP);
+ return datasourceFunctions.get(fi);
}
- public static boolean isBuiltinCompilerFunction(FunctionSignature signature, boolean includePrivateFunctions) {
- FunctionIdentifier fi =
- new FunctionIdentifier(FunctionConstants.ASTERIX_NS, signature.getName(), signature.getArity());
- IFunctionInfo finfo = getAsterixFunctionInfo(fi);
- if (builtinPublicFunctionsSet.keySet().contains(finfo)
- || (includePrivateFunctions && builtinPrivateFunctionsSet.keySet().contains(finfo))) {
- return true;
- }
- fi = new FunctionIdentifier(AlgebricksBuiltinFunctions.ALGEBRICKS_NS, signature.getName(),
- signature.getArity());
- finfo = getAsterixFunctionInfo(fi);
- if (builtinPublicFunctionsSet.keySet().contains(finfo)
- || (includePrivateFunctions && builtinPrivateFunctionsSet.keySet().contains(finfo))) {
- return true;
- }
+ public static BuiltinFunctionInfo getBuiltinFunctionInfo(FunctionIdentifier fi) {
+ return registeredFunctions.get(fi);
+ }
- return false;
+ public static BuiltinFunctionInfo resolveBuiltinFunction(String name, int arity) {
+ //TODO:optimize
+ BuiltinFunctionInfo finfo;
+ finfo = getBuiltinFunctionInfo(new FunctionIdentifier(FunctionConstants.ASTERIX_NS, name, arity));
+ if (finfo != null) {
+ return finfo;
+ }
+ finfo = getBuiltinFunctionInfo(
+ new FunctionIdentifier(FunctionConstants.ASTERIX_NS, name, FunctionIdentifier.VARARGS));
+ if (finfo != null) {
+ return finfo;
+ }
+ finfo = getBuiltinFunctionInfo(new FunctionIdentifier(AlgebricksBuiltinFunctions.ALGEBRICKS_NS, name, arity));
+ if (finfo != null) {
+ return finfo;
+ }
+ return getBuiltinFunctionInfo(
+ new FunctionIdentifier(AlgebricksBuiltinFunctions.ALGEBRICKS_NS, name, FunctionIdentifier.VARARGS));
}
public static boolean isBuiltinAggregateFunction(FunctionIdentifier fi) {
- return builtinAggregateFunctions.contains(getAsterixFunctionInfo(fi));
+ return builtinAggregateFunctions.contains(fi);
}
public static boolean isBuiltinUnnestingFunction(FunctionIdentifier fi) {
- return builtinUnnestingFunctions.get(getAsterixFunctionInfo(fi)) != null;
+ return builtinUnnestingFunctions.containsKey(fi);
}
public static boolean returnsUniqueValues(FunctionIdentifier fi) {
- Boolean ruv = builtinUnnestingFunctions.get(getAsterixFunctionInfo(fi));
- return ruv != null && ruv.booleanValue();
- }
-
- public static FunctionIdentifier getLocalAggregateFunction(FunctionIdentifier fi) {
- return aggregateToLocalAggregate.get(getAsterixFunctionInfo(fi)).getFunctionIdentifier();
- }
-
- public static FunctionIdentifier getGlobalAggregateFunction(FunctionIdentifier fi) {
- return aggregateToGlobalAggregate.get(getAsterixFunctionInfo(fi)).getFunctionIdentifier();
+ Boolean ruv = builtinUnnestingFunctions.get(fi);
+ return ruv != null && ruv;
}
public static FunctionIdentifier getIntermediateAggregateFunction(FunctionIdentifier fi) {
- IFunctionInfo funcInfo = aggregateToIntermediateAggregate.get(getAsterixFunctionInfo(fi));
- if (funcInfo == null) {
- return null;
- }
- return funcInfo.getFunctionIdentifier();
- }
-
- public static FunctionIdentifier getBuiltinFunctionIdentifier(FunctionIdentifier fi) {
- IFunctionInfo finfo = getAsterixFunctionInfo(fi);
- return finfo == null ? null : finfo.getFunctionIdentifier();
+ return aggregateToIntermediateAggregate.get(fi);
}
public static AggregateFunctionCallExpression makeAggregateFunctionExpression(FunctionIdentifier fi,
List<Mutable<ILogicalExpression>> args) {
- IFunctionInfo finfo = getAsterixFunctionInfo(fi);
- IFunctionInfo fiLocal = aggregateToLocalAggregate.get(finfo);
- IFunctionInfo fiGlobal = aggregateToGlobalAggregate.get(finfo);
+ IFunctionInfo finfo = getBuiltinFunctionInfo(fi);
+ FunctionIdentifier fiLocal = aggregateToLocalAggregate.get(fi);
+ FunctionIdentifier fiGlobal = aggregateToGlobalAggregate.get(fi);
if (fiLocal != null && fiGlobal != null) {
AggregateFunctionCallExpression fun = new AggregateFunctionCallExpression(finfo, true, args);
- fun.setStepTwoAggregate(fiGlobal);
- fun.setStepOneAggregate(fiLocal);
+ fun.setStepTwoAggregate(getBuiltinFunctionInfo(fiGlobal));
+ fun.setStepOneAggregate(getBuiltinFunctionInfo(fiLocal));
return fun;
} else {
return new AggregateFunctionCallExpression(finfo, false, args);
@@ -3163,166 +3135,151 @@
}
public static boolean isAggregateFunctionSerializable(FunctionIdentifier fi) {
- IFunctionInfo finfo = getAsterixFunctionInfo(fi);
- return aggregateToSerializableAggregate.get(finfo) != null;
+ return aggregateToSerializableAggregate.containsKey(fi);
}
public static AggregateFunctionCallExpression makeSerializableAggregateFunctionExpression(FunctionIdentifier fi,
List<Mutable<ILogicalExpression>> args) {
- IFunctionInfo finfo = getAsterixFunctionInfo(fi);
- IFunctionInfo serializableFinfo = aggregateToSerializableAggregate.get(finfo);
- if (serializableFinfo == null) {
- throw new IllegalStateException(
- "no serializable implementation for aggregate function " + serializableFinfo);
+ FunctionIdentifier serializableFi = aggregateToSerializableAggregate.get(fi);
+ if (serializableFi == null) {
+ throw new IllegalStateException("no serializable implementation for aggregate function " + fi);
}
+ IFunctionInfo serializableFinfo = getBuiltinFunctionInfo(serializableFi);
- IFunctionInfo fiLocal = aggregateToLocalAggregate.get(serializableFinfo);
- IFunctionInfo fiGlobal = aggregateToGlobalAggregate.get(serializableFinfo);
+ FunctionIdentifier fiLocal = aggregateToLocalAggregate.get(serializableFi);
+ FunctionIdentifier fiGlobal = aggregateToGlobalAggregate.get(serializableFi);
if (fiLocal != null && fiGlobal != null) {
AggregateFunctionCallExpression fun = new AggregateFunctionCallExpression(serializableFinfo, true, args);
- fun.setStepTwoAggregate(fiGlobal);
- fun.setStepOneAggregate(fiLocal);
+ fun.setStepTwoAggregate(getBuiltinFunctionInfo(fiGlobal));
+ fun.setStepOneAggregate(getBuiltinFunctionInfo(fiLocal));
return fun;
} else {
return new AggregateFunctionCallExpression(serializableFinfo, false, args);
}
}
- public static IResultTypeComputer getResultTypeComputer(FunctionIdentifier fi) {
- return funTypeComputer.get(getAsterixFunctionInfo(fi));
- }
-
public static FunctionIdentifier getAggregateFunction(FunctionIdentifier scalarVersionOfAggregate) {
- IFunctionInfo finfo = scalarToAggregateFunctionMap.get(getAsterixFunctionInfo(scalarVersionOfAggregate));
- return finfo == null ? null : finfo.getFunctionIdentifier();
+ return scalarToAggregateFunctionMap.get(scalarVersionOfAggregate);
}
public static FunctionIdentifier getAggregateFunctionForDistinct(FunctionIdentifier distinctVersionOfAggregate) {
- IFunctionInfo finfo =
- distinctToRegularAggregateFunctionMap.get(getAsterixFunctionInfo(distinctVersionOfAggregate));
- return finfo == null ? null : finfo.getFunctionIdentifier();
+ return distinctToRegularAggregateFunctionMap.get(distinctVersionOfAggregate);
}
public static void addFunction(FunctionIdentifier fi, IResultTypeComputer typeComputer, boolean isFunctional) {
- addFunctionWithDomain(fi, ATypeHierarchy.Domain.ANY, typeComputer, isFunctional);
- }
-
- public static void addFunctionWithDomain(FunctionIdentifier fi, ATypeHierarchy.Domain funcDomain,
- IResultTypeComputer typeComputer, boolean isFunctional) {
- IFunctionInfo functionInfo = new FunctionInfo(fi, isFunctional);
- builtinPublicFunctionsSet.put(functionInfo, functionInfo);
- funTypeComputer.put(functionInfo, typeComputer);
- registeredFunctions.put(fi, functionInfo);
- registeredFunctionsDomain.put(functionInfo, funcDomain);
+ addFunction(new BuiltinFunctionInfo(fi, typeComputer, isFunctional, false));
}
public static void addPrivateFunction(FunctionIdentifier fi, IResultTypeComputer typeComputer,
boolean isFunctional) {
- IFunctionInfo functionInfo = new FunctionInfo(fi, isFunctional);
- builtinPrivateFunctionsSet.put(functionInfo, functionInfo);
- funTypeComputer.put(functionInfo, typeComputer);
- registeredFunctions.put(fi, functionInfo);
+ addFunction(new BuiltinFunctionInfo(fi, typeComputer, isFunctional, true));
}
- private static <T extends Enum<T> & BuiltinFunctionProperty> void registerFunctionProperties(IFunctionInfo finfo,
+ private static void addFunction(BuiltinFunctionInfo functionInfo) {
+ registeredFunctions.put(functionInfo.getFunctionIdentifier(), functionInfo);
+ }
+
+ private static <T extends Enum<T> & BuiltinFunctionProperty> void registerFunctionProperties(FunctionIdentifier fid,
Class<T> propertyClass, T[] properties) {
if (properties == null) {
return;
}
Set<T> propertySet = EnumSet.noneOf(propertyClass);
Collections.addAll(propertySet, properties);
- builtinFunctionProperties.put(finfo, propertySet);
+ builtinFunctionProperties.put(fid, propertySet);
}
public static boolean builtinFunctionHasProperty(FunctionIdentifier fi, BuiltinFunctionProperty property) {
- Set<? extends BuiltinFunctionProperty> propertySet = builtinFunctionProperties.get(getAsterixFunctionInfo(fi));
+ Set<? extends BuiltinFunctionProperty> propertySet = builtinFunctionProperties.get(fi);
return propertySet != null && propertySet.contains(property);
}
public static void addAgg(FunctionIdentifier fi) {
- builtinAggregateFunctions.add(getAsterixFunctionInfo(fi));
+ builtinAggregateFunctions.add(fi);
}
public static void addLocalAgg(FunctionIdentifier fi, FunctionIdentifier localfi) {
- aggregateToLocalAggregate.put(getAsterixFunctionInfo(fi), getAsterixFunctionInfo(localfi));
+ aggregateToLocalAggregate.put(fi, localfi);
}
public static void addIntermediateAgg(FunctionIdentifier fi, FunctionIdentifier globalfi) {
- aggregateToIntermediateAggregate.put(getAsterixFunctionInfo(fi), getAsterixFunctionInfo(globalfi));
+ aggregateToIntermediateAggregate.put(fi, globalfi);
}
public static void addGlobalAgg(FunctionIdentifier fi, FunctionIdentifier globalfi) {
- aggregateToGlobalAggregate.put(getAsterixFunctionInfo(fi), getAsterixFunctionInfo(globalfi));
- globalAggregateFunctions.add(getAsterixFunctionInfo(globalfi));
+ aggregateToGlobalAggregate.put(fi, globalfi);
+ globalAggregateFunctions.add(globalfi);
}
public static void addUnnestFun(FunctionIdentifier fi, boolean returnsUniqueValues) {
- builtinUnnestingFunctions.put(getAsterixFunctionInfo(fi), returnsUniqueValues);
+ builtinUnnestingFunctions.put(fi, returnsUniqueValues);
}
public static void addSerialAgg(FunctionIdentifier fi, FunctionIdentifier serialfi) {
- aggregateToSerializableAggregate.put(getAsterixFunctionInfo(fi), getAsterixFunctionInfo(serialfi));
+ aggregateToSerializableAggregate.put(fi, serialfi);
}
public static void addScalarAgg(FunctionIdentifier fi, FunctionIdentifier scalarfi) {
- scalarToAggregateFunctionMap.put(getAsterixFunctionInfo(scalarfi), getAsterixFunctionInfo(fi));
+ scalarToAggregateFunctionMap.put(scalarfi, fi);
}
public static void addDistinctAgg(FunctionIdentifier distinctfi, FunctionIdentifier fi) {
- distinctToRegularAggregateFunctionMap.put(getAsterixFunctionInfo(distinctfi), getAsterixFunctionInfo(fi));
+ distinctToRegularAggregateFunctionMap.put(distinctfi, fi);
}
public static void addWindowFunction(FunctionIdentifier sqlfi, FunctionIdentifier winfi,
WindowFunctionProperty... properties) {
- IFunctionInfo wininfo = getAsterixFunctionInfo(winfi);
if (sqlfi != null) {
- sqlToWindowFunctions.put(getAsterixFunctionInfo(sqlfi), wininfo);
+ sqlToWindowFunctions.put(sqlfi, winfi);
}
- windowFunctions.add(wininfo);
- registerFunctionProperties(wininfo, WindowFunctionProperty.class, properties);
+ windowFunctions.add(winfi);
+ registerFunctionProperties(winfi, WindowFunctionProperty.class, properties);
}
public static FunctionIdentifier getWindowFunction(FunctionIdentifier sqlfi) {
- IFunctionInfo finfo = sqlToWindowFunctions.get(getAsterixFunctionInfo(sqlfi));
- return finfo == null ? null : finfo.getFunctionIdentifier();
+ return sqlToWindowFunctions.get(sqlfi);
}
public static boolean isWindowFunction(FunctionIdentifier winfi) {
- return windowFunctions.contains(getAsterixFunctionInfo(winfi));
+ return windowFunctions.contains(winfi);
}
public static AbstractFunctionCallExpression makeWindowFunctionExpression(FunctionIdentifier winfi,
List<Mutable<ILogicalExpression>> args) {
- IFunctionInfo finfo = getAsterixFunctionInfo(winfi);
+ IFunctionInfo finfo = getBuiltinFunctionInfo(winfi);
if (finfo == null) {
- throw new IllegalStateException("no implementation for window function " + finfo);
+ throw new IllegalStateException("no implementation for window function " + winfi);
}
return new StatefulFunctionCallExpression(finfo, UnpartitionedPropertyComputer.INSTANCE, args);
}
+ public enum SpatialFilterKind {
+ SI
+ }
+
static {
- spatialFilterFunctions.put(getAsterixFunctionInfo(BuiltinFunctions.SPATIAL_INTERSECT), SpatialFilterKind.SI);
+ spatialFilterFunctions.put(BuiltinFunctions.SPATIAL_INTERSECT, SpatialFilterKind.SI);
}
public static boolean isGlobalAggregateFunction(FunctionIdentifier fi) {
- return globalAggregateFunctions.contains(getAsterixFunctionInfo(fi));
+ return globalAggregateFunctions.contains(fi);
}
public static boolean isSpatialFilterFunction(FunctionIdentifier fi) {
- return spatialFilterFunctions.get(getAsterixFunctionInfo(fi)) != null;
+ return spatialFilterFunctions.get(fi) != null;
}
static {
- similarityFunctions.add(getAsterixFunctionInfo(SIMILARITY_JACCARD));
- similarityFunctions.add(getAsterixFunctionInfo(SIMILARITY_JACCARD_CHECK));
- similarityFunctions.add(getAsterixFunctionInfo(EDIT_DISTANCE));
- similarityFunctions.add(getAsterixFunctionInfo(EDIT_DISTANCE_CHECK));
- similarityFunctions.add(getAsterixFunctionInfo(EDIT_DISTANCE_CONTAINS));
+ similarityFunctions.add(SIMILARITY_JACCARD);
+ similarityFunctions.add(SIMILARITY_JACCARD_CHECK);
+ similarityFunctions.add(EDIT_DISTANCE);
+ similarityFunctions.add(EDIT_DISTANCE_CHECK);
+ similarityFunctions.add(EDIT_DISTANCE_CONTAINS);
}
public static boolean isSimilarityFunction(FunctionIdentifier fi) {
- return similarityFunctions.contains(getAsterixFunctionInfo(fi));
+ return similarityFunctions.contains(fi);
}
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/ExternalFunctionInfo.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/ExternalFunctionInfo.java
index bdaa3fe..7477330 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/ExternalFunctionInfo.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/ExternalFunctionInfo.java
@@ -22,6 +22,7 @@
import java.util.Map;
import org.apache.asterix.common.functions.ExternalFunctionLanguage;
+import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.om.typecomputer.base.IResultTypeComputer;
import org.apache.asterix.om.types.IAType;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression.FunctionKind;
@@ -29,54 +30,30 @@
public class ExternalFunctionInfo extends FunctionInfo implements IExternalFunctionInfo {
- private static final long serialVersionUID = 2L;
+ private static final long serialVersionUID = 4L;
- private final transient IResultTypeComputer rtc;
- private final List<IAType> argumentTypes;
- private final ExternalFunctionLanguage language;
private final FunctionKind kind;
+ private final List<IAType> parameterTypes;
private final IAType returnType;
- private final String library;
+ private final ExternalFunctionLanguage language;
+ private final DataverseName libraryDataverseName;
+ private final String libraryName;
private final List<String> externalIdentifier;
- private final Map<String, String> params;
+ private final Map<String, String> resources;
- public ExternalFunctionInfo(String namespace, String name, int arity, FunctionKind kind, List<IAType> argumentTypes,
- IAType returnType, IResultTypeComputer rtc, ExternalFunctionLanguage language, String library,
- List<String> externalIdentifier, Map<String, String> params, boolean deterministic) {
- this(new FunctionIdentifier(namespace, name, arity), kind, argumentTypes, returnType, rtc, language, library,
- externalIdentifier, params, deterministic);
- }
-
- public ExternalFunctionInfo(FunctionIdentifier fid, FunctionKind kind, List<IAType> argumentTypes,
- IAType returnType, IResultTypeComputer rtc, ExternalFunctionLanguage language, String library,
- List<String> externalIdentifier, Map<String, String> params, boolean deterministic) {
- super(fid, deterministic);
- this.rtc = rtc;
- this.argumentTypes = argumentTypes;
- this.library = library;
- this.language = language;
- this.externalIdentifier = externalIdentifier;
+ public ExternalFunctionInfo(FunctionIdentifier fid, FunctionKind kind, List<IAType> parameterTypes,
+ IAType returnType, IResultTypeComputer rtc, ExternalFunctionLanguage language,
+ DataverseName libraryDataverseName, String libraryName, List<String> externalIdentifier,
+ Map<String, String> resources, boolean deterministic) {
+ super(fid, rtc, deterministic);
this.kind = kind;
+ this.parameterTypes = parameterTypes;
this.returnType = returnType;
- this.params = params;
- }
-
- public IResultTypeComputer getResultTypeComputer() {
- return rtc;
- }
-
- public List<IAType> getArgumentTypes() {
- return argumentTypes;
- }
-
- @Override
- public List<IAType> getArgumentList() {
- return argumentTypes;
- }
-
- @Override
- public ExternalFunctionLanguage getLanguage() {
- return language;
+ this.language = language;
+ this.libraryDataverseName = libraryDataverseName;
+ this.libraryName = libraryName;
+ this.externalIdentifier = externalIdentifier;
+ this.resources = resources;
}
@Override
@@ -85,13 +62,27 @@
}
@Override
+ public List<IAType> getParameterTypes() {
+ return parameterTypes;
+ }
+
+ @Override
public IAType getReturnType() {
return returnType;
}
@Override
- public String getLibrary() {
- return library;
+ public ExternalFunctionLanguage getLanguage() {
+ return language;
+ }
+
+ public DataverseName getLibraryDataverseName() {
+ return libraryDataverseName;
+ }
+
+ @Override
+ public String getLibraryName() {
+ return libraryName;
}
@Override
@@ -100,7 +91,7 @@
}
@Override
- public Map<String, String> getParams() {
- return params;
+ public Map<String, String> getResources() {
+ return resources;
}
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/FunctionInfo.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/FunctionInfo.java
index 484f374..f7f46f5 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/FunctionInfo.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/FunctionInfo.java
@@ -19,25 +19,25 @@
package org.apache.asterix.om.functions;
import java.util.List;
+import java.util.Objects;
+import org.apache.asterix.om.typecomputer.base.IResultTypeComputer;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-public class FunctionInfo implements IFunctionInfo {
- private static final long serialVersionUID = 5460606629941107898L;
+public abstract class FunctionInfo implements IFunctionInfo {
+ private static final long serialVersionUID = 5460606629941107899L;
private final FunctionIdentifier functionIdentifier;
+ private final transient IResultTypeComputer typeComputer;
private final boolean isFunctional;
- public FunctionInfo(String namespace, String name, int arity, boolean isFunctional) {
- this(new FunctionIdentifier(namespace, name, arity), isFunctional);
- }
-
- public FunctionInfo(FunctionIdentifier functionIdentifier, boolean isFunctional) {
+ public FunctionInfo(FunctionIdentifier functionIdentifier, IResultTypeComputer typeComputer, boolean isFunctional) {
+ this.functionIdentifier = Objects.requireNonNull(functionIdentifier);
+ this.typeComputer = Objects.requireNonNull(typeComputer);
this.isFunctional = isFunctional;
- this.functionIdentifier = functionIdentifier;
}
@Override
@@ -50,6 +50,10 @@
return isFunctional;
}
+ public IResultTypeComputer getResultTypeComputer() {
+ return typeComputer;
+ }
+
/**
* @param args,
* the arguments.
@@ -61,24 +65,7 @@
}
@Override
- public int hashCode() {
- return toString().hashCode();
- }
-
- @Override
- public boolean equals(Object o) {
- if (!(o instanceof FunctionInfo)) {
- return false;
- }
- FunctionInfo info = (FunctionInfo) o;
- return functionIdentifier.equals(info.getFunctionIdentifier())
- && functionIdentifier.getArity() == info.getFunctionIdentifier().getArity();
- }
-
- @Override
public String toString() {
- return this.functionIdentifier.getNamespace() + ":" + this.functionIdentifier.getName() + "@"
- + this.functionIdentifier.getArity();
+ return functionIdentifier.toString();
}
-
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IExternalFunctionInfo.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IExternalFunctionInfo.java
index 1db0c19..d87d6df 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IExternalFunctionInfo.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IExternalFunctionInfo.java
@@ -22,6 +22,7 @@
import java.util.Map;
import org.apache.asterix.common.functions.ExternalFunctionLanguage;
+import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.om.typecomputer.base.IResultTypeComputer;
import org.apache.asterix.om.types.IAType;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression.FunctionKind;
@@ -29,20 +30,21 @@
public interface IExternalFunctionInfo extends IFunctionInfo {
- IResultTypeComputer getResultTypeComputer();
+ FunctionKind getKind();
+
+ List<IAType> getParameterTypes();
IAType getReturnType();
- List<String> getExternalIdentifier();
-
- List<IAType> getArgumentList();
+ IResultTypeComputer getResultTypeComputer();
ExternalFunctionLanguage getLanguage();
- FunctionKind getKind();
+ DataverseName getLibraryDataverseName();
- String getLibrary();
+ String getLibraryName();
- Map<String, String> getParams();
+ List<String> getExternalIdentifier();
+ Map<String, String> getResources();
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionToDataSourceRewriter.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionToDataSourceRewriter.java
index 2793c4d..75a9689 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionToDataSourceRewriter.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionToDataSourceRewriter.java
@@ -24,8 +24,6 @@
import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
public interface IFunctionToDataSourceRewriter {
- public static final IFunctionToDataSourceRewriter NOOP = (o, c) -> false;
-
/**
* Replace the unnest operator by a datasource operator
*
diff --git a/asterixdb/asterix-om/src/test/java/org/apache/asterix/test/om/typecomputer/ExceptionTest.java b/asterixdb/asterix-om/src/test/java/org/apache/asterix/test/om/typecomputer/ExceptionTest.java
index 91752f7..6cecaec 100644
--- a/asterixdb/asterix-om/src/test/java/org/apache/asterix/test/om/typecomputer/ExceptionTest.java
+++ b/asterixdb/asterix-om/src/test/java/org/apache/asterix/test/om/typecomputer/ExceptionTest.java
@@ -31,6 +31,7 @@
import java.util.Map;
import java.util.Set;
+import org.apache.asterix.om.functions.BuiltinFunctionInfo;
import org.apache.asterix.om.functions.BuiltinFunctions;
import org.apache.asterix.om.typecomputer.base.IResultTypeComputer;
import org.apache.asterix.om.types.ATypeTag;
@@ -43,7 +44,6 @@
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
@@ -110,50 +110,41 @@
// First, we will go over all the functions available, get their arity and type computers to know the number
// of arguments to pass for each type computer
- Map<IFunctionInfo, IResultTypeComputer> funTypeComputerMap;
+ Map<FunctionIdentifier, BuiltinFunctionInfo> registeredFunctions;
try {
- Field field = BuiltinFunctions.class.getDeclaredField("funTypeComputer");
+ Field field = BuiltinFunctions.class.getDeclaredField("registeredFunctions");
field.setAccessible(true);
- funTypeComputerMap = (HashMap<IFunctionInfo, IResultTypeComputer>) field.get(null);
+ registeredFunctions = (Map<FunctionIdentifier, BuiltinFunctionInfo>) field.get(null);
} catch (Exception ex) {
// this should never fail
throw new IllegalStateException();
}
- if (funTypeComputerMap != null) {
- // Note: If a type computer handles both known and VARARGS, VARARGS will be used
- for (HashMap.Entry<IFunctionInfo, IResultTypeComputer> entry : funTypeComputerMap.entrySet()) {
- // Some functions have a null type computer for some reason, ignore them
- if (entry.getValue() == null) {
- continue;
- }
+ // Note: If a type computer handles both known and VARARGS, VARARGS will be used
+ for (BuiltinFunctionInfo finfo : registeredFunctions.values()) {
+ FunctionIdentifier fid = finfo.getFunctionIdentifier();
+ IResultTypeComputer typeComputer = finfo.getResultTypeComputer();
- // Type computer does not exist, add it with its arity to the map
- if (typeComputerToArgsCountMap.get(entry.getValue().getClass().getSimpleName()) == null) {
- typeComputerToArgsCountMap.put(entry.getValue().getClass().getSimpleName(),
- entry.getKey().getFunctionIdentifier().getArity());
- continue;
- }
+ // Type computer does not exist, add it with its arity to the map
+ if (typeComputerToArgsCountMap.get(typeComputer.getClass().getSimpleName()) == null) {
+ typeComputerToArgsCountMap.put(typeComputer.getClass().getSimpleName(), fid.getArity());
+ continue;
+ }
- // VARARGS functions, these are kept as is, put/update, no need for any comparison
- if (entry.getKey().getFunctionIdentifier().getArity() == FunctionIdentifier.VARARGS) {
- typeComputerToArgsCountMap.put(entry.getValue().getClass().getSimpleName(),
- entry.getKey().getFunctionIdentifier().getArity());
- continue;
- }
+ // VARARGS functions, these are kept as is, put/update, no need for any comparison
+ if (fid.getArity() == FunctionIdentifier.VARARGS) {
+ typeComputerToArgsCountMap.put(typeComputer.getClass().getSimpleName(), fid.getArity());
+ continue;
+ }
- // We have it already, and it is of type VARARGS, we are not going to change it
- if (typeComputerToArgsCountMap
- .get(entry.getValue().getClass().getSimpleName()) == FunctionIdentifier.VARARGS) {
- continue;
- }
+ // We have it already, and it is of type VARARGS, we are not going to change it
+ if (typeComputerToArgsCountMap.get(typeComputer.getClass().getSimpleName()) == FunctionIdentifier.VARARGS) {
+ continue;
+ }
- // We have it already, if it has larger arity than our existing one, we will update it
- if (typeComputerToArgsCountMap.get(entry.getValue().getClass().getSimpleName()) < entry.getKey()
- .getFunctionIdentifier().getArity()) {
- typeComputerToArgsCountMap.put(entry.getValue().getClass().getSimpleName(),
- entry.getKey().getFunctionIdentifier().getArity());
- }
+ // We have it already, if it has larger arity than our existing one, we will update it
+ if (typeComputerToArgsCountMap.get(typeComputer.getClass().getSimpleName()) < fid.getArity()) {
+ typeComputerToArgsCountMap.put(typeComputer.getClass().getSimpleName(), fid.getArity());
}
}
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/IndexReplicationManager.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/IndexReplicationManager.java
index 4d660d2..dd953c4 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/IndexReplicationManager.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/IndexReplicationManager.java
@@ -131,9 +131,14 @@
private boolean skip(IReplicationJob job) {
try {
- final DatasetResourceReference indexFileRef =
- resourceRepository.getLocalResourceReference(job.getAnyFile());
- return !replicationStrategy.isMatch(indexFileRef.getDatasetId());
+ final String fileToReplicate = job.getAnyFile();
+ final Optional<DatasetResourceReference> indexFileRefOpt =
+ resourceRepository.getLocalResourceReference(fileToReplicate);
+ if (!indexFileRefOpt.isPresent()) {
+ LOGGER.warn("skipping replication of {} due to missing dataset resource reference", fileToReplicate);
+ return true;
+ }
+ return !replicationStrategy.isMatch(indexFileRefOpt.get().getDatasetId());
} catch (HyracksDataException e) {
throw new IllegalStateException("Couldn't find resource for " + job.getAnyFile(), e);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSamplingAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSamplingAggregateDescriptor.java
index 5e0f0d9..51431d3 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSamplingAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/std/LocalSamplingAggregateDescriptor.java
@@ -19,6 +19,8 @@
package org.apache.asterix.runtime.aggregates.std;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Random;
import org.apache.asterix.common.config.CompilerProperties;
import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
@@ -42,7 +44,6 @@
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.api.exceptions.SourceLocation;
import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.primitive.IntegerPointable;
import org.apache.hyracks.data.std.primitive.VoidPointable;
import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
@@ -97,7 +98,9 @@
private final IPointable inputFieldValue = new VoidPointable();
private final int numSamplesRequired;
private final IScalarEvaluator[] sampledFieldsEval;
- private int numSamples;
+ private final ArrayList<ArrayBackedValueStorage> samples = new ArrayList<>();
+ private final Random random = new Random();
+ private int count = 0;
/**
* @param args the fields that constitute a sample, e.g., $$1, $$2
@@ -119,10 +122,9 @@
@Override
public void init() throws HyracksDataException {
- numSamples = 0;
+ samples.clear();
+ count = 0;
rangeMapBits.reset();
- // write a dummy integer at the beginning to be filled later with the actual number of samples taken
- IntegerSerializerDeserializer.write(0, rangeMapBits.getDataOutput());
}
/**
@@ -132,15 +134,27 @@
*/
@Override
public void step(IFrameTupleReference tuple) throws HyracksDataException {
- if (numSamples >= numSamplesRequired) {
+ count++;
+ if (samples.size() < numSamplesRequired) {
+ ArrayBackedValueStorage sampleStorage = new ArrayBackedValueStorage();
+ writeTupleKey(tuple, sampleStorage);
+ samples.add(sampleStorage);
return;
}
- for (int i = 0; i < sampledFieldsEval.length; i++) {
- sampledFieldsEval[i].evaluate(tuple, inputFieldValue);
- IntegerSerializerDeserializer.write(inputFieldValue.getLength(), rangeMapBits.getDataOutput());
- rangeMapBits.append(inputFieldValue);
+ int swap = random.nextInt(count);
+ if (swap < numSamplesRequired) {
+ writeTupleKey(tuple, samples.get(swap));
}
- numSamples++;
+ }
+
+ private void writeTupleKey(IFrameTupleReference tuple, ArrayBackedValueStorage storage)
+ throws HyracksDataException {
+ storage.reset();
+ for (IScalarEvaluator iScalarEvaluator : sampledFieldsEval) {
+ iScalarEvaluator.evaluate(tuple, inputFieldValue);
+ IntegerSerializerDeserializer.write(inputFieldValue.getLength(), storage.getDataOutput());
+ storage.append(inputFieldValue);
+ }
}
/**
@@ -151,7 +165,7 @@
@Override
public void finish(IPointable result) throws HyracksDataException {
storage.reset();
- if (numSamples == 0) {
+ if (samples.size() == 0) {
// empty partition? then send system null as an indication of empty partition.
try {
storage.getDataOutput().writeByte(ATypeTag.SERIALIZED_SYSTEM_NULL_TYPE_TAG);
@@ -160,7 +174,11 @@
throw HyracksDataException.create(e);
}
} else {
- IntegerPointable.setInteger(rangeMapBits.getByteArray(), rangeMapBits.getStartOffset(), numSamples);
+ rangeMapBits.reset();
+ IntegerSerializerDeserializer.write(samples.size(), rangeMapBits.getDataOutput());
+ for (ArrayBackedValueStorage sample : samples) {
+ rangeMapBits.append(sample);
+ }
binary.setValue(rangeMapBits.getByteArray(), rangeMapBits.getStartOffset(), rangeMapBits.getLength());
binarySerde.serialize(binary, storage.getDataOutput());
result.set(storage);
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/base/UnnestingPositionWriter.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/base/UnnestingPositionWriter.java
new file mode 100644
index 0000000..b8bfa7e
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/base/UnnestingPositionWriter.java
@@ -0,0 +1,47 @@
+/*
+ * 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.base;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
+import org.apache.asterix.om.base.AInt64;
+import org.apache.asterix.om.base.AMutableInt64;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.hyracks.algebricks.data.IUnnestingPositionWriter;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.util.annotations.NotThreadSafe;
+
+@NotThreadSafe
+final class UnnestingPositionWriter implements IUnnestingPositionWriter {
+
+ private final AMutableInt64 aInt64 = new AMutableInt64(0);
+
+ @SuppressWarnings("unchecked")
+ private final ISerializerDeserializer<AInt64> aInt64Serde =
+ SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.AINT64);
+
+ @Override
+ public void write(DataOutput dataOutput, long position) throws IOException {
+ aInt64.setValue(position);
+ aInt64Serde.serialize(aInt64, dataOutput);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/base/UnnestingPositionWriterFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/base/UnnestingPositionWriterFactory.java
new file mode 100644
index 0000000..a662ac0
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/base/UnnestingPositionWriterFactory.java
@@ -0,0 +1,38 @@
+/*
+ * 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.base;
+
+import org.apache.hyracks.algebricks.data.IUnnestingPositionWriter;
+import org.apache.hyracks.algebricks.data.IUnnestingPositionWriterFactory;
+
+public final class UnnestingPositionWriterFactory implements IUnnestingPositionWriterFactory {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final UnnestingPositionWriterFactory INSTANCE = new UnnestingPositionWriterFactory();
+
+ private UnnestingPositionWriterFactory() {
+ }
+
+ @Override
+ public IUnnestingPositionWriter createUnnestingPositionWriter() {
+ return new UnnestingPositionWriter();
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CodePointToStringDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CodePointToStringDescriptor.java
index fcfab72..3147a9c 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CodePointToStringDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/CodePointToStringDescriptor.java
@@ -70,6 +70,7 @@
private final byte[] currentUTF8 = new byte[6];
private final byte[] tempStoreForLength = new byte[5];
private final FunctionIdentifier fid = getIdentifier();
+ private final char[] tempCharPair = new char[2];
@Override
public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
@@ -121,7 +122,7 @@
if (!returnNull) {
int codePoint = ATypeHierarchy.getIntegerValueWithDifferentTypeTagPosition(
fid.getName(), 0, serOrderedList, itemOffset, itemTagPosition);
- utf_8_len += UTF8StringUtil.codePointToUTF8(codePoint, currentUTF8);
+ utf_8_len += UTF8StringUtil.codePointToUTF8(codePoint, tempCharPair, currentUTF8);
}
}
if (returnNull) {
@@ -142,7 +143,7 @@
}
int codePoint = ATypeHierarchy.getIntegerValueWithDifferentTypeTagPosition(
fid.getName(), 0, serOrderedList, itemOffset, itemTagPosition);
- utf_8_len = UTF8StringUtil.codePointToUTF8(codePoint, currentUTF8);
+ utf_8_len = UTF8StringUtil.codePointToUTF8(codePoint, tempCharPair, currentUTF8);
for (int j = 0; j < utf_8_len; j++) {
out.writeByte(currentUTF8[j]);
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/DecodeDataverseDisplayNameDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/DecodeDataverseDisplayNameDescriptor.java
new file mode 100644
index 0000000..a622fe8
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/DecodeDataverseDisplayNameDescriptor.java
@@ -0,0 +1,74 @@
+/*
+ * 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.evaluators.functions;
+
+import java.io.IOException;
+
+import org.apache.asterix.common.annotations.MissingNullInOutFunction;
+import org.apache.asterix.common.metadata.DataverseName;
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IEvaluatorContext;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+
+@MissingNullInOutFunction
+public class DecodeDataverseDisplayNameDescriptor extends AbstractScalarFunctionDynamicDescriptor {
+ private static final long serialVersionUID = 1L;
+
+ public static final IFunctionDescriptorFactory FACTORY = DecodeDataverseDisplayNameDescriptor::new;
+
+ @Override
+ public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+ return new IScalarEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IScalarEvaluator createScalarEvaluator(IEvaluatorContext ctx) throws HyracksDataException {
+ return new AbstractUnaryStringStringEval(ctx, args[0], getIdentifier(), sourceLoc) {
+
+ private final StringBuilder sb = new StringBuilder();
+
+ @Override
+ void process(UTF8StringPointable inputString, IPointable resultPointable) throws IOException {
+ String dataverseCanonicalName = inputString.toString();
+
+ sb.setLength(0);
+ DataverseName.getDisplayFormFromCanonicalForm(dataverseCanonicalName, sb);
+
+ resultBuilder.reset(resultArray, inputString.getUTF8Length());
+ resultBuilder.appendString(sb);
+ resultBuilder.finish();
+ }
+ };
+ }
+ };
+ }
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.DECODE_DATAVERSE_DISPLAY_NAME;
+ }
+}
\ No newline at end of file
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/DecodeDataverseNameDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/DecodeDataverseNameDescriptor.java
index 1ec6a5a..fbbe5c5 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/DecodeDataverseNameDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/DecodeDataverseNameDescriptor.java
@@ -101,10 +101,8 @@
strPtr.set(bytes, offset + 1, len - 1);
String dataverseCanonicalName = strPtr.toString();
- DataverseName dataverseName = DataverseName.createFromCanonicalForm(dataverseCanonicalName);
-
dataverseNameParts.clear();
- dataverseName.getParts(dataverseNameParts);
+ DataverseName.getPartsFromCanonicalForm(dataverseCanonicalName, dataverseNameParts);
resultStorage.reset();
listBuilder.reset(listType);
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringEvaluatorUtils.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringEvaluatorUtils.java
index 81ce832..492d64c 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringEvaluatorUtils.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringEvaluatorUtils.java
@@ -60,8 +60,8 @@
return destString;
}
- static final char[] RESERVED_REGEX_CHARS = new char[] { '\\', '(', ')', '[', ']', '{', '}', '.', '^', '$', '*', '|',
- '+', '?', '<', '>', '-', '=', '!' };
+ public static final char[] RESERVED_REGEX_CHARS = new char[] { '\\', '(', ')', '[', ']', '{', '}', '.', '^', '$',
+ '*', '|', '+', '?', '<', '>', '-', '=', '!' };
static {
Arrays.sort(RESERVED_REGEX_CHARS);
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringLTrimDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringLTrimDescriptor.java
index 6e4f476..4d4fd93 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringLTrimDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringLTrimDescriptor.java
@@ -60,7 +60,8 @@
public IScalarEvaluator createScalarEvaluator(IEvaluatorContext ctx) throws HyracksDataException {
return new AbstractUnaryStringStringEval(ctx, args[0], StringLTrimDescriptor.this.getIdentifier(),
sourceLoc) {
- private StringTrimmer stringTrimmer = new StringTrimmer(resultBuilder, resultArray, " ");
+ private StringTrimmer stringTrimmer =
+ new StringTrimmer(resultBuilder, resultArray, UTF8StringPointable.SPACE_STRING_POINTABLE);
@Override
protected void process(UTF8StringPointable srcPtr, IPointable resultStrPtr) throws IOException {
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringLengthDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringLengthDescriptor.java
index 72b6a47..a4fd667 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringLengthDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringLengthDescriptor.java
@@ -91,7 +91,7 @@
ATypeTag.STRING);
return;
}
- int len = UTF8StringUtil.getUTFLength(serString, offset + 1);
+ int len = UTF8StringUtil.getNumCodePoint(serString, offset + 1);
result.setValue(len);
int64Serde.serialize(result, out);
resultPointable.set(resultStorage);
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringPositionDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringPositionDescriptor.java
index f7177fd..6c06056 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringPositionDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringPositionDescriptor.java
@@ -48,7 +48,7 @@
@Override
protected int compute(UTF8StringPointable left, UTF8StringPointable right) {
- return UTF8StringPointable.find(left, right, false);
+ return UTF8StringPointable.findInCodePoint(left, right, false);
}
};
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringPositionOffset1Descriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringPositionOffset1Descriptor.java
index 10cc779..93ada0f 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringPositionOffset1Descriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringPositionOffset1Descriptor.java
@@ -48,7 +48,7 @@
@Override
protected int compute(UTF8StringPointable left, UTF8StringPointable right) {
- int pos = UTF8StringPointable.find(left, right, false);
+ int pos = UTF8StringPointable.findInCodePoint(left, right, false);
return pos < 0 ? pos : pos + 1;
}
};
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRTrimDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRTrimDescriptor.java
index f74b641..e99c401 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRTrimDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRTrimDescriptor.java
@@ -60,7 +60,8 @@
public IScalarEvaluator createScalarEvaluator(IEvaluatorContext ctx) throws HyracksDataException {
return new AbstractUnaryStringStringEval(ctx, args[0], StringRTrimDescriptor.this.getIdentifier(),
sourceLoc) {
- private StringTrimmer stringTrimmer = new StringTrimmer(resultBuilder, resultArray, " ");
+ private StringTrimmer stringTrimmer =
+ new StringTrimmer(resultBuilder, resultArray, UTF8StringPointable.SPACE_STRING_POINTABLE);
@Override
protected void process(UTF8StringPointable srcPtr, IPointable resultStrPtr) throws IOException {
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRegExpSplitDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRegExpSplitDescriptor.java
index da6a206..8de8c8a 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRegExpSplitDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRegExpSplitDescriptor.java
@@ -30,6 +30,7 @@
import org.apache.asterix.om.types.AbstractCollectionType;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import org.apache.asterix.runtime.evaluators.functions.utils.RegExpMatcher;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IEvaluatorContext;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
@@ -65,10 +66,13 @@
private final AbstractCollectionType collectionType =
new AOrderedListType(BuiltinType.ASTRING, BuiltinType.ASTRING.getTypeName());
+ private final RegExpMatcher matcher = new RegExpMatcher();
+
@Override
protected void process(UTF8StringPointable srcPtr, UTF8StringPointable patternPtr,
IPointable result) throws HyracksDataException {
- String[] splits = srcPtr.toString().split(patternPtr.toString());
+ matcher.build(srcPtr, patternPtr);
+ String[] splits = matcher.split();
// Result is a list of type strings
listBuilder.reset(collectionType);
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringToCodePointDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringToCodePointDescriptor.java
index e4fb37b..8d03352 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringToCodePointDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringToCodePointDescriptor.java
@@ -105,8 +105,8 @@
int pos = 0;
listBuilder.reset(intListType);
while (pos < len) {
- int codePoint = UTF8StringUtil.UTF8ToCodePoint(serString, start + pos);
- pos += UTF8StringUtil.charSize(serString, start + pos);
+ int codePoint = UTF8StringUtil.codePointAt(serString, start + pos);
+ pos += UTF8StringUtil.codePointSize(serString, start + pos);
inputVal.reset();
aInt64.setValue(codePoint);
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringTrimDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringTrimDescriptor.java
index 704bf7d..3f0ec52 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringTrimDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringTrimDescriptor.java
@@ -60,7 +60,8 @@
public IScalarEvaluator createScalarEvaluator(IEvaluatorContext ctx) throws HyracksDataException {
return new AbstractUnaryStringStringEval(ctx, args[0], StringTrimDescriptor.this.getIdentifier(),
sourceLoc) {
- private StringTrimmer stringTrimmer = new StringTrimmer(resultBuilder, resultArray, " ");
+ private StringTrimmer stringTrimmer =
+ new StringTrimmer(resultBuilder, resultArray, UTF8StringPointable.SPACE_STRING_POINTABLE);
@Override
protected void process(UTF8StringPointable srcPtr, IPointable resultStrPtr) throws IOException {
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java
index 2178b48..58495e8 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/temporal/IntervalLogic.java
@@ -25,7 +25,7 @@
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-class IntervalLogic {
+public class IntervalLogic {
private final IBinaryComparator comp;
private final ArrayBackedValueStorage s1 = new ArrayBackedValueStorage();
@@ -33,7 +33,7 @@
private final ArrayBackedValueStorage s2 = new ArrayBackedValueStorage();
private final ArrayBackedValueStorage e2 = new ArrayBackedValueStorage();
- IntervalLogic() {
+ public IntervalLogic() {
comp = BinaryComparatorFactoryProvider.INSTANCE
.getBinaryComparatorFactory(BuiltinType.ANY, BuiltinType.ANY, true).createBinaryComparator();
}
@@ -47,7 +47,7 @@
* @throws HyracksDataException IOException
* @see #after(AIntervalPointable, AIntervalPointable)
*/
- boolean before(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean before(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
e1.reset();
s2.reset();
ip1.getTaggedEnd(e1.getDataOutput());
@@ -56,7 +56,7 @@
s2.getStartOffset(), s2.getLength()) < 0;
}
- boolean after(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean after(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
return before(ip2, ip1);
}
@@ -69,7 +69,7 @@
* @throws HyracksDataException IOException
* @see #metBy(AIntervalPointable, AIntervalPointable)
*/
- boolean meets(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean meets(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
e1.reset();
s2.reset();
ip1.getTaggedEnd(e1.getDataOutput());
@@ -78,7 +78,7 @@
s2.getStartOffset(), s2.getLength()) == 0;
}
- boolean metBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean metBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
return meets(ip2, ip1);
}
@@ -91,7 +91,7 @@
* @throws HyracksDataException IOException
* @see #overlappedBy(AIntervalPointable, AIntervalPointable)
*/
- boolean overlaps(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean overlaps(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
s1.reset();
e1.reset();
s2.reset();
@@ -108,7 +108,7 @@
e2.getStartOffset(), e2.getLength()) < 0;
}
- boolean overlappedBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean overlappedBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
return overlaps(ip2, ip1);
}
@@ -120,7 +120,7 @@
* @throws HyracksDataException IOException
* @return boolean
*/
- boolean overlapping(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean overlapping(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
s1.reset();
e1.reset();
s2.reset();
@@ -144,7 +144,7 @@
* @throws HyracksDataException IOException
* @see #startedBy(AIntervalPointable, AIntervalPointable)
*/
- boolean starts(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean starts(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
s1.reset();
e1.reset();
s2.reset();
@@ -159,7 +159,7 @@
e2.getStartOffset(), e2.getLength()) <= 0;
}
- boolean startedBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean startedBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
return starts(ip2, ip1);
}
@@ -172,7 +172,7 @@
* @throws HyracksDataException IOException
* @see #coveredBy(AIntervalPointable, AIntervalPointable)
*/
- boolean covers(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean covers(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
s1.reset();
e1.reset();
s2.reset();
@@ -187,7 +187,7 @@
e2.getStartOffset(), e2.getLength()) >= 0;
}
- boolean coveredBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean coveredBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
return covers(ip2, ip1);
}
@@ -200,7 +200,7 @@
* @throws HyracksDataException IOException
* @see #endedBy(AIntervalPointable, AIntervalPointable)
*/
- boolean ends(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean ends(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
s1.reset();
e1.reset();
s2.reset();
@@ -215,7 +215,7 @@
e2.getStartOffset(), e2.getLength()) == 0;
}
- boolean endedBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
+ public boolean endedBy(AIntervalPointable ip1, AIntervalPointable ip2) throws HyracksDataException {
return ends(ip2, ip1);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/utils/RegExpMatcher.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/utils/RegExpMatcher.java
index 778df5b..1a190cc 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/utils/RegExpMatcher.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/utils/RegExpMatcher.java
@@ -209,4 +209,13 @@
matcher.appendTail(resultBuf);
return resultBuf.toString();
}
+
+ /**
+ * Splits the provided source string using the provided regular expression.
+ *
+ * @return the string split tokens
+ */
+ public String[] split() {
+ return pattern.split(charSeq);
+ }
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/utils/StringTrimmer.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/utils/StringTrimmer.java
index 3e41b1b..8dc41f5 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/utils/StringTrimmer.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/utils/StringTrimmer.java
@@ -22,13 +22,15 @@
import java.io.IOException;
import org.apache.asterix.runtime.evaluators.functions.StringEvaluatorUtils;
-import org.apache.commons.lang3.CharSet;
import org.apache.hyracks.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
import org.apache.hyracks.data.std.util.ByteArrayAccessibleOutputStream;
import org.apache.hyracks.data.std.util.GrowableArray;
import org.apache.hyracks.data.std.util.UTF8StringBuilder;
+import it.unimi.dsi.fastutil.ints.IntArraySet;
+import it.unimi.dsi.fastutil.ints.IntSet;
+
/**
* A wrapper for string trim methods.
*/
@@ -37,7 +39,7 @@
// For the char set to trim.
private final ByteArrayAccessibleOutputStream lastPatternStorage = new ByteArrayAccessibleOutputStream();
private final UTF8StringPointable lastPatternPtr = new UTF8StringPointable();
- private CharSet charSet;
+ private IntSet codePointSet = new IntArraySet();
// For outputting the result.
private final UTF8StringBuilder resultBuilder;
@@ -61,11 +63,12 @@
* @param pattern
* , the string that is used to construct the charset for trimming.
*/
- public StringTrimmer(UTF8StringBuilder resultBuilder, GrowableArray resultArray, String pattern) {
+ public StringTrimmer(UTF8StringBuilder resultBuilder, GrowableArray resultArray, UTF8StringPointable pattern) {
this.resultBuilder = resultBuilder;
this.resultArray = resultArray;
if (pattern != null) {
- charSet = CharSet.getInstance(pattern);
+ codePointSet.clear();
+ pattern.getCodePoints(codePointSet);
}
}
@@ -76,10 +79,11 @@
* , a pattern string.
*/
public void build(UTF8StringPointable patternPtr) {
- final boolean newPattern = charSet == null || lastPatternPtr.compareTo(patternPtr) != 0;
+ final boolean newPattern = (codePointSet.size() == 0) || lastPatternPtr.compareTo(patternPtr) != 0;
if (newPattern) {
StringEvaluatorUtils.copyResetUTF8Pointable(patternPtr, lastPatternStorage, lastPatternPtr);
- charSet = CharSet.getInstance(patternPtr.toString());
+ codePointSet.clear();
+ patternPtr.getCodePoints(codePointSet);
}
}
@@ -98,7 +102,8 @@
*/
public void trim(UTF8StringPointable srcPtr, IPointable resultStrPtr, boolean left, boolean right)
throws IOException {
- UTF8StringPointable.trim(srcPtr, resultBuilder, resultArray, left, right, charSet);
+ srcPtr.trim(resultBuilder, resultArray, left, right, codePointSet);
resultStrPtr.set(resultArray.getByteArray(), 0, resultArray.getLength());
}
+
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
index 0db1821..31a93dc 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
@@ -50,6 +50,7 @@
import org.apache.asterix.om.functions.IFunctionManager;
import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.IAType;
+import org.apache.asterix.runtime.base.UnnestingPositionWriterFactory;
import org.apache.asterix.runtime.evaluators.common.CreateMBREvalFactory;
import org.apache.commons.lang3.mutable.MutableObject;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -73,6 +74,7 @@
import org.apache.hyracks.algebricks.data.IPrinterFactoryProvider;
import org.apache.hyracks.algebricks.data.ISerializerDeserializerProvider;
import org.apache.hyracks.algebricks.data.ITypeTraitProvider;
+import org.apache.hyracks.algebricks.data.IUnnestingPositionWriterFactory;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.evaluators.ColumnAccessEvalFactory;
import org.apache.hyracks.algebricks.runtime.evaluators.ConstantEvalFactory;
@@ -250,7 +252,7 @@
IScalarEvaluatorFactory evalFactory = fDesc.createEvaluatorFactory(
new IScalarEvaluatorFactory[] { recordEvalFactory, fldIndexEvalFactory });
IFunctionInfo finfoAccess =
- BuiltinFunctions.getAsterixFunctionInfo(BuiltinFunctions.FIELD_ACCESS_BY_INDEX);
+ BuiltinFunctions.getBuiltinFunctionInfo(BuiltinFunctions.FIELD_ACCESS_BY_INDEX);
ScalarFunctionCallExpression partitionFun = new ScalarFunctionCallExpression(finfoAccess,
new MutableObject<>(new VariableReferenceExpression(METADATA_DUMMY_VAR)),
@@ -275,7 +277,7 @@
fDesc.setImmutableStates(recType, fldName);
IScalarEvaluatorFactory evalFactory =
fDesc.createEvaluatorFactory(new IScalarEvaluatorFactory[] { recordEvalFactory });
- IFunctionInfo finfoAccess = BuiltinFunctions.getAsterixFunctionInfo(BuiltinFunctions.FIELD_ACCESS_NESTED);
+ IFunctionInfo finfoAccess = BuiltinFunctions.getBuiltinFunctionInfo(BuiltinFunctions.FIELD_ACCESS_NESTED);
ScalarFunctionCallExpression partitionFun = new ScalarFunctionCallExpression(finfoAccess,
new MutableObject<>(new VariableReferenceExpression(METADATA_DUMMY_VAR)),
@@ -341,6 +343,11 @@
}
@Override
+ public IUnnestingPositionWriterFactory getUnnestingPositionWriterFactory() {
+ return UnnestingPositionWriterFactory.INSTANCE;
+ }
+
+ @Override
public IExpressionEvalSizeComputer getExpressionEvalSizeComputer() {
return new IExpressionEvalSizeComputer() {
@Override
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 e1c9164..42e27da 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
@@ -331,6 +331,7 @@
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.DecodeDataverseDisplayNameDescriptor;
import org.apache.asterix.runtime.evaluators.functions.DecodeDataverseNameDescriptor;
import org.apache.asterix.runtime.evaluators.functions.DeepEqualityDescriptor;
import org.apache.asterix.runtime.evaluators.functions.FullTextContainsDescriptor;
@@ -1214,6 +1215,7 @@
// Other functions
fc.add(DecodeDataverseNameDescriptor.FACTORY);
+ fc.add(DecodeDataverseDisplayNameDescriptor.FACTORY);
fc.add(RandomWithSeedDescriptor.FACTORY);
ServiceLoader.load(IFunctionRegistrant.class).iterator().forEachRemaining(c -> c.register(fc));
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryInsertOperatorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryInsertOperatorDescriptor.java
index 42b8f29..d639f3d 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryInsertOperatorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryInsertOperatorDescriptor.java
@@ -34,10 +34,10 @@
private static final long serialVersionUID = 1L;
- private final IIndexDataflowHelperFactory keyIndexHelperFactory;
- private final ISearchOperationCallbackFactory searchOpCallbackFactory;
- private final int numOfPrimaryKeys;
- private final int[] filterFields;
+ protected final IIndexDataflowHelperFactory keyIndexHelperFactory;
+ protected final ISearchOperationCallbackFactory searchOpCallbackFactory;
+ protected final int numOfPrimaryKeys;
+ protected final int[] filterFields;
public LSMPrimaryInsertOperatorDescriptor(IOperatorDescriptorRegistry spec, RecordDescriptor outRecDesc,
int[] fieldPermutation, IIndexDataflowHelperFactory indexHelperFactory,
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryInsertOperatorNodePushable.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryInsertOperatorNodePushable.java
index 0bb42d4..a886161 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryInsertOperatorNodePushable.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryInsertOperatorNodePushable.java
@@ -105,7 +105,17 @@
}
}
keyTuple = new PermutingFrameTupleReference(searchKeyPermutations);
- processor = new IFrameTupleProcessor() {
+ processor = createTupleProcessor(sourceLoc);
+ frameOpCallback = NoOpFrameOperationCallbackFactory.INSTANCE.createFrameOperationCallback(ctx, lsmAccessor);
+ }
+
+ protected void beforeModification(ITupleReference tuple) {
+ // this is used for extensions to modify tuples before persistence
+ // do nothing in the master branch
+ }
+
+ protected IFrameTupleProcessor createTupleProcessor(SourceLocation sourceLoc) {
+ return new IFrameTupleProcessor() {
@Override
public void process(ITupleReference tuple, int index) throws HyracksDataException {
if (index < currentTupleIdx) {
@@ -127,6 +137,7 @@
cursor.close();
}
if (!duplicate) {
+ beforeModification(tuple);
lsmAccessor.forceUpsert(tuple);
if (lsmAccessorForKeyIndex != null) {
lsmAccessorForKeyIndex.forceUpsert(keyTuple);
@@ -157,8 +168,6 @@
// no op
}
};
-
- frameOpCallback = NoOpFrameOperationCallbackFactory.INSTANCE.createFrameOperationCallback(ctx, lsmAccessor);
}
@Override
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorDescriptor.java
index 7587ca69..2adad12 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorDescriptor.java
@@ -36,28 +36,30 @@
public class LSMPrimaryUpsertOperatorDescriptor extends LSMTreeInsertDeleteOperatorDescriptor {
private static final long serialVersionUID = 1L;
- private final IFrameOperationCallbackFactory frameOpCallbackFactory;
- private final ARecordType recordType;
- private final int filterIndex;
- private ISearchOperationCallbackFactory searchOpCallbackFactory;
- private final int numPrimaryKeys;
- private final IMissingWriterFactory missingWriterFactory;
- private final boolean hasSecondaries;
+ protected final IFrameOperationCallbackFactory frameOpCallbackFactory;
+ protected final Integer filterSourceIndicator;
+ protected final ARecordType filterItemType;
+ protected final int filterIndex;
+ protected ISearchOperationCallbackFactory searchOpCallbackFactory;
+ protected final int numPrimaryKeys;
+ protected final IMissingWriterFactory missingWriterFactory;
+ protected final boolean hasSecondaries;
public LSMPrimaryUpsertOperatorDescriptor(IOperatorDescriptorRegistry spec, RecordDescriptor outRecDesc,
int[] fieldPermutation, IIndexDataflowHelperFactory indexHelperFactory,
IMissingWriterFactory missingWriterFactory,
IModificationOperationCallbackFactory modificationOpCallbackFactory,
ISearchOperationCallbackFactory searchOpCallbackFactory,
- IFrameOperationCallbackFactory frameOpCallbackFactory, int numPrimaryKeys, ARecordType recordType,
- int filterIndex, boolean hasSecondaries) {
+ IFrameOperationCallbackFactory frameOpCallbackFactory, int numPrimaryKeys, Integer filterSourceIndicator,
+ ARecordType filterItemType, int filterIndex, boolean hasSecondaries) {
super(spec, outRecDesc, fieldPermutation, IndexOperation.UPSERT, indexHelperFactory, null, true,
modificationOpCallbackFactory);
this.frameOpCallbackFactory = frameOpCallbackFactory;
this.searchOpCallbackFactory = searchOpCallbackFactory;
this.numPrimaryKeys = numPrimaryKeys;
this.missingWriterFactory = missingWriterFactory;
- this.recordType = recordType;
+ this.filterSourceIndicator = filterSourceIndicator;
+ this.filterItemType = filterItemType;
this.filterIndex = filterIndex;
this.hasSecondaries = hasSecondaries;
}
@@ -67,7 +69,7 @@
IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) throws HyracksDataException {
RecordDescriptor intputRecDesc = recordDescProvider.getInputRecordDescriptor(getActivityId(), 0);
return new LSMPrimaryUpsertOperatorNodePushable(ctx, partition, indexHelperFactory, fieldPermutation,
- intputRecDesc, modCallbackFactory, searchOpCallbackFactory, numPrimaryKeys, recordType, filterIndex,
- frameOpCallbackFactory, missingWriterFactory, hasSecondaries);
+ intputRecDesc, modCallbackFactory, searchOpCallbackFactory, numPrimaryKeys, filterSourceIndicator,
+ filterItemType, filterIndex, frameOpCallbackFactory, missingWriterFactory, hasSecondaries);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
index 3e43e02..f5bddc5 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
@@ -83,33 +83,34 @@
private static final Logger LOGGER = LogManager.getLogger();
private static final ThreadLocal<DateFormat> DATE_FORMAT =
ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"));
- private final PermutingFrameTupleReference key;
+ protected final PermutingFrameTupleReference key;
private MultiComparator keySearchCmp;
private ArrayTupleBuilder missingTupleBuilder;
private final IMissingWriter missingWriter;
- private ArrayTupleBuilder tb;
+ protected ArrayTupleBuilder tb;
private DataOutput dos;
- private RangePredicate searchPred;
- private IIndexCursor cursor;
- private ITupleReference prevTuple;
- private final int numOfPrimaryKeys;
- boolean isFiltered = false;
+ protected RangePredicate searchPred;
+ protected IIndexCursor cursor;
+ protected ITupleReference prevTuple;
+ protected final int numOfPrimaryKeys;
+ protected boolean isFiltered = false;
private final ArrayTupleReference prevTupleWithFilter = new ArrayTupleReference();
private ArrayTupleBuilder prevRecWithPKWithFilterValue;
- private ARecordType recordType;
+ private Integer filterSourceIndicator = null;
+ private ARecordType filterItemType;
private int presetFieldIndex = -1;
private ARecordPointable recPointable;
private DataOutput prevDos;
private final boolean hasMeta;
private final int filterFieldIndex;
private final int metaFieldIndex;
- private LockThenSearchOperationCallback searchCallback;
- private IFrameOperationCallback frameOpCallback;
+ protected LockThenSearchOperationCallback searchCallback;
+ protected IFrameOperationCallback frameOpCallback;
private final IFrameOperationCallbackFactory frameOpCallbackFactory;
- private AbstractIndexModificationOperationCallback abstractModCallback;
+ protected AbstractIndexModificationOperationCallback abstractModCallback;
private final ISearchOperationCallbackFactory searchCallbackFactory;
private final IFrameTupleProcessor processor;
- private LSMTreeIndexAccessor lsmAccessor;
+ protected LSMTreeIndexAccessor lsmAccessor;
private final ITracer tracer;
private final long traceCategory;
private long lastRecordInTimeStamp = 0L;
@@ -117,8 +118,8 @@
public LSMPrimaryUpsertOperatorNodePushable(IHyracksTaskContext ctx, int partition,
IIndexDataflowHelperFactory indexHelperFactory, int[] fieldPermutation, RecordDescriptor inputRecDesc,
IModificationOperationCallbackFactory modCallbackFactory,
- ISearchOperationCallbackFactory searchCallbackFactory, int numOfPrimaryKeys, ARecordType recordType,
- int filterFieldIndex, IFrameOperationCallbackFactory frameOpCallbackFactory,
+ ISearchOperationCallbackFactory searchCallbackFactory, int numOfPrimaryKeys, Integer filterSourceIndicator,
+ ARecordType filterItemType, int filterFieldIndex, IFrameOperationCallbackFactory frameOpCallbackFactory,
IMissingWriterFactory missingWriterFactory, final boolean hasSecondaries) throws HyracksDataException {
super(ctx, partition, indexHelperFactory, fieldPermutation, inputRecDesc, IndexOperation.UPSERT,
modCallbackFactory, null);
@@ -138,13 +139,25 @@
this.filterFieldIndex = numOfPrimaryKeys + (hasMeta ? 2 : 1);
if (filterFieldIndex >= 0) {
isFiltered = true;
- this.recordType = recordType;
+ this.filterItemType = filterItemType;
this.presetFieldIndex = filterFieldIndex;
+ this.filterSourceIndicator = filterSourceIndicator;
this.recPointable = ARecordPointable.FACTORY.createPointable();
this.prevRecWithPKWithFilterValue = new ArrayTupleBuilder(fieldPermutation.length + (hasMeta ? 1 : 0));
this.prevDos = prevRecWithPKWithFilterValue.getDataOutput();
}
- processor = new IFrameTupleProcessor() {
+ processor = createTupleProcessor(hasSecondaries);
+ tracer = ctx.getJobletContext().getServiceContext().getTracer();
+ traceCategory = tracer.getRegistry().get(TraceUtils.LATENCY);
+ }
+
+ protected void beforeModification(ITupleReference tuple) {
+ // this is used for extensions to modify tuples before persistence
+ // do nothing in the master branch
+ }
+
+ protected IFrameTupleProcessor createTupleProcessor(final boolean hasSecondaries) {
+ return new IFrameTupleProcessor() {
@Override
public void process(ITupleReference tuple, int index) throws HyracksDataException {
try {
@@ -176,6 +189,7 @@
appendUpsertIndicator(!isDelete);
appendPreviousTupleAsMissing();
}
+ beforeModification(tuple);
if (isDelete && prevTuple != null) {
// Only delete if it is a delete and not upsert
// And previous tuple with the same key was found
@@ -213,8 +227,6 @@
frameOpCallback.fail(th);
}
};
- tracer = ctx.getJobletContext().getServiceContext().getTracer();
- traceCategory = tracer.getRegistry().get(TraceUtils.LATENCY);
}
// we have the permutation which has [pk locations, record location, optional:filter-location]
@@ -285,12 +297,12 @@
}
}
- private void resetSearchPredicate(int tupleIndex) {
+ protected void resetSearchPredicate(int tupleIndex) {
key.reset(accessor, tupleIndex);
searchPred.reset(key, key, true, true, keySearchCmp, keySearchCmp);
}
- private void writeOutput(int tupleIndex, boolean recordWasInserted, boolean recordWasDeleted) throws IOException {
+ protected void writeOutput(int tupleIndex, boolean recordWasInserted, boolean recordWasDeleted) throws IOException {
if (recordWasInserted || recordWasDeleted) {
frameTuple.reset(accessor, tupleIndex);
for (int i = 0; i < frameTuple.getFieldCount(); i++) {
@@ -307,7 +319,7 @@
}
}
- private static boolean isDeleteOperation(ITupleReference t1, int field) {
+ protected static boolean isDeleteOperation(ITupleReference t1, int field) {
return TypeTagUtil.isType(t1, field, ATypeTag.SERIALIZED_MISSING_TYPE_TAG);
}
@@ -326,7 +338,7 @@
}
}
- private void appendFilterToOutput() throws IOException {
+ protected void appendFilterToOutput() throws IOException {
// if with filters, append the filter
if (isFiltered) {
dos.write(prevTuple.getFieldData(filterFieldIndex), prevTuple.getFieldStart(filterFieldIndex),
@@ -335,18 +347,18 @@
}
}
- private void appendUpsertIndicator(boolean isUpsert) throws IOException {
+ protected void appendUpsertIndicator(boolean isUpsert) throws IOException {
recordDesc.getFields()[0].serialize(isUpsert ? ABoolean.TRUE : ABoolean.FALSE, dos);
tb.addFieldEndOffset();
}
- private void appendPrevRecord() throws IOException {
+ protected void appendPrevRecord() throws IOException {
dos.write(prevTuple.getFieldData(numOfPrimaryKeys), prevTuple.getFieldStart(numOfPrimaryKeys),
prevTuple.getFieldLength(numOfPrimaryKeys));
tb.addFieldEndOffset();
}
- private void appendPreviousMeta() throws IOException {
+ protected void appendPreviousMeta() throws IOException {
// if has meta, then append meta
if (hasMeta) {
dos.write(prevTuple.getFieldData(metaFieldIndex), prevTuple.getFieldStart(metaFieldIndex),
@@ -355,7 +367,7 @@
}
}
- private void appendPreviousTupleAsMissing() throws IOException {
+ protected void appendPreviousTupleAsMissing() throws IOException {
prevTuple = null;
writeMissingField();
if (hasMeta) {
@@ -376,20 +388,27 @@
appender.write(writer, true);
}
- private void appendFilterToPrevTuple() throws IOException {
+ protected void appendFilterToPrevTuple() throws IOException {
if (isFiltered) {
prevRecWithPKWithFilterValue.reset();
for (int i = 0; i < prevTuple.getFieldCount(); i++) {
prevDos.write(prevTuple.getFieldData(i), prevTuple.getFieldStart(i), prevTuple.getFieldLength(i));
prevRecWithPKWithFilterValue.addFieldEndOffset();
}
- recPointable.set(prevTuple.getFieldData(numOfPrimaryKeys), prevTuple.getFieldStart(numOfPrimaryKeys),
- prevTuple.getFieldLength(numOfPrimaryKeys));
+
+ if (filterSourceIndicator == 0) {
+ recPointable.set(prevTuple.getFieldData(numOfPrimaryKeys), prevTuple.getFieldStart(numOfPrimaryKeys),
+ prevTuple.getFieldLength(numOfPrimaryKeys));
+ } else {
+ recPointable.set(prevTuple.getFieldData(metaFieldIndex), prevTuple.getFieldStart(metaFieldIndex),
+ prevTuple.getFieldLength(metaFieldIndex));
+ }
// copy the field data from prevTuple
- byte tag = recPointable.getClosedFieldType(recordType, presetFieldIndex).getTypeTag().serialize();
+ byte tag = recPointable.getClosedFieldType(filterItemType, presetFieldIndex).getTypeTag().serialize();
prevDos.write(tag);
- prevDos.write(recPointable.getByteArray(), recPointable.getClosedFieldOffset(recordType, presetFieldIndex),
- recPointable.getClosedFieldSize(recordType, presetFieldIndex));
+ prevDos.write(recPointable.getByteArray(),
+ recPointable.getClosedFieldOffset(filterItemType, presetFieldIndex),
+ recPointable.getClosedFieldSize(filterItemType, presetFieldIndex));
prevRecWithPKWithFilterValue.addFieldEndOffset();
// prepare the tuple
prevTupleWithFilter.reset(prevRecWithPKWithFilterValue.getFieldEndOffsets(),
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java
index aa5775e..35ae904 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java
@@ -45,21 +45,20 @@
* This operator node is used for secondary indexes with upsert operations.
* It works in the following way:
* For each incoming tuple
- * -If old secondary keys == new secondary keys
+ * -If old secondary index tuple == new secondary index tuple
* --do nothing
* -else
- * --If old secondary keys are null?
+ * --If any old field is null/missing?
* ---do nothing
* --else
- * ---delete old secondary keys
- * --If new keys are null?
+ * ---delete old secondary index tuple
+ * --If any new field is null/missing?
* ---do nothing
* --else
- * ---insert new keys
+ * ---insert new secondary index tuple
*/
public class LSMSecondaryUpsertOperatorNodePushable extends LSMIndexInsertUpdateDeleteOperatorNodePushable {
- private static final int NULL_MISSING_FIELD_INDEX = 0;
private final PermutingFrameTupleReference prevValueTuple = new PermutingFrameTupleReference();
private final int upsertIndicatorFieldIndex;
private final IBinaryBooleanInspector upsertIndicatorInspector;
@@ -105,9 +104,9 @@
tuple.reset(accessor, i);
prevValueTuple.reset(accessor, i);
- boolean isNewValueNullOrMissing = isNullOrMissing(tuple);
- boolean isOldValueNullOrMissing = isNullOrMissing(prevValueTuple);
- if (isNewValueNullOrMissing && isOldValueNullOrMissing) {
+ boolean newTupleHasNullOrMissing = hasNullOrMissing(tuple);
+ boolean oldTupleHasNullOrMissing = hasNullOrMissing(prevValueTuple);
+ if (newTupleHasNullOrMissing && oldTupleHasNullOrMissing) {
// No op
continue;
}
@@ -118,13 +117,13 @@
// which are always the same
continue;
}
- if (!isOldValueNullOrMissing) {
- // We need to delete previous
+ // if all old fields are known values, then delete. skip deleting if any is null or missing
+ if (!oldTupleHasNullOrMissing) {
abstractModCallback.setOp(Operation.DELETE);
lsmAccessor.forceDelete(prevValueTuple);
}
- if (isUpsert && !isNewValueNullOrMissing) {
- // we need to insert the new value
+ // if all new fields are known values, then insert. skip inserting if any is null or missing
+ if (isUpsert && !newTupleHasNullOrMissing) {
abstractModCallback.setOp(Operation.INSERT);
lsmAccessor.forceInsert(tuple);
}
@@ -138,8 +137,18 @@
FrameUtils.flushFrame(writeBuffer.getBuffer(), writer);
}
- private static boolean isNullOrMissing(PermutingFrameTupleReference tuple) {
- return TypeTagUtil.isType(tuple, NULL_MISSING_FIELD_INDEX, ATypeTag.SERIALIZED_NULL_TYPE_TAG)
- || TypeTagUtil.isType(tuple, NULL_MISSING_FIELD_INDEX, ATypeTag.SERIALIZED_MISSING_TYPE_TAG);
+ private boolean hasNullOrMissing(PermutingFrameTupleReference tuple) {
+ int fieldCount = tuple.getFieldCount();
+ for (int i = 0; i < fieldCount; i++) {
+ if (isNullOrMissing(tuple, i)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static boolean isNullOrMissing(PermutingFrameTupleReference tuple, int fieldIdx) {
+ return TypeTagUtil.isType(tuple, fieldIdx, ATypeTag.SERIALIZED_NULL_TYPE_TAG)
+ || TypeTagUtil.isType(tuple, fieldIdx, ATypeTag.SERIALIZED_MISSING_TYPE_TAG);
}
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/IntervalMergeJoinOperatorDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/IntervalMergeJoinOperatorDescriptor.java
new file mode 100644
index 0000000..0417ee0
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/IntervalMergeJoinOperatorDescriptor.java
@@ -0,0 +1,180 @@
+/*
+ * 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.operators.joins.interval;
+
+import java.nio.ByteBuffer;
+
+import org.apache.asterix.runtime.operators.joins.interval.utils.IIntervalJoinUtil;
+import org.apache.asterix.runtime.operators.joins.interval.utils.IIntervalJoinUtilFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.ActivityId;
+import org.apache.hyracks.api.dataflow.IActivity;
+import org.apache.hyracks.api.dataflow.IActivityGraphBuilder;
+import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
+import org.apache.hyracks.api.dataflow.TaskId;
+import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
+import org.apache.hyracks.api.job.JobId;
+import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
+import org.apache.hyracks.dataflow.std.base.AbstractActivityNode;
+import org.apache.hyracks.dataflow.std.base.AbstractOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.base.AbstractStateObject;
+import org.apache.hyracks.dataflow.std.base.AbstractUnaryInputSinkOperatorNodePushable;
+import org.apache.hyracks.dataflow.std.base.AbstractUnaryInputUnaryOutputOperatorNodePushable;
+
+public class IntervalMergeJoinOperatorDescriptor extends AbstractOperatorDescriptor {
+ private static final long serialVersionUID = 1L;
+
+ private static final int JOIN_BUILD_ACTIVITY_ID = 0;
+ private static final int JOIN_PROBE_ACTIVITY_ID = 1;
+ private final int buildKey;
+ private final int probeKey;
+ private final int memoryForJoin;
+ private final IIntervalJoinUtilFactory imjcf;
+
+ public IntervalMergeJoinOperatorDescriptor(IOperatorDescriptorRegistry spec, int memoryForJoin, int[] buildKey,
+ int[] probeKeys, RecordDescriptor recordDescriptor, IIntervalJoinUtilFactory imjcf) {
+ super(spec, 2, 1);
+ outRecDescs[0] = recordDescriptor;
+ this.buildKey = buildKey[0];
+ this.probeKey = probeKeys[0];
+ this.memoryForJoin = memoryForJoin;
+ this.imjcf = imjcf;
+ }
+
+ @Override
+ public void contributeActivities(IActivityGraphBuilder builder) {
+ ActivityId buildAid = new ActivityId(odId, JOIN_BUILD_ACTIVITY_ID);
+ ActivityId probeAid = new ActivityId(odId, JOIN_PROBE_ACTIVITY_ID);
+
+ IActivity probeAN = new JoinProbeActivityNode(probeAid);
+ IActivity buildAN = new JoinBuildActivityNode(buildAid, probeAid);
+
+ builder.addActivity(this, buildAN);
+ builder.addSourceEdge(0, buildAN, 0);
+
+ builder.addActivity(this, probeAN);
+ builder.addSourceEdge(1, probeAN, 0);
+ builder.addTargetEdge(0, probeAN, 0);
+ builder.addBlockingEdge(buildAN, probeAN);
+ }
+
+ public static class JoinCacheTaskState extends AbstractStateObject {
+ private IntervalMergeJoiner joiner;
+
+ private JoinCacheTaskState(JobId jobId, TaskId taskId) {
+ super(jobId, taskId);
+ }
+ }
+
+ private class JoinBuildActivityNode extends AbstractActivityNode {
+ private static final long serialVersionUID = 1L;
+
+ private final ActivityId nljAid;
+
+ public JoinBuildActivityNode(ActivityId id, ActivityId nljAid) {
+ super(id);
+ this.nljAid = nljAid;
+ }
+
+ @Override
+ public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
+ IRecordDescriptorProvider recordDescProvider, final int partition, int nPartitions) {
+ final RecordDescriptor rd0 = recordDescProvider.getInputRecordDescriptor(nljAid, 0);
+ final RecordDescriptor rd1 = recordDescProvider.getInputRecordDescriptor(getActivityId(), 0);
+
+ return new AbstractUnaryInputSinkOperatorNodePushable() {
+ private JoinCacheTaskState state;
+
+ @Override
+ public void open() throws HyracksDataException {
+ state = new JoinCacheTaskState(ctx.getJobletContext().getJobId(),
+ new TaskId(getActivityId(), partition));
+
+ IIntervalJoinUtil imjc = imjcf.createIntervalMergeJoinUtil(buildKey, probeKey, ctx, nPartitions);
+
+ state.joiner = new IntervalMergeJoiner(ctx, memoryForJoin, imjc, buildKey, probeKey, rd0, rd1);
+ }
+
+ @Override
+ public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+ ByteBuffer copyBuffer = ctx.allocateFrame(buffer.capacity());
+ FrameUtils.copyAndFlip(buffer, copyBuffer);
+ state.joiner.processBuildFrame(copyBuffer);
+ }
+
+ @Override
+ public void close() throws HyracksDataException {
+ state.joiner.processBuildClose();
+ ctx.setStateObject(state);
+ }
+
+ @Override
+ public void fail() {
+ // No variables to update.
+ }
+ };
+ }
+ }
+
+ private class JoinProbeActivityNode extends AbstractActivityNode {
+ private static final long serialVersionUID = 1L;
+
+ public JoinProbeActivityNode(ActivityId id) {
+ super(id);
+ }
+
+ @Override
+ public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
+ IRecordDescriptorProvider recordDescProvider, final int partition, int nPartitions) {
+ return new AbstractUnaryInputUnaryOutputOperatorNodePushable() {
+ private JoinCacheTaskState state;
+
+ @Override
+ public void open() throws HyracksDataException {
+ writer.open();
+ state = (JoinCacheTaskState) ctx.getStateObject(
+ new TaskId(new ActivityId(getOperatorId(), JOIN_BUILD_ACTIVITY_ID), partition));
+ }
+
+ @Override
+ public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+ state.joiner.processProbeFrame(buffer, writer);
+ }
+
+ @Override
+ public void close() throws HyracksDataException {
+ try {
+ state.joiner.processProbeClose(writer);
+ } finally {
+ writer.close();
+ }
+ }
+
+ @Override
+ public void fail() throws HyracksDataException {
+ writer.fail();
+ }
+ };
+ }
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/IntervalMergeJoiner.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/IntervalMergeJoiner.java
new file mode 100644
index 0000000..c19ad06
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/IntervalMergeJoiner.java
@@ -0,0 +1,237 @@
+/*
+ * 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.operators.joins.interval;
+
+import java.nio.ByteBuffer;
+import java.util.LinkedList;
+
+import org.apache.asterix.runtime.operators.joins.interval.utils.IIntervalJoinUtil;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.FrameTupleCursor;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalSideTuple;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.RunFilePointer;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.RunFileStream;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.TuplePointerCursor;
+import org.apache.hyracks.api.comm.IFrame;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.comm.VSizeFrame;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
+import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
+import org.apache.hyracks.dataflow.std.buffermanager.DeallocatableFramePool;
+import org.apache.hyracks.dataflow.std.buffermanager.IDeallocatableFramePool;
+import org.apache.hyracks.dataflow.std.buffermanager.IDeletableTupleBufferManager;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableDeletableTupleMemoryManager;
+import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+
+/**
+ * Merge Joiner takes two sorted streams of input and joins.
+ * The two sorted streams must be in a logical order and the comparator must
+ * support keeping that order so the join will work.
+ * The left stream will spill to disk when memory is full.
+ * The right stream spills to memory and pause when memory is full.
+ */
+public class IntervalMergeJoiner {
+
+ private final IDeallocatableFramePool framePool;
+ private final IDeletableTupleBufferManager bufferManager;
+ private final TuplePointerCursor memoryCursor;
+ private final LinkedList<TuplePointer> memoryBuffer = new LinkedList<>();
+
+ private final RunFileStream runFileStream;
+ private final RunFilePointer runFilePointer;
+
+ private IntervalSideTuple memoryTuple;
+ private IntervalSideTuple[] inputTuple;
+
+ private final IIntervalJoinUtil mjc;
+
+ protected static final int JOIN_PARTITIONS = 2;
+ protected static final int BUILD_PARTITION = 0;
+ protected static final int PROBE_PARTITION = 1;
+
+ protected final IFrame[] inputBuffer;
+ protected final FrameTupleAppender resultAppender;
+ protected final FrameTupleCursor[] inputCursor;
+
+ public IntervalMergeJoiner(IHyracksTaskContext ctx, int memorySize, IIntervalJoinUtil mjc, int buildKeys,
+ int probeKeys, RecordDescriptor buildRd, RecordDescriptor probeRd) throws HyracksDataException {
+ this.mjc = mjc;
+
+ // Memory (probe buffer)
+ if (memorySize < 5) {
+ throw new RuntimeException(
+ "IntervalMergeJoiner does not have enough memory (needs > 4, got " + memorySize + ").");
+ }
+
+ inputCursor = new FrameTupleCursor[JOIN_PARTITIONS];
+ inputCursor[BUILD_PARTITION] = new FrameTupleCursor(buildRd);
+ inputCursor[PROBE_PARTITION] = new FrameTupleCursor(probeRd);
+
+ inputBuffer = new IFrame[JOIN_PARTITIONS];
+ inputBuffer[BUILD_PARTITION] = new VSizeFrame(ctx);
+ inputBuffer[PROBE_PARTITION] = new VSizeFrame(ctx);
+
+ //Two frames are used for the runfile stream, and one frame for each input (2 outputs).
+ framePool = new DeallocatableFramePool(ctx, (memorySize - 4) * ctx.getInitialFrameSize());
+ bufferManager = new VariableDeletableTupleMemoryManager(framePool, probeRd);
+ memoryCursor = new TuplePointerCursor(bufferManager.createTuplePointerAccessor());
+
+ // Run File and frame cache (build buffer)
+ runFileStream = new RunFileStream(ctx, "imj-build");
+ runFilePointer = new RunFilePointer();
+ runFileStream.createRunFileWriting();
+ runFileStream.startRunFileWriting();
+
+ memoryTuple = new IntervalSideTuple(mjc, memoryCursor, probeKeys);
+
+ inputTuple = new IntervalSideTuple[JOIN_PARTITIONS];
+ inputTuple[PROBE_PARTITION] = new IntervalSideTuple(mjc, inputCursor[PROBE_PARTITION], probeKeys);
+ inputTuple[BUILD_PARTITION] = new IntervalSideTuple(mjc, inputCursor[BUILD_PARTITION], buildKeys);
+
+ // Result
+ this.resultAppender = new FrameTupleAppender(new VSizeFrame(ctx));
+ }
+
+ public void processBuildFrame(ByteBuffer buffer) throws HyracksDataException {
+ inputCursor[BUILD_PARTITION].reset(buffer);
+ for (int x = 0; x < inputCursor[BUILD_PARTITION].getAccessor().getTupleCount(); x++) {
+ runFileStream.addToRunFile(inputCursor[BUILD_PARTITION].getAccessor(), x);
+ }
+ }
+
+ public void processBuildClose() throws HyracksDataException {
+ runFileStream.flushRunFile();
+ runFileStream.startReadingRunFile(inputCursor[BUILD_PARTITION]);
+ }
+
+ public void processProbeFrame(ByteBuffer buffer, IFrameWriter writer) throws HyracksDataException {
+ inputCursor[PROBE_PARTITION].reset(buffer);
+ while (buildHasNext() && inputCursor[PROBE_PARTITION].hasNext()) {
+ if (inputCursor[PROBE_PARTITION].hasNext() && mjc.checkToLoadNextProbeTuple(
+ inputCursor[BUILD_PARTITION].getAccessor(), inputCursor[BUILD_PARTITION].getTupleId() + 1,
+ inputCursor[PROBE_PARTITION].getAccessor(), inputCursor[PROBE_PARTITION].getTupleId() + 1)) {
+ // Process probe side from stream
+ inputCursor[PROBE_PARTITION].next();
+ processProbeTuple(writer);
+ } else {
+ // Process build side from runfile
+ inputCursor[BUILD_PARTITION].next();
+ processBuildTuple(writer);
+ }
+ }
+ }
+
+ public void processProbeClose(IFrameWriter writer) throws HyracksDataException {
+ while (buildHasNext() && memoryHasTuples()) {
+ // Process build side from runfile
+ inputCursor[BUILD_PARTITION].next();
+ processBuildTuple(writer);
+ }
+ resultAppender.write(writer, true);
+ runFileStream.close();
+ runFileStream.removeRunFile();
+ }
+
+ private boolean buildHasNext() throws HyracksDataException {
+ if (!inputCursor[BUILD_PARTITION].hasNext()) {
+ // Must keep condition in a separate `if` due to actions applied in loadNextBuffer.
+ return runFileStream.loadNextBuffer(inputCursor[BUILD_PARTITION]);
+ } else {
+ return true;
+ }
+ }
+
+ private void processBuildTuple(IFrameWriter writer) throws HyracksDataException {
+ // Check against memory
+ if (memoryHasTuples()) {
+ inputTuple[BUILD_PARTITION].loadTuple();
+ memoryCursor.reset(memoryBuffer.iterator());
+ while (memoryCursor.hasNext()) {
+ memoryCursor.next();
+ memoryTuple.loadTuple();
+ if (inputTuple[BUILD_PARTITION].removeFromMemory(memoryTuple)) {
+ // remove from memory
+ bufferManager.deleteTuple(memoryCursor.getTuplePointer());
+ memoryCursor.remove();
+ continue;
+ } else if (inputTuple[BUILD_PARTITION].checkForEarlyExit(memoryTuple)) {
+ // No more possible comparisons
+ break;
+ } else if (inputTuple[BUILD_PARTITION].compareJoin(memoryTuple)) {
+ // add to result
+ addToResult(inputCursor[BUILD_PARTITION].getAccessor(), inputCursor[BUILD_PARTITION].getTupleId(),
+ memoryCursor.getAccessor(), memoryCursor.getTupleId(), writer);
+ }
+ }
+ }
+ }
+
+ private void processProbeTuple(IFrameWriter writer) throws HyracksDataException {
+ // append to memory
+ // BUILD Cursor is guaranteed to have next
+ if (mjc.checkToSaveInMemory(inputCursor[BUILD_PARTITION].getAccessor(),
+ inputCursor[BUILD_PARTITION].getTupleId() + 1, inputCursor[PROBE_PARTITION].getAccessor(),
+ inputCursor[PROBE_PARTITION].getTupleId())) {
+ if (!addToMemory(inputCursor[PROBE_PARTITION].getAccessor(), inputCursor[PROBE_PARTITION].getTupleId())) {
+ unfreezeAndClearMemory(writer);
+ if (!addToMemory(inputCursor[PROBE_PARTITION].getAccessor(),
+ inputCursor[PROBE_PARTITION].getTupleId())) {
+ throw new RuntimeException("Should Never get called.");
+ }
+ }
+ }
+ }
+
+ private void unfreezeAndClearMemory(IFrameWriter writer) throws HyracksDataException {
+ runFilePointer.reset(runFileStream.getReadPointer(), inputCursor[BUILD_PARTITION].getTupleId());
+ while (buildHasNext() && memoryHasTuples()) {
+ // Process build side from runfile
+ inputCursor[BUILD_PARTITION].next();
+ processBuildTuple(writer);
+ }
+ // Clear memory
+ memoryBuffer.clear();
+ bufferManager.reset();
+ // Start reading
+ runFileStream.startReadingRunFile(inputCursor[BUILD_PARTITION], runFilePointer.getFileOffset());
+ inputCursor[BUILD_PARTITION].resetPosition(runFilePointer.getTupleIndex());
+ }
+
+ private boolean addToMemory(IFrameTupleAccessor accessor, int tupleId) throws HyracksDataException {
+ TuplePointer tp = new TuplePointer();
+ if (bufferManager.insertTuple(accessor, tupleId, tp)) {
+ memoryBuffer.add(tp);
+ return true;
+ }
+ return false;
+ }
+
+ private void addToResult(IFrameTupleAccessor buildAccessor, int buildTupleId, IFrameTupleAccessor probeAccessor,
+ int probeTupleId, IFrameWriter writer) throws HyracksDataException {
+ FrameUtils.appendConcatToWriter(writer, resultAppender, buildAccessor, buildTupleId, probeAccessor,
+ probeTupleId);
+ }
+
+ private boolean memoryHasTuples() {
+ return bufferManager.getNumTuples() > 0;
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AbstractIntervalInverseJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AbstractIntervalInverseJoinUtil.java
new file mode 100644
index 0000000..b45dd98
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AbstractIntervalInverseJoinUtil.java
@@ -0,0 +1,60 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalJoinUtil;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+
+public abstract class AbstractIntervalInverseJoinUtil extends AbstractIntervalJoinUtil {
+
+ public AbstractIntervalInverseJoinUtil(int idBuild, int idProbe) {
+ super(idBuild, idProbe);
+ }
+
+ /**
+ * Right (second argument) interval starts before left (first argument) interval ends.
+ */
+ @Override
+ public boolean checkToSaveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildStart = IntervalJoinUtil.getIntervalStart(buildAccessor, buildTupleIndex, idBuild);
+ long probeEnd = IntervalJoinUtil.getIntervalEnd(probeAccessor, probeTupleIndex, idProbe);
+ return buildStart < probeEnd;
+ }
+
+ /**
+ * Left (first argument) interval starts after the Right (second argument) interval ends.
+ */
+ @Override
+ public boolean checkToRemoveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildStart = IntervalJoinUtil.getIntervalStart(buildAccessor, buildTupleIndex, idBuild);
+ long probeEnd = IntervalJoinUtil.getIntervalEnd(probeAccessor, probeTupleIndex, idProbe);
+ return buildStart >= probeEnd;
+ }
+
+ @Override
+ public boolean checkToLoadNextProbeTuple(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildStart = IntervalJoinUtil.getIntervalStart(buildAccessor, buildTupleIndex, idBuild);
+ long probeStart = IntervalJoinUtil.getIntervalStart(probeAccessor, probeTupleIndex, idProbe);
+ return buildStart >= probeStart;
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AbstractIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AbstractIntervalJoinUtil.java
new file mode 100644
index 0000000..80d791c
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AbstractIntervalJoinUtil.java
@@ -0,0 +1,93 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.asterix.runtime.evaluators.functions.temporal.IntervalLogic;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalJoinUtil;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public abstract class AbstractIntervalJoinUtil implements IIntervalJoinUtil {
+
+ protected final int idBuild;
+ protected final int idProbe;
+
+ protected final IntervalLogic il = new IntervalLogic();
+ protected final AIntervalPointable ipBuild = (AIntervalPointable) AIntervalPointable.FACTORY.createPointable();
+ protected final AIntervalPointable ipProbe = (AIntervalPointable) AIntervalPointable.FACTORY.createPointable();
+
+ public AbstractIntervalJoinUtil(int idBuild, int idProbe) {
+ this.idBuild = idBuild;
+ this.idProbe = idProbe;
+ }
+
+ /**
+ * Right (second argument) interval starts before left (first argument) interval ends.
+ */
+ @Override
+ public boolean checkToSaveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildStart = IntervalJoinUtil.getIntervalStart(buildAccessor, buildTupleIndex, idBuild);
+ long probeStart = IntervalJoinUtil.getIntervalStart(probeAccessor, probeTupleIndex, idProbe);
+ return buildStart <= probeStart;
+ }
+
+ /**
+ * Left (first argument) interval starts after the Right (second argument) interval ends.
+ */
+ @Override
+ public boolean checkToRemoveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildStart = IntervalJoinUtil.getIntervalStart(buildAccessor, buildTupleIndex, idBuild);
+ long probeStart = IntervalJoinUtil.getIntervalStart(probeAccessor, probeTupleIndex, idProbe);
+ return buildStart > probeStart;
+ }
+
+ @Override
+ public boolean checkToSaveInResult(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) throws HyracksDataException {
+ IntervalJoinUtil.getIntervalPointable(buildAccessor, buildTupleIndex, idBuild, ipBuild);
+ IntervalJoinUtil.getIntervalPointable(probeAccessor, probeTupleIndex, idProbe, ipProbe);
+ return compareInterval(ipBuild, ipProbe);
+ }
+
+ /**
+ * Right (second argument) interval starts before left (first argument) interval ends.
+ */
+ @Override
+ public boolean checkForEarlyExit(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildEnd = IntervalJoinUtil.getIntervalEnd(buildAccessor, buildTupleIndex, idBuild);
+ long probeStart = IntervalJoinUtil.getIntervalStart(probeAccessor, probeTupleIndex, idProbe);
+ return buildEnd < probeStart;
+ }
+
+ @Override
+ public abstract boolean compareInterval(AIntervalPointable ipBuild, AIntervalPointable ipProbe)
+ throws HyracksDataException;
+
+ @Override
+ public boolean checkToLoadNextProbeTuple(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildEnd = IntervalJoinUtil.getIntervalEnd(buildAccessor, buildTupleIndex, idBuild);
+ long probeStart = IntervalJoinUtil.getIntervalStart(probeAccessor, probeTupleIndex, idProbe);
+ return buildEnd > probeStart;
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AfterIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AfterIntervalJoinUtil.java
new file mode 100644
index 0000000..5dd4c44
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AfterIntervalJoinUtil.java
@@ -0,0 +1,62 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalJoinUtil;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class AfterIntervalJoinUtil extends AbstractIntervalJoinUtil {
+
+ public AfterIntervalJoinUtil(int buildKey, int probeKey) {
+ super(buildKey, probeKey);
+ }
+
+ @Override
+ public boolean checkToSaveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ return true;
+ }
+
+ @Override
+ public boolean checkToRemoveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ return false;
+ }
+
+ @Override
+ public boolean checkForEarlyExit(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ return false;
+ }
+
+ @Override
+ public boolean compareInterval(AIntervalPointable ipBuild, AIntervalPointable ipProbe) throws HyracksDataException {
+ return il.after(ipBuild, ipProbe);
+ }
+
+ @Override
+ public boolean checkToLoadNextProbeTuple(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildEnd = IntervalJoinUtil.getIntervalEnd(buildAccessor, buildTupleIndex, idBuild);
+ long probeStart = IntervalJoinUtil.getIntervalStart(probeAccessor, probeTupleIndex, idProbe);
+ return probeStart <= buildEnd;
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AfterIntervalJoinUtilFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AfterIntervalJoinUtilFactory.java
new file mode 100644
index 0000000..9fe4e9d
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/AfterIntervalJoinUtilFactory.java
@@ -0,0 +1,31 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+
+public class AfterIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinUtil(int buildKey, int probeKey, IHyracksTaskContext ctx,
+ int nPartitions) {
+ return new AfterIntervalJoinUtil(buildKey, probeKey);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/BeforeIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/BeforeIntervalJoinUtil.java
new file mode 100644
index 0000000..5212a4d
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/BeforeIntervalJoinUtil.java
@@ -0,0 +1,62 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalJoinUtil;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class BeforeIntervalJoinUtil extends AbstractIntervalJoinUtil {
+
+ public BeforeIntervalJoinUtil(int buildKey, int probeKey) {
+ super(buildKey, probeKey);
+ }
+
+ @Override
+ public boolean checkToSaveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildStart = IntervalJoinUtil.getIntervalStart(buildAccessor, buildTupleIndex, idBuild);
+ long probeStart = IntervalJoinUtil.getIntervalStart(probeAccessor, probeTupleIndex, idProbe);
+ return buildStart < probeStart;
+ }
+
+ @Override
+ public boolean checkToRemoveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ return !checkToSaveInMemory(buildAccessor, buildTupleIndex, probeAccessor, probeTupleIndex);
+ }
+
+ @Override
+ public boolean checkForEarlyExit(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ return false;
+ }
+
+ @Override
+ public boolean compareInterval(AIntervalPointable ipBuild, AIntervalPointable ipProbe) throws HyracksDataException {
+ return il.before(ipBuild, ipProbe);
+ }
+
+ @Override
+ public boolean checkToLoadNextProbeTuple(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ return true;
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/BeforeIntervalJoinUtilFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/BeforeIntervalJoinUtilFactory.java
new file mode 100644
index 0000000..1984caf
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/BeforeIntervalJoinUtilFactory.java
@@ -0,0 +1,31 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+
+public class BeforeIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinUtil(int buildKey, int probeKey, IHyracksTaskContext ctx,
+ int nPartitions) {
+ return new BeforeIntervalJoinUtil(buildKey, probeKey);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoveredByIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoveredByIntervalJoinUtil.java
new file mode 100644
index 0000000..91dfc66
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoveredByIntervalJoinUtil.java
@@ -0,0 +1,59 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalJoinUtil;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class CoveredByIntervalJoinUtil extends AbstractIntervalInverseJoinUtil {
+
+ public CoveredByIntervalJoinUtil(int buildKey, int probeKey) {
+ super(buildKey, probeKey);
+ }
+
+ /**
+ * Right (second argument) interval starts before left (first argument) interval ends.
+ */
+ @Override
+ public boolean checkToSaveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildStart = IntervalJoinUtil.getIntervalStart(buildAccessor, buildTupleIndex, idBuild);
+ long probeEnd = IntervalJoinUtil.getIntervalEnd(probeAccessor, probeTupleIndex, idProbe);
+ return buildStart <= probeEnd;
+ }
+
+ /**
+ * Left (first argument) interval starts after the Right (second argument) interval ends.
+ */
+ @Override
+ public boolean checkToRemoveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildStart = IntervalJoinUtil.getIntervalStart(buildAccessor, buildTupleIndex, idBuild);
+ long probeEnd = IntervalJoinUtil.getIntervalEnd(probeAccessor, probeTupleIndex, idProbe);
+ return buildStart > probeEnd;
+
+ }
+
+ @Override
+ public boolean compareInterval(AIntervalPointable ipBuild, AIntervalPointable ipProbe) throws HyracksDataException {
+ return il.coveredBy(ipBuild, ipProbe);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoveredByIntervalJoinUtilFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoveredByIntervalJoinUtilFactory.java
new file mode 100644
index 0000000..4b21ae8
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoveredByIntervalJoinUtilFactory.java
@@ -0,0 +1,31 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+
+public class CoveredByIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinUtil(int buildKey, int probeKey, IHyracksTaskContext ctx,
+ int nPartitions) {
+ return new CoveredByIntervalJoinUtil(buildKey, probeKey);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoversIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoversIntervalJoinUtil.java
new file mode 100644
index 0000000..41c8c34
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoversIntervalJoinUtil.java
@@ -0,0 +1,34 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class CoversIntervalJoinUtil extends AbstractIntervalJoinUtil {
+
+ public CoversIntervalJoinUtil(int buildKey, int probeKey) {
+ super(buildKey, probeKey);
+ }
+
+ @Override
+ public boolean compareInterval(AIntervalPointable ipBuild, AIntervalPointable ipProbe) throws HyracksDataException {
+ return il.covers(ipBuild, ipProbe);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoversIntervalJoinUtilFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoversIntervalJoinUtilFactory.java
new file mode 100644
index 0000000..862aebe
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/CoversIntervalJoinUtilFactory.java
@@ -0,0 +1,31 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+
+public class CoversIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinUtil(int buildKey, int probeKey, IHyracksTaskContext ctx,
+ int nPartitions) {
+ return new CoversIntervalJoinUtil(buildKey, probeKey);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/IIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/IIntervalJoinUtil.java
new file mode 100644
index 0000000..79eb2d7
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/IIntervalJoinUtil.java
@@ -0,0 +1,102 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public interface IIntervalJoinUtil {
+
+ /**
+ * Check to see if the right tuple should be added to memory during the merge join.
+ * The memory is used to check the right tuple with the remaining left tuples.
+ * The check is true if the next left tuple could still match with this right tuple.
+ *
+ * @param buildAccessor
+ * @param probeAccessor
+ * @return boolean
+ * @throws HyracksDataException
+ */
+ boolean checkToSaveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex);
+
+ /**
+ * Check to see if the right tuple should be removed from memory during the merge join.
+ * The memory is used to check the right tuple with the remaining left tuples.
+ * The check is true if the next left tuple is NOT able match with this right tuple.
+ *
+ * @param buildAccessor
+ * @param probeAccessor
+ * @return boolean
+ * @throws HyracksDataException
+ */
+ boolean checkToRemoveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex);
+
+ /**
+ * Check to see if tuples match join condition
+ * The check is true if they match.
+ *
+ * @param buildAccessor
+ * @param buildTupleIndex
+ * @param probeAccessor
+ * @param probeTupleIndex
+ * @return boolean
+ * @throws HyracksDataException
+ */
+ boolean checkToSaveInResult(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) throws HyracksDataException;
+
+ /**
+ * Check to see if the interval matches the join condition.
+ * The check is true if it matches.
+ *
+ * @param ipBuild
+ * @param ipProbe
+ * @return boolean
+ * @throws HyracksDataException
+ */
+ boolean compareInterval(AIntervalPointable ipBuild, AIntervalPointable ipProbe) throws HyracksDataException;
+
+ /**
+ * Check to see if the left tuple should stop checking for matches.
+ * The check is true if there can be no more matches
+ *
+ * @param buildAccessor
+ * @param probeAccessor
+ * @return boolean
+ * @throws HyracksDataException
+ */
+ boolean checkForEarlyExit(IFrameTupleAccessor buildAccessor, int buildTupleIndex, IFrameTupleAccessor probeAccessor,
+ int probeTupleIndex);
+
+ /**
+ * Check if next tuple should be loaded into memory.
+ * The check is true if there are more tuples
+ *
+ * @param buildAccessor
+ * @param probeAccessor
+ * @return boolean
+ * @throws HyracksDataException
+ */
+ boolean checkToLoadNextProbeTuple(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex);
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/IIntervalJoinUtilFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/IIntervalJoinUtilFactory.java
new file mode 100644
index 0000000..e9c2957
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/IIntervalJoinUtilFactory.java
@@ -0,0 +1,30 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import java.io.Serializable;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public interface IIntervalJoinUtilFactory extends Serializable {
+
+ IIntervalJoinUtil createIntervalMergeJoinUtil(int buildKey, int probeKey, IHyracksTaskContext ctx, int nPartitions)
+ throws HyracksDataException;
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappedByIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappedByIntervalJoinUtil.java
new file mode 100644
index 0000000..2bd03a2
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappedByIntervalJoinUtil.java
@@ -0,0 +1,34 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class OverlappedByIntervalJoinUtil extends AbstractIntervalInverseJoinUtil {
+
+ public OverlappedByIntervalJoinUtil(int buildKey, int probeKey) {
+ super(buildKey, probeKey);
+ }
+
+ @Override
+ public boolean compareInterval(AIntervalPointable ipBuild, AIntervalPointable ipProbe) throws HyracksDataException {
+ return il.overlappedBy(ipBuild, ipProbe);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappedByIntervalJoinUtilFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappedByIntervalJoinUtilFactory.java
new file mode 100644
index 0000000..d54982a
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappedByIntervalJoinUtilFactory.java
@@ -0,0 +1,31 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+
+public class OverlappedByIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinUtil(int buildKey, int probeKey, IHyracksTaskContext ctx,
+ int nPartitions) {
+ return new OverlappedByIntervalJoinUtil(buildKey, probeKey);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappingIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappingIntervalJoinUtil.java
new file mode 100644
index 0000000..9aeb09b
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappingIntervalJoinUtil.java
@@ -0,0 +1,83 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.asterix.runtime.operators.joins.interval.utils.memory.IntervalJoinUtil;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class OverlappingIntervalJoinUtil extends AbstractIntervalJoinUtil {
+ private final long partitionStart;
+
+ public OverlappingIntervalJoinUtil(int buildKey, int probeKey, long partitionStart) {
+ super(buildKey, probeKey);
+ this.partitionStart = partitionStart;
+ }
+
+ /**
+ * Right (second argument) interval starts before left (first argument) interval ends.
+ */
+ @Override
+ public boolean checkToSaveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildStart = IntervalJoinUtil.getIntervalStart(buildAccessor, buildTupleIndex, idBuild);
+ long probeEnd = IntervalJoinUtil.getIntervalEnd(probeAccessor, probeTupleIndex, idProbe);
+ return buildStart < probeEnd;
+ }
+
+ /**
+ * Right (second argument) interval starts before left (first argument) interval ends.
+ */
+ @Override
+ public boolean checkForEarlyExit(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long probeStart = IntervalJoinUtil.getIntervalStart(probeAccessor, probeTupleIndex, idProbe);
+ long buildEnd = IntervalJoinUtil.getIntervalEnd(buildAccessor, buildTupleIndex, idBuild);
+ return buildEnd <= probeStart;
+ }
+
+ /**
+ * Left (first argument) interval starts after the Right (second argument) interval ends.
+ */
+ @Override
+ public boolean checkToRemoveInMemory(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) {
+ long buildStart = IntervalJoinUtil.getIntervalStart(buildAccessor, buildTupleIndex, idBuild);
+ long probeEnd = IntervalJoinUtil.getIntervalEnd(probeAccessor, probeTupleIndex, idProbe);
+ return buildStart >= probeEnd;
+ }
+
+ @Override
+ public boolean checkToSaveInResult(IFrameTupleAccessor buildAccessor, int buildTupleIndex,
+ IFrameTupleAccessor probeAccessor, int probeTupleIndex) throws HyracksDataException {
+ IntervalJoinUtil.getIntervalPointable(buildAccessor, buildTupleIndex, idBuild, ipBuild);
+ IntervalJoinUtil.getIntervalPointable(probeAccessor, probeTupleIndex, idProbe, ipProbe);
+ if (ipBuild.getStartValue() < partitionStart && ipProbe.getStartValue() < partitionStart) {
+ // These tuples match in a different partition
+ return false;
+ }
+ return compareInterval(ipBuild, ipProbe);
+ }
+
+ @Override
+ public boolean compareInterval(AIntervalPointable ipBuild, AIntervalPointable ipProbe) throws HyracksDataException {
+ return il.overlapping(ipBuild, ipProbe);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappingIntervalJoinUtilFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappingIntervalJoinUtilFactory.java
new file mode 100644
index 0000000..a77ceb2
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlappingIntervalJoinUtilFactory.java
@@ -0,0 +1,71 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.asterix.dataflow.data.nontagged.serde.ADateSerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.ADateTimeSerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.ATimeSerializerDeserializer;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public class OverlappingIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
+ private final RangeMap rangeMap;
+
+ public OverlappingIntervalJoinUtilFactory(RangeMap rangeMap) {
+ this.rangeMap = rangeMap;
+ }
+
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinUtil(int buildKey, int probeKey, IHyracksTaskContext ctx,
+ int nPartitions) throws HyracksDataException {
+ int fieldIndex = 0;
+ int partition = ctx.getTaskAttemptId().getTaskId().getPartition();
+ //Calculate Partitions slot
+ int nRanges = rangeMap.getSplitCount() + 1;
+ double rangesPerPart = 1.0;
+ if (nRanges > nPartitions) {
+ rangesPerPart = ((double) nRanges) / nPartitions;
+ }
+ int slot = ((int) Math.ceil(partition * rangesPerPart) % nRanges) - 1;
+ //Find Partitions Start Value based on slot
+ long partitionStart = Long.MIN_VALUE;
+ if (slot >= 0) {
+ switch (ATypeTag.VALUE_TYPE_MAPPING[rangeMap.getTag(fieldIndex, slot)]) {
+ case DATETIME:
+ partitionStart = ADateTimeSerializerDeserializer.getChronon(rangeMap.getByteArray(),
+ rangeMap.getStartOffset(fieldIndex, slot) + 1);
+ break;
+ case DATE:
+ partitionStart = ADateSerializerDeserializer.getChronon(rangeMap.getByteArray(),
+ rangeMap.getStartOffset(fieldIndex, slot) + 1);
+ break;
+ case TIME:
+ partitionStart = ATimeSerializerDeserializer.getChronon(rangeMap.getByteArray(),
+ rangeMap.getStartOffset(fieldIndex, slot) + 1);
+ break;
+ default:
+ throw new HyracksDataException("RangeMap type is not supported");
+ }
+ }
+ return new OverlappingIntervalJoinUtil(buildKey, probeKey, partitionStart);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlapsIntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlapsIntervalJoinUtil.java
new file mode 100644
index 0000000..933c565
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlapsIntervalJoinUtil.java
@@ -0,0 +1,34 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class OverlapsIntervalJoinUtil extends AbstractIntervalJoinUtil {
+
+ public OverlapsIntervalJoinUtil(int buildKey, int probeKey) {
+ super(buildKey, probeKey);
+ }
+
+ @Override
+ public boolean compareInterval(AIntervalPointable ipBuild, AIntervalPointable ipProbe) throws HyracksDataException {
+ return il.overlaps(ipBuild, ipProbe);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlapsIntervalJoinUtilFactory.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlapsIntervalJoinUtilFactory.java
new file mode 100644
index 0000000..22dc816
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/OverlapsIntervalJoinUtilFactory.java
@@ -0,0 +1,31 @@
+/*
+ * 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.operators.joins.interval.utils;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+
+public class OverlapsIntervalJoinUtilFactory implements IIntervalJoinUtilFactory {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IIntervalJoinUtil createIntervalMergeJoinUtil(int buildKey, int probeKey, IHyracksTaskContext ctx,
+ int nPartitions) {
+ return new OverlapsIntervalJoinUtil(buildKey, probeKey);
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/AbstractTupleCursor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/AbstractTupleCursor.java
new file mode 100644
index 0000000..5734dec
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/AbstractTupleCursor.java
@@ -0,0 +1,44 @@
+/*
+ * 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.operators.joins.interval.utils.memory;
+
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+
+public abstract class AbstractTupleCursor<T> implements ITupleCursor<T> {
+
+ public static final int UNSET = -2;
+ public static final int INITIALIZED = -1;
+ public int tupleId = UNSET;
+ protected IFrameTupleAccessor accessor;
+
+ @Override
+ public void next() {
+ ++tupleId;
+ }
+
+ @Override
+ public IFrameTupleAccessor getAccessor() {
+ return accessor;
+ }
+
+ @Override
+ public int getTupleId() {
+ return tupleId;
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/FrameTupleCursor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/FrameTupleCursor.java
new file mode 100644
index 0000000..b6c9b2e
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/FrameTupleCursor.java
@@ -0,0 +1,46 @@
+/*
+ * 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.operators.joins.interval.utils.memory;
+
+import java.nio.ByteBuffer;
+
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
+
+public class FrameTupleCursor extends AbstractTupleCursor<ByteBuffer> {
+
+ public FrameTupleCursor(RecordDescriptor recordDescriptor) {
+ accessor = new FrameTupleAccessor(recordDescriptor);
+ }
+
+ @Override
+ public boolean hasNext() {
+ return INITIALIZED < (tupleId + 1) && (tupleId + 1) < accessor.getTupleCount();
+ }
+
+ @Override
+ public void reset(ByteBuffer byteBuffer) {
+ accessor.reset(byteBuffer);
+ tupleId = INITIALIZED;
+ }
+
+ public void resetPosition(int tupleId) {
+ this.tupleId = tupleId;
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/ITupleCursor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/ITupleCursor.java
new file mode 100644
index 0000000..8572ceb
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/ITupleCursor.java
@@ -0,0 +1,85 @@
+/*
+ * 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.
+/*
+ * 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.operators.joins.interval.utils.memory;
+
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+
+/**
+ * Represents an index cursor. The expected use
+ * cursor = new cursor();
+ * while(predicate){
+ * -cursor.reset()
+ * -while (cursor.hasNext()){
+ * --cursor.next()
+ * -}
+ * }
+ */
+public interface ITupleCursor<T> {
+
+ /**
+ * Checks if the Current Tuple Index Exists
+ *
+ * @return
+ */
+ boolean hasNext();
+
+ /**
+ * Increments the Tuple Index
+ *
+ */
+ void next();
+
+ /**
+ * Used in FrameTupleCursor to reset the accessor to the buffer
+ *
+ * @param param
+ */
+ void reset(T param);
+
+ /**
+ * Return the accessor
+ *
+ * @return
+ */
+ IFrameTupleAccessor getAccessor();
+
+ /**
+ * Return the tuple id.
+ *
+ * @return
+ */
+ int getTupleId();
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/IntervalJoinUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/IntervalJoinUtil.java
new file mode 100644
index 0000000..8a065f0
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/IntervalJoinUtil.java
@@ -0,0 +1,58 @@
+/*
+ * 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.operators.joins.interval.utils.memory;
+
+import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
+import org.apache.asterix.om.pointables.nonvisitor.AIntervalPointable;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+
+public class IntervalJoinUtil {
+
+ private IntervalJoinUtil() {
+ }
+
+ public static void getIntervalPointable(IFrameTupleAccessor accessor, int tupleId, int fieldId,
+ AIntervalPointable ip) {
+ int start = getIntervalOffset(accessor, tupleId, fieldId);
+ int length = accessor.getFieldLength(tupleId, fieldId) - 1;
+ ip.set(accessor.getBuffer().array(), start, length);
+ }
+
+ public static int getIntervalOffset(IFrameTupleAccessor accessor, int tupleId, int fieldId) {
+ return getIntervalOffsetWithTag(accessor, tupleId, fieldId) + 1;
+ }
+
+ public static int getIntervalOffsetWithTag(IFrameTupleAccessor accessor, int tupleId, int fieldId) {
+ int start = accessor.getTupleStartOffset(tupleId) + accessor.getFieldSlotsLength()
+ + accessor.getFieldStartOffset(tupleId, fieldId);
+ return start;
+ }
+
+ public static long getIntervalStart(IFrameTupleAccessor accessor, int tupleId, int fieldId) {
+ int start = getIntervalOffset(accessor, tupleId, fieldId);
+ long intervalStart = AIntervalSerializerDeserializer.getIntervalStart(accessor.getBuffer().array(), start);
+ return intervalStart;
+ }
+
+ public static long getIntervalEnd(IFrameTupleAccessor accessor, int tupleId, int fieldId) {
+ int start = getIntervalOffset(accessor, tupleId, fieldId);
+ long intervalEnd = AIntervalSerializerDeserializer.getIntervalEnd(accessor.getBuffer().array(), start);
+ return intervalEnd;
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/IntervalSideTuple.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/IntervalSideTuple.java
new file mode 100644
index 0000000..ac30067
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/IntervalSideTuple.java
@@ -0,0 +1,79 @@
+/*
+ * 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.operators.joins.interval.utils.memory;
+
+import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
+import org.apache.asterix.runtime.operators.joins.interval.utils.IIntervalJoinUtil;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class IntervalSideTuple {
+ // Tuple access
+ int fieldId;
+ ITupleCursor cursor;
+
+ long start;
+ long end;
+
+ // Join details
+ final IIntervalJoinUtil imjc;
+
+ public IntervalSideTuple(IIntervalJoinUtil imjc, ITupleCursor cursor, int fieldId) {
+ this.imjc = imjc;
+ this.cursor = cursor;
+ this.fieldId = fieldId;
+ }
+
+ public void loadTuple() {
+ int offset = IntervalJoinUtil.getIntervalOffset(cursor.getAccessor(), cursor.getTupleId(), fieldId);
+ start = AIntervalSerializerDeserializer.getIntervalStart(cursor.getAccessor().getBuffer().array(), offset);
+ end = AIntervalSerializerDeserializer.getIntervalEnd(cursor.getAccessor().getBuffer().array(), offset);
+ }
+
+ public int getTupleIndex() {
+ return cursor.getTupleId();
+ }
+
+ public ITupleCursor getCursor() {
+ return cursor;
+ }
+
+ public long getStart() {
+ return start;
+ }
+
+ public long getEnd() {
+ return end;
+ }
+
+ public boolean compareJoin(IntervalSideTuple ist) throws HyracksDataException {
+ return imjc.checkToSaveInResult(cursor.getAccessor(), cursor.getTupleId(), ist.cursor.getAccessor(),
+ ist.cursor.getTupleId());
+ }
+
+ public boolean removeFromMemory(IntervalSideTuple ist) {
+ return imjc.checkToRemoveInMemory(cursor.getAccessor(), cursor.getTupleId(), ist.cursor.getAccessor(),
+ ist.cursor.getTupleId());
+ }
+
+ public boolean checkForEarlyExit(IntervalSideTuple ist) {
+ return imjc.checkForEarlyExit(cursor.getAccessor(), cursor.getTupleId(), ist.cursor.getAccessor(),
+ ist.cursor.getTupleId());
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/RunFilePointer.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/RunFilePointer.java
new file mode 100644
index 0000000..1247948
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/RunFilePointer.java
@@ -0,0 +1,96 @@
+/*
+ * 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.operators.joins.interval.utils.memory;
+
+import java.util.Comparator;
+
+import org.apache.hyracks.dataflow.std.structures.IResetable;
+
+public final class RunFilePointer implements IResetable<RunFilePointer> {
+ public static final int INVALID_ID = -1;
+ private long fileOffset;
+ private int tupleIndex;
+
+ public static final Comparator<RunFilePointer> ASC = (tp1, tp2) -> {
+ int c = (int) (tp1.getFileOffset() - tp2.getFileOffset());
+ if (c == 0) {
+ c = tp1.getTupleIndex() - tp2.getTupleIndex();
+ }
+ return c;
+ };
+
+ public static final Comparator<RunFilePointer> DESC = (tp1, tp2) -> {
+ int c = (int) (tp2.getFileOffset() - tp1.getFileOffset());
+ if (c == 0) {
+ c = tp2.getTupleIndex() - tp1.getTupleIndex();
+ }
+ return c;
+ };
+
+ public RunFilePointer() {
+ this(INVALID_ID, INVALID_ID);
+ }
+
+ public RunFilePointer(long fileOffset, int tupleId) {
+ reset(fileOffset, tupleId);
+ }
+
+ public long getFileOffset() {
+ return fileOffset;
+ }
+
+ public int getTupleIndex() {
+ return tupleIndex;
+ }
+
+ @Override
+ public void reset(RunFilePointer other) {
+ reset(other.fileOffset, other.tupleIndex);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ } else if (o == null || getClass() != o.getClass()) {
+ return false;
+ } else {
+ final RunFilePointer that = (RunFilePointer) o;
+ return fileOffset == that.fileOffset && tupleIndex == that.tupleIndex;
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (int) fileOffset;
+ result = 31 * result + tupleIndex;
+ return result;
+ }
+
+ public void reset(long fileOffset, int tupleId) {
+ this.fileOffset = fileOffset;
+ this.tupleIndex = tupleId;
+ }
+
+ @Override
+ public String toString() {
+ return "RunFilePointer(" + fileOffset + ", " + tupleIndex + ")";
+ }
+
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/RunFileStream.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/RunFileStream.java
new file mode 100644
index 0000000..07b8a00
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/RunFileStream.java
@@ -0,0 +1,204 @@
+/*
+ * 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.operators.joins.interval.utils.memory;
+
+import java.nio.ByteBuffer;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.hyracks.api.comm.IFrame;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.comm.IFrameTupleAppender;
+import org.apache.hyracks.api.comm.VSizeFrame;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.io.FileReference;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
+import org.apache.hyracks.dataflow.common.io.RunFileReader;
+import org.apache.hyracks.dataflow.common.io.RunFileWriter;
+
+public class RunFileStream {
+
+ private final String key;
+ private final IFrame runFileBuffer;
+ private final IFrameTupleAppender runFileAppender;
+ private RunFileWriter runFileWriter;
+ private RunFileReader runFileReader;
+ private FileReference runfile;
+
+ private final IHyracksTaskContext ctx;
+
+ private long runFileCounter = 0;
+ private long readCount = 0;
+ private long writeCount = 0;
+ private long totalTupleCount = 0;
+ private long previousReadPointer;
+
+ private boolean reading = false;
+ private boolean writing = false;
+
+ /**
+ * The RunFileSream uses two frames to buffer read and write operations.
+ * WorkFlow: CreateRunFileWriter, Write information, close it, flush it,
+ * go to the next frame, and repeat.
+ *
+ * @param ctx
+ * @param key
+ * @throws HyracksDataException
+ */
+ public RunFileStream(IHyracksTaskContext ctx, String key) throws HyracksDataException {
+ this.ctx = ctx;
+ this.key = key;
+
+ // TODO make the stream only use one buffer.
+ runFileBuffer = new VSizeFrame(ctx);
+ runFileAppender = new FrameTupleAppender(new VSizeFrame(ctx));
+
+ }
+
+ public long getFileCount() {
+ return runFileCounter;
+ }
+
+ public long getTupleCount() {
+ return totalTupleCount;
+ }
+
+ public long getReadCount() {
+ return readCount;
+ }
+
+ public long getWriteCount() {
+ return writeCount;
+ }
+
+ public void createRunFileWriting() throws HyracksDataException {
+ runFileCounter++;
+ String prefix = key + '-' + runFileCounter + '-' + this.toString();
+ runfile = ctx.getJobletContext().createManagedWorkspaceFile(prefix);
+ if (runFileWriter != null) {
+ runFileWriter.close();
+ }
+
+ runFileWriter = new RunFileWriter(runfile, ctx.getIoManager());
+ runFileWriter.open();
+ totalTupleCount = 0;
+ }
+
+ public void startRunFileWriting() throws HyracksDataException {
+ writing = true;
+ runFileBuffer.reset();
+ }
+
+ public void addToRunFile(IFrameTupleAccessor accessor, int tupleId) throws HyracksDataException {
+ if (!runFileAppender.append(accessor, tupleId)) {
+ runFileAppender.write(runFileWriter, true);
+ writeCount++;
+ runFileAppender.append(accessor, tupleId);
+ }
+ totalTupleCount++;
+ }
+
+ public void addToRunFile(FrameTupleCursor cursor) throws HyracksDataException {
+ if (!runFileAppender.append(cursor.getAccessor(), cursor.getTupleId())) {
+ runFileAppender.write(runFileWriter, true);
+ writeCount++;
+ runFileAppender.append(cursor.getAccessor(), cursor.getTupleId());
+ }
+ totalTupleCount++;
+ }
+
+ public void startReadingRunFile(FrameTupleCursor cursor) throws HyracksDataException {
+ startReadingRunFile(cursor, 0);
+ }
+
+ public void startReadingRunFile(FrameTupleCursor cursor, long startOffset) throws HyracksDataException {
+ if (runFileReader != null) {
+ runFileReader.close();
+ }
+ reading = true;
+ // Create reader
+ runFileReader = runFileWriter.createReader();
+ runFileReader.open();
+ runFileReader.seek(startOffset);
+ previousReadPointer = 0;
+ // Load first frame
+ loadNextBuffer(cursor);
+ }
+
+ public boolean loadNextBuffer(FrameTupleCursor cursor) throws HyracksDataException {
+ final long tempFrame = runFileReader.position();
+ if (runFileReader.nextFrame(runFileBuffer)) {
+ previousReadPointer = tempFrame;
+ cursor.reset(runFileBuffer.getBuffer());
+ readCount++;
+ return true;
+ }
+ return false;
+ }
+
+ public void flushRunFile() throws HyracksDataException {
+ writing = false;
+ // Flush buffer.
+ if (runFileAppender.getTupleCount() > 0) {
+ runFileAppender.write(runFileWriter, true);
+ writeCount++;
+ }
+ runFileBuffer.reset();
+ }
+
+ public void closeRunFileReading() throws HyracksDataException {
+ reading = false;
+ runFileReader.close();
+ previousReadPointer = -1;
+ }
+
+ public void close() throws HyracksDataException {
+ if (runFileReader != null) {
+ runFileReader.close();
+ }
+ if (runFileWriter != null) {
+ runFileWriter.close();
+ }
+ }
+
+ public void removeRunFile() {
+ if (runfile != null) {
+ FileUtils.deleteQuietly(runfile.getFile());
+ }
+ }
+
+ public boolean isReading() {
+ return reading;
+ }
+
+ public boolean isWriting() {
+ return writing;
+ }
+
+ public long getReadPointer() {
+ if (runFileReader != null) {
+ return previousReadPointer;
+ }
+ return -1;
+ }
+
+ public ByteBuffer getAppenderBuffer() {
+ return runFileAppender.getBuffer();
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/TuplePointerCursor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/TuplePointerCursor.java
new file mode 100644
index 0000000..b7fd6f0
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/joins/interval/utils/memory/TuplePointerCursor.java
@@ -0,0 +1,61 @@
+/*
+ * 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.operators.joins.interval.utils.memory;
+
+import java.util.Iterator;
+
+import org.apache.hyracks.dataflow.std.buffermanager.ITuplePointerAccessor;
+import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+
+public class TuplePointerCursor extends AbstractTupleCursor<Iterator<TuplePointer>> {
+
+ Iterator<TuplePointer> iterator;
+ TuplePointer tp;
+
+ public TuplePointerCursor(ITuplePointerAccessor accessor) {
+ this.accessor = accessor;
+ }
+
+ @Override
+ public boolean hasNext() {
+ return iterator.hasNext();
+ }
+
+ @Override
+ public void next() {
+ TuplePointer tp = iterator.next();
+ this.tp = tp;
+ tupleId = tp.getTupleIndex();
+ ((ITuplePointerAccessor) accessor).reset(tp);
+ }
+
+ @Override
+ public void reset(Iterator<TuplePointer> iterator) {
+ this.iterator = iterator;
+ tupleId = INITIALIZED;
+ }
+
+ public void remove() {
+ iterator.remove();
+ }
+
+ public TuplePointer getTuplePointer() {
+ return tp;
+ }
+}
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java
index 145be86..508eb76 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java
@@ -346,10 +346,11 @@
.collect(Collectors.toSet());
}
- public DatasetResourceReference getLocalResourceReference(String absoluteFilePath) throws HyracksDataException {
+ public Optional<DatasetResourceReference> getLocalResourceReference(String absoluteFilePath)
+ throws HyracksDataException {
final String localResourcePath = StoragePathUtil.getIndexFileRelativePath(absoluteFilePath);
final LocalResource lr = get(localResourcePath);
- return DatasetResourceReference.of(lr);
+ return lr != null ? Optional.of(DatasetResourceReference.of(lr)) : Optional.empty();
}
/**
diff --git a/asterixdb/pom.xml b/asterixdb/pom.xml
index 63c2d80..a512fbd 100644
--- a/asterixdb/pom.xml
+++ b/asterixdb/pom.xml
@@ -1519,14 +1519,9 @@
<version>4.5.11</version>
</dependency>
<dependency>
- <groupId>net.razorvine</groupId>
- <artifactId>pyrolite</artifactId>
- <version>4.30</version>
- </dependency>
- <dependency>
- <groupId>net.razorvine</groupId>
- <artifactId>serpent</artifactId>
- <version>1.23</version>
+ <groupId>org.msgpack</groupId>
+ <artifactId>msgpack-core</artifactId>
+ <version>0.8.20</version>
</dependency>
</dependencies>
</dependencyManagement>
diff --git a/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java b/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java
index 46e80be..ac22b60 100644
--- a/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java
+++ b/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java
@@ -135,7 +135,7 @@
return errorCode;
}
- public Object[] getParams() {
+ public Serializable[] getParams() {
return params;
}
diff --git a/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/utils/ListSet.java b/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/utils/ListSet.java
index 45cd32a..3f2170a 100644
--- a/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/utils/ListSet.java
+++ b/hyracks-fullstack/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/utils/ListSet.java
@@ -25,7 +25,7 @@
import java.util.Set;
public class ListSet<E> implements Set<E> {
- private List<E> list = new ArrayList<E>();
+ private final List<E> list = new ArrayList<E>();
public ListSet() {
}
@@ -36,17 +36,19 @@
@Override
public boolean add(E arg0) {
- if (list.contains(arg0))
+ if (list.contains(arg0)) {
return false;
+ }
return list.add(arg0);
}
@Override
public boolean addAll(Collection<? extends E> arg0) {
- for (E item : arg0)
- if (list.contains(item))
- return false;
- return list.addAll(arg0);
+ boolean modified = false;
+ for (E item : arg0) {
+ modified |= add(item);
+ }
+ return modified;
}
@Override
diff --git a/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java b/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
index dbc859c..3f03cc8 100644
--- a/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
+++ b/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
@@ -42,6 +42,7 @@
import org.apache.hyracks.algebricks.data.IPrinterFactoryProvider;
import org.apache.hyracks.algebricks.data.ISerializerDeserializerProvider;
import org.apache.hyracks.algebricks.data.ITypeTraitProvider;
+import org.apache.hyracks.algebricks.data.IUnnestingPositionWriterFactory;
import org.apache.hyracks.api.dataflow.value.IMissingWriterFactory;
import org.apache.hyracks.api.dataflow.value.IPredicateEvaluatorFactoryProvider;
import org.apache.hyracks.api.exceptions.IWarningCollector;
@@ -65,6 +66,7 @@
protected IConflictingTypeResolver conflictingTypeResolver;
protected IExpressionEvalSizeComputer expressionEvalSizeComputer;
protected IMissingWriterFactory missingWriterFactory;
+ protected IUnnestingPositionWriterFactory unnestingPositionWriterFactory;
protected INormalizedKeyComputerFactoryProvider normalizedKeyComputerFactoryProvider;
protected IPartialAggregationTypeComputer partialAggregationTypeComputer;
protected IMergeAggregationExpressionFactory mergeAggregationExpressionFactory;
@@ -187,6 +189,14 @@
return missingWriterFactory;
}
+ public void setUnnestingPositionWriterFactory(IUnnestingPositionWriterFactory unnestingPositionWriterFactory) {
+ this.unnestingPositionWriterFactory = unnestingPositionWriterFactory;
+ }
+
+ public IUnnestingPositionWriterFactory getUnnestingPositionWriterFactory() {
+ return unnestingPositionWriterFactory;
+ }
+
public void setExpressionEvalSizeComputer(IExpressionEvalSizeComputer expressionEvalSizeComputer) {
this.expressionEvalSizeComputer = expressionEvalSizeComputer;
}
diff --git a/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java b/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java
index 0fd107f..49be31c 100644
--- a/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java
+++ b/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java
@@ -102,10 +102,11 @@
serializerDeserializerProvider, hashFunctionFactoryProvider, hashFunctionFamilyProvider,
comparatorFactoryProvider, typeTraitProvider, binaryBooleanInspectorFactory,
binaryIntegerInspectorFactory, printerProvider, missingWriterFactory,
- normalizedKeyComputerFactoryProvider, expressionRuntimeProvider, expressionTypeComputer,
- oc, expressionEvalSizeComputer, partialAggregationTypeComputer,
- predEvaluatorFactoryProvider, physicalOptimizationConfig.getFrameSize(),
- clusterLocations, warningCollector, maxWarnings);
+ unnestingPositionWriterFactory, normalizedKeyComputerFactoryProvider,
+ expressionRuntimeProvider, expressionTypeComputer, oc, expressionEvalSizeComputer,
+ partialAggregationTypeComputer, predEvaluatorFactoryProvider,
+ physicalOptimizationConfig.getFrameSize(), clusterLocations, warningCollector,
+ maxWarnings);
PlanCompiler pc = new PlanCompiler(context);
return pc.compilePlan(plan, jobEventListenerFactory);
diff --git a/hyracks-fullstack/algebricks/algebricks-core/pom.xml b/hyracks-fullstack/algebricks/algebricks-core/pom.xml
index 5baa01e..b6c19f0 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/pom.xml
+++ b/hyracks-fullstack/algebricks/algebricks-core/pom.xml
@@ -102,5 +102,14 @@
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>it.unimi.dsi</groupId>
+ <artifactId>fastutil</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IOptimizationContext.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IOptimizationContext.java
index 726a5df..166ab9a 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IOptimizationContext.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IOptimizationContext.java
@@ -25,6 +25,8 @@
import org.apache.hyracks.algebricks.core.algebra.expressions.IMergeAggregationExpressionFactory;
import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableEvalSizeEnvironment;
import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
+import org.apache.hyracks.algebricks.core.algebra.plan.PlanStabilityVerifier;
+import org.apache.hyracks.algebricks.core.algebra.plan.PlanStructureVerifier;
import org.apache.hyracks.algebricks.core.algebra.prettyprint.IPlanPrettyPrinter;
import org.apache.hyracks.algebricks.core.algebra.properties.FunctionalDependency;
import org.apache.hyracks.algebricks.core.algebra.properties.ILogicalPropertiesVector;
@@ -87,4 +89,8 @@
public INodeDomain getComputationNodeDomain();
public IWarningCollector getWarningCollector();
+
+ public PlanStructureVerifier getPlanStructureVerifier();
+
+ public PlanStabilityVerifier getPlanStabilityVerifier();
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/PhysicalOperatorTag.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/PhysicalOperatorTag.java
index 84d19c1..b7f6d62 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/PhysicalOperatorTag.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/PhysicalOperatorTag.java
@@ -40,6 +40,7 @@
INDEX_BULKLOAD,
INDEX_INSERT_DELETE,
INSERT_DELETE,
+ INTERVAL_MERGE_JOIN,
LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH,
MATERIALIZE,
MICRO_PRE_CLUSTERED_GROUP_BY,
@@ -48,6 +49,8 @@
NESTED_LOOP,
NESTED_TUPLE_SOURCE,
ONE_TO_ONE_EXCHANGE,
+ PARTIAL_BROADCAST_RANGE_FOLLOWING_EXCHANGE,
+ PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE,
PRE_CLUSTERED_GROUP_BY,
PRE_SORTED_DISTINCT_BY,
RANDOM_PARTITION_EXCHANGE,
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java
index 1cc206f..81aac03 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java
@@ -21,10 +21,12 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.commons.lang3.mutable.MutableObject;
@@ -54,23 +56,19 @@
public AbstractFunctionCallExpression(FunctionKind kind, IFunctionInfo finfo,
List<Mutable<ILogicalExpression>> arguments) {
- this.kind = kind;
- this.finfo = finfo;
- this.arguments = arguments;
+ this.kind = Objects.requireNonNull(kind);
+ this.finfo = Objects.requireNonNull(finfo);
+ this.arguments = Objects.requireNonNull(arguments);
}
public AbstractFunctionCallExpression(FunctionKind kind, IFunctionInfo finfo) {
- this.kind = kind;
- this.finfo = finfo;
- this.arguments = new ArrayList<Mutable<ILogicalExpression>>();
+ this(kind, finfo, new ArrayList<>());
}
public AbstractFunctionCallExpression(FunctionKind kind, IFunctionInfo finfo,
Mutable<ILogicalExpression>... expressions) {
this(kind, finfo);
- for (Mutable<ILogicalExpression> e : expressions) {
- this.arguments.add(e);
- }
+ Collections.addAll(arguments, expressions);
}
public void setOpaqueParameters(Object[] opaqueParameters) {
@@ -212,7 +210,7 @@
@Override
public int hashCode() {
- int h = finfo.hashCode();
+ int h = getFunctionIdentifier().hashCode();
for (Mutable<ILogicalExpression> e : arguments) {
h = h * 41 + e.getValue().hashCode();
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
index 42ff3c0..40e729d 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
@@ -19,9 +19,7 @@
package org.apache.hyracks.algebricks.core.algebra.expressions;
import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -31,7 +29,7 @@
import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionVisitor;
public final class ConstantExpression extends AbstractLogicalExpression {
- private IAlgebricksConstantValue value;
+ private final IAlgebricksConstantValue value;
public static final ConstantExpression TRUE = new ConstantExpression(new IAlgebricksConstantValue() {
@@ -115,8 +113,6 @@
}
});
- private Map<Object, IExpressionAnnotation> annotationMap = new HashMap<>();
-
public ConstantExpression(IAlgebricksConstantValue value) {
this.value = value;
}
@@ -125,10 +121,6 @@
return value;
}
- public void setValue(IAlgebricksConstantValue value) {
- this.value = value;
- }
-
@Override
public LogicalExpressionTag getExpressionTag() {
return LogicalExpressionTag.CONSTANT;
@@ -170,21 +162,13 @@
@Override
public AbstractLogicalExpression cloneExpression() {
- Map<Object, IExpressionAnnotation> m = new HashMap<>();
- annotationMap.forEach((key, value1) -> m.put(key, value1.copy()));
ConstantExpression c = new ConstantExpression(value);
- c.annotationMap = m;
c.setSourceLocation(sourceLoc);
return c;
}
- public Map<Object, IExpressionAnnotation> getAnnotations() {
- return annotationMap;
- }
-
@Override
public boolean splitIntoConjuncts(List<Mutable<ILogicalExpression>> conjs) {
return false;
}
-
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/FunctionIdentifier.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/FunctionIdentifier.java
index 74c1ba5..db5a959 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/FunctionIdentifier.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/FunctionIdentifier.java
@@ -19,6 +19,7 @@
package org.apache.hyracks.algebricks.core.algebra.functions;
import java.io.Serializable;
+import java.util.Objects;
public class FunctionIdentifier implements Serializable {
private static final long serialVersionUID = 1L;
@@ -29,20 +30,24 @@
public static final int VARARGS = -1;
- public FunctionIdentifier(String namespace, String name) {
- this(namespace, name, VARARGS);
- }
-
public FunctionIdentifier(String namespace, String name, int arity) {
this.namespace = namespace;
this.name = name;
this.arity = arity;
}
+ public String getNamespace() {
+ return namespace;
+ }
+
public String getName() {
return name;
}
+ public int getArity() {
+ return arity;
+ }
+
@Override
public boolean equals(Object o) {
if (super.equals(o)) {
@@ -50,26 +55,18 @@
}
if (o instanceof FunctionIdentifier) {
FunctionIdentifier ofi = (FunctionIdentifier) o;
- return ofi.getNamespace().equals(getNamespace()) && ofi.name.equals(name);
+ return namespace.equals(ofi.namespace) && name.equals(ofi.name) && arity == ofi.arity;
}
return false;
}
@Override
public int hashCode() {
- return name.hashCode() + namespace.hashCode();
+ return Objects.hash(namespace, name, arity);
}
@Override
public String toString() {
- return getNamespace() + ":" + name;
- }
-
- public int getArity() {
- return arity;
- }
-
- public String getNamespace() {
- return namespace;
+ return namespace + ':' + name + '#' + arity;
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
index 6d001dc..7aa3640 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
@@ -75,8 +75,9 @@
public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getDeleteRuntime(IDataSource<S> dataSource,
IOperatorSchema propagatedSchema, IVariableTypeEnvironment typeEnv, List<LogicalVariable> keys,
- LogicalVariable payLoadVar, List<LogicalVariable> additionalNonKeyFields, RecordDescriptor inputRecordDesc,
- JobGenContext context, JobSpecification jobSpec) throws AlgebricksException;
+ LogicalVariable payLoadVar, List<LogicalVariable> additionalNonKeyFields,
+ List<LogicalVariable> additionalNonFilteringFields, RecordDescriptor inputRecordDesc, JobGenContext context,
+ JobSpecification jobSpec) throws AlgebricksException;
/**
* Creates the insert runtime of IndexInsertDeletePOperator, which models
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestMapOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestMapOperator.java
index c2d2cfa..5fc69b2 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestMapOperator.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestMapOperator.java
@@ -66,6 +66,11 @@
return variableTypes;
}
+ @Override
+ public boolean isMap() {
+ return true;
+ }
+
/**
* If propagateInput is true, then propagates the input variables.
*/
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestNonMapOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestNonMapOperator.java
index 1659c46..5c485d5 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestNonMapOperator.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestNonMapOperator.java
@@ -23,22 +23,15 @@
import java.util.List;
import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
-import org.apache.hyracks.algebricks.runtime.base.IUnnestingPositionWriter;
public abstract class AbstractUnnestNonMapOperator extends AbstractUnnestOperator {
protected LogicalVariable positionalVariable;
/**
- * Specify the writer of the positional variable
- */
- protected IUnnestingPositionWriter positionWriter;
-
- /**
* Specify the type of the positional variable
*/
protected Object positionalVariableType;
@@ -48,12 +41,10 @@
}
public AbstractUnnestNonMapOperator(LogicalVariable variable, Mutable<ILogicalExpression> expression,
- LogicalVariable positionalVariable, Object positionalVariableType,
- IUnnestingPositionWriter positionWriter) {
+ LogicalVariable positionalVariable, Object positionalVariableType) {
this(variable, expression);
this.setPositionalVariable(positionalVariable);
this.setPositionalVariableType(positionalVariableType);
- this.setPositionWriter(positionWriter);
}
public LogicalVariable getVariable() {
@@ -68,12 +59,8 @@
return positionalVariable;
}
- public void setPositionWriter(IUnnestingPositionWriter positionWriter) {
- this.positionWriter = positionWriter;
- }
-
- public IUnnestingPositionWriter getPositionWriter() {
- return positionalVariable != null ? positionWriter : null;
+ public boolean hasPositionalVariable() {
+ return positionalVariable != null;
}
public void setPositionalVariableType(Object positionalVariableType) {
@@ -84,6 +71,13 @@
return positionalVariableType;
}
+ @Override
+ public boolean isMap() {
+ //TODO(dmitry): unnest with positional variable is not a 'map'
+ //need to return !hasPositionalVariable();
+ return true;
+ }
+
protected static <E> List<E> makeSingletonList(E item) {
List<E> array = new ArrayList<>(1);
array.add(item);
@@ -95,8 +89,7 @@
return new VariablePropagationPolicy() {
@Override
- public void propagateVariables(IOperatorSchema target, IOperatorSchema... sources)
- throws AlgebricksException {
+ public void propagateVariables(IOperatorSchema target, IOperatorSchema... sources) {
if (sources.length > 0) {
target.addAllVariables(sources[0]);
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestOperator.java
index 1b07e2f..327d797 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestOperator.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestOperator.java
@@ -40,11 +40,6 @@
}
@Override
- public boolean isMap() {
- return true;
- }
-
- @Override
public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform visitor) throws AlgebricksException {
return visitor.transform(expression);
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/LeftOuterUnnestOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/LeftOuterUnnestOperator.java
index bdc3227..8c95a3f 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/LeftOuterUnnestOperator.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/LeftOuterUnnestOperator.java
@@ -26,7 +26,6 @@
import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
import org.apache.hyracks.algebricks.core.algebra.typing.PropagatingTypeEnvironment;
import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
-import org.apache.hyracks.algebricks.runtime.base.IUnnestingPositionWriter;
public class LeftOuterUnnestOperator extends AbstractUnnestNonMapOperator {
@@ -35,9 +34,8 @@
}
public LeftOuterUnnestOperator(LogicalVariable variable, Mutable<ILogicalExpression> expression,
- LogicalVariable positionalVariable, Object positionalVariableType,
- IUnnestingPositionWriter positionWriter) {
- super(variable, expression, positionalVariable, positionalVariableType, positionWriter);
+ LogicalVariable positionalVariable, Object positionalVariableType) {
+ super(variable, expression, positionalVariable, positionalVariableType);
}
@Override
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnionAllOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnionAllOperator.java
index ba5ef5a..45c6e2f 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnionAllOperator.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnionAllOperator.java
@@ -35,7 +35,7 @@
public class UnionAllOperator extends AbstractLogicalOperator {
// (left-var, right-var, out-var)
- private List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> varMap;
+ private final List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> varMap;
public UnionAllOperator(List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> varMap) {
this.varMap = varMap;
@@ -112,31 +112,21 @@
inputSchemaIdx = 1;
}
- schema = new ArrayList<>(inputSchema.size());
- for (LogicalVariable inVar : inputSchema) {
- LogicalVariable outVar = findOutputVar(inVar, inputSchemaIdx);
- schema.add(outVar != null ? outVar : inVar);
- }
- }
-
- private LogicalVariable findOutputVar(LogicalVariable inputVar, int inputIdx) {
+ schema = new ArrayList<>(inputSchema);
for (Triple<LogicalVariable, LogicalVariable, LogicalVariable> t : varMap) {
- LogicalVariable testVar;
- switch (inputIdx) {
- case 0:
- testVar = t.first;
- break;
- case 1:
- testVar = t.second;
- break;
- default:
- throw new IllegalArgumentException(String.valueOf(inputIdx));
+ LogicalVariable inVar = inputSchemaIdx == 0 ? t.first : t.second;
+ LogicalVariable outVar = t.third;
+ boolean mappingFound = false;
+ for (int i = 0, n = schema.size(); i < n; i++) {
+ if (schema.get(i).equals(inVar)) {
+ schema.set(i, outVar);
+ mappingFound = true;
+ }
}
- if (inputVar.equals(testVar)) {
- return t.third;
+ if (!mappingFound) {
+ schema.add(outVar);
}
}
- return null;
}
@Override
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java
index e90298d..face56e 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java
@@ -26,7 +26,6 @@
import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
-import org.apache.hyracks.algebricks.runtime.base.IUnnestingPositionWriter;
public class UnnestOperator extends AbstractUnnestNonMapOperator {
@@ -35,9 +34,8 @@
}
public UnnestOperator(LogicalVariable variable, Mutable<ILogicalExpression> expression,
- LogicalVariable positionalVariable, Object positionalVariableType,
- IUnnestingPositionWriter positionWriter) {
- super(variable, expression, positionalVariable, positionalVariableType, positionWriter);
+ LogicalVariable positionalVariable, Object positionalVariableType) {
+ super(variable, expression, positionalVariable, positionalVariableType);
}
@Override
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java
index 1c02a6c..2cdcaa2 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java
@@ -22,6 +22,7 @@
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Objects;
import java.util.Set;
import org.apache.commons.lang3.mutable.Mutable;
@@ -491,29 +492,18 @@
@Override
public ILogicalOperator visitUnionOperator(UnionAllOperator op, ILogicalOperator arg) throws AlgebricksException {
- List<Mutable<ILogicalOperator>> copiedInputs = new ArrayList<>();
- for (Mutable<ILogicalOperator> childRef : op.getInputs()) {
- copiedInputs.add(deepCopyOperatorReference(childRef, null));
- }
- List<List<LogicalVariable>> liveVarsInInputs = new ArrayList<>();
- for (Mutable<ILogicalOperator> inputOpRef : copiedInputs) {
- List<LogicalVariable> liveVars = new ArrayList<>();
- VariableUtilities.getLiveVariables(inputOpRef.getValue(), liveVars);
- liveVarsInInputs.add(liveVars);
- }
- List<LogicalVariable> liveVarsInLeftInput = liveVarsInInputs.get(0);
- List<LogicalVariable> liveVarsInRightInput = liveVarsInInputs.get(1);
- List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> copiedTriples = new ArrayList<>();
- int index = 0;
+ List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> variableMappingsCopy =
+ new ArrayList<>(op.getVariableMappings().size());
+ UnionAllOperator opCopy = new UnionAllOperator(variableMappingsCopy);
+ deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
for (Triple<LogicalVariable, LogicalVariable, LogicalVariable> triple : op.getVariableMappings()) {
LogicalVariable producedVar = deepCopyVariable(triple.third);
+ LogicalVariable newLeftVar = Objects.requireNonNull(inputVarToOutputVarMapping.get(triple.first));
+ LogicalVariable newRightVar = Objects.requireNonNull(inputVarToOutputVarMapping.get(triple.second));
Triple<LogicalVariable, LogicalVariable, LogicalVariable> copiedTriple =
- new Triple<>(liveVarsInLeftInput.get(index), liveVarsInRightInput.get(index), producedVar);
- copiedTriples.add(copiedTriple);
- ++index;
+ new Triple<>(newLeftVar, newRightVar, producedVar);
+ variableMappingsCopy.add(copiedTriple);
}
- UnionAllOperator opCopy = new UnionAllOperator(copiedTriples);
- deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
return opCopy;
}
@@ -565,7 +555,7 @@
public ILogicalOperator visitUnnestOperator(UnnestOperator op, ILogicalOperator arg) throws AlgebricksException {
UnnestOperator opCopy = new UnnestOperator(deepCopyVariable(op.getVariable()),
exprDeepCopyVisitor.deepCopyExpressionReference(op.getExpressionRef()),
- deepCopyVariable(op.getPositionalVariable()), op.getPositionalVariableType(), op.getPositionWriter());
+ deepCopyVariable(op.getPositionalVariable()), op.getPositionalVariableType());
deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
return opCopy;
}
@@ -602,7 +592,7 @@
throws AlgebricksException {
LeftOuterUnnestOperator opCopy = new LeftOuterUnnestOperator(deepCopyVariable(op.getVariable()),
exprDeepCopyVisitor.deepCopyExpressionReference(op.getExpressionRef()),
- deepCopyVariable(op.getPositionalVariable()), op.getPositionalVariableType(), op.getPositionWriter());
+ deepCopyVariable(op.getPositionalVariable()), op.getPositionalVariableType());
deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
return opCopy;
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java
index 62ea79d..e25c8c4 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java
@@ -227,7 +227,7 @@
@Override
public ILogicalOperator visitUnnestOperator(UnnestOperator op, Void arg) throws AlgebricksException {
return new UnnestOperator(op.getVariable(), deepCopyExpressionRef(op.getExpressionRef()),
- op.getPositionalVariable(), op.getPositionalVariableType(), op.getPositionWriter());
+ op.getPositionalVariable(), op.getPositionalVariableType());
}
@Override
@@ -412,7 +412,7 @@
public ILogicalOperator visitLeftOuterUnnestOperator(LeftOuterUnnestOperator op, Void arg)
throws AlgebricksException {
return new LeftOuterUnnestOperator(op.getVariable(), deepCopyExpressionRef(op.getExpressionRef()),
- op.getPositionalVariable(), op.getPositionalVariableType(), op.getPositionWriter());
+ op.getPositionalVariable(), op.getPositionalVariableType());
}
@Override
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/UsedVariableVisitor.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/UsedVariableVisitor.java
index e20e534..182f61d 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/UsedVariableVisitor.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/UsedVariableVisitor.java
@@ -73,9 +73,11 @@
import org.apache.hyracks.algebricks.core.algebra.operators.logical.WriteResultOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.HashPartitionExchangePOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.HashPartitionMergeExchangePOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.PartialBroadcastRangeFollowingExchangePOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.PartialBroadcastRangeIntersectExchangePOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.RangePartitionExchangePOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.physical.RangePartitionMergeExchangePOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.SortMergeExchangePOperator;
+import org.apache.hyracks.algebricks.core.algebra.properties.IntervalColumn;
import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
@@ -143,6 +145,7 @@
case ONE_TO_ONE_EXCHANGE:
case RANDOM_MERGE_EXCHANGE:
case SEQUENTIAL_MERGE_EXCHANGE:
+ case RANDOM_PARTITION_EXCHANGE:
// No variables used.
break;
case HASH_PARTITION_EXCHANGE:
@@ -163,18 +166,25 @@
}
break;
case RANGE_PARTITION_EXCHANGE:
- RangePartitionExchangePOperator rangePartitionPOp = (RangePartitionExchangePOperator) physOp;
- for (OrderColumn partCol : rangePartitionPOp.getPartitioningFields()) {
- usedVariables.add(partCol.getColumn());
+ RangePartitionExchangePOperator rangeExchangePOp = (RangePartitionExchangePOperator) physOp;
+ for (OrderColumn orderCol : rangeExchangePOp.getPartitioningFields()) {
+ usedVariables.add(orderCol.getColumn());
}
break;
- case RANGE_PARTITION_MERGE_EXCHANGE:
- RangePartitionMergeExchangePOperator rangeMergePOp = (RangePartitionMergeExchangePOperator) physOp;
- for (OrderColumn partCol : rangeMergePOp.getPartitioningFields()) {
- usedVariables.add(partCol.getColumn());
+ case PARTIAL_BROADCAST_RANGE_FOLLOWING_EXCHANGE:
+ PartialBroadcastRangeFollowingExchangePOperator rangeFollowingPOp =
+ (PartialBroadcastRangeFollowingExchangePOperator) physOp;
+ for (OrderColumn orderCol : rangeFollowingPOp.getPartitioningFields()) {
+ usedVariables.add(orderCol.getColumn());
}
break;
- case RANDOM_PARTITION_EXCHANGE:
+ case PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE:
+ PartialBroadcastRangeIntersectExchangePOperator intersectPOp =
+ (PartialBroadcastRangeIntersectExchangePOperator) physOp;
+ for (IntervalColumn intervalCol : intersectPOp.getIntervalFields()) {
+ usedVariables.add(intervalCol.getStartColumn());
+ usedVariables.add(intervalCol.getEndColumn());
+ }
break;
default:
throw new AlgebricksException("Unhandled physical operator tag '" + physOp.getOperatorTag() + "'.");
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractRangeExchangePOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractRangeExchangePOperator.java
new file mode 100644
index 0000000..53f3aaf
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractRangeExchangePOperator.java
@@ -0,0 +1,135 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.physical;
+
+import java.util.List;
+
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.common.utils.Triple;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.properties.INodeDomain;
+import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
+import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
+import org.apache.hyracks.algebricks.data.IBinaryComparatorFactoryProvider;
+import org.apache.hyracks.algebricks.data.INormalizedKeyComputerFactoryProvider;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
+import org.apache.hyracks.dataflow.common.data.partition.range.DynamicRangeMapSupplier;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMapSupplier;
+import org.apache.hyracks.dataflow.common.data.partition.range.StaticRangeMapSupplier;
+
+abstract class AbstractRangeExchangePOperator extends AbstractExchangePOperator {
+
+ protected final List<OrderColumn> partitioningFields;
+
+ protected final INodeDomain domain;
+
+ protected final RangeMap rangeMap;
+
+ protected final boolean rangeMapIsComputedAtRunTime;
+
+ protected final String rangeMapKeyInContext;
+
+ private AbstractRangeExchangePOperator(List<OrderColumn> partitioningFields, INodeDomain domain, RangeMap rangeMap,
+ boolean rangeMapIsComputedAtRunTime, String rangeMapKeyInContext) {
+ this.partitioningFields = partitioningFields;
+ this.domain = domain;
+ this.rangeMap = rangeMap;
+ this.rangeMapIsComputedAtRunTime = rangeMapIsComputedAtRunTime;
+ this.rangeMapKeyInContext = rangeMapKeyInContext;
+ }
+
+ protected AbstractRangeExchangePOperator(List<OrderColumn> partitioningFields, INodeDomain domain,
+ String rangeMapKeyInContext) {
+ this(partitioningFields, domain, null, true, rangeMapKeyInContext);
+ }
+
+ protected AbstractRangeExchangePOperator(List<OrderColumn> partitioningFields, INodeDomain domain,
+ RangeMap rangeMap) {
+ this(partitioningFields, domain, rangeMap, false, "");
+ }
+
+ public final List<OrderColumn> getPartitioningFields() {
+ return partitioningFields;
+ }
+
+ public final INodeDomain getDomain() {
+ return domain;
+ }
+
+ @Override
+ public String toString() {
+ return getOperatorTag().toString() + " " + partitioningFields
+ + (rangeMap != null ? " RANGE_MAP:" + rangeMap : "");
+ }
+
+ protected final RangeMapSupplier crateRangeMapSupplier() {
+ return rangeMapIsComputedAtRunTime ? new DynamicRangeMapSupplier(rangeMapKeyInContext)
+ : new StaticRangeMapSupplier(rangeMap);
+ }
+
+ protected Pair<int[], IBinaryComparatorFactory[]> createOrderColumnsAndComparators(ILogicalOperator op,
+ IOperatorSchema opSchema, JobGenContext context) throws AlgebricksException {
+ int n = partitioningFields.size();
+ int[] sortFields = new int[n];
+ IBinaryComparatorFactory[] comps = new IBinaryComparatorFactory[n];
+ IVariableTypeEnvironment env = context.getTypeEnvironment(op);
+ int i = 0;
+ for (OrderColumn oc : partitioningFields) {
+ LogicalVariable var = oc.getColumn();
+ sortFields[i] = opSchema.findVariable(var);
+ Object type = env.getVarType(var);
+ IBinaryComparatorFactoryProvider bcfp = context.getBinaryComparatorFactoryProvider();
+ comps[i] = bcfp.getBinaryComparatorFactory(type, oc.getOrder() == OrderOperator.IOrder.OrderKind.ASC);
+ i++;
+ }
+ return new Pair<>(sortFields, comps);
+ }
+
+ protected Triple<int[], IBinaryComparatorFactory[], INormalizedKeyComputerFactory> createOrderColumnsAndComparatorsWithNormKeyComputer(
+ ILogicalOperator op, IOperatorSchema opSchema, JobGenContext context) throws AlgebricksException {
+ int n = partitioningFields.size();
+ int[] sortFields = new int[n];
+ IBinaryComparatorFactory[] comps = new IBinaryComparatorFactory[n];
+ IVariableTypeEnvironment env = context.getTypeEnvironment(op);
+ INormalizedKeyComputerFactoryProvider nkcfProvider = context.getNormalizedKeyComputerFactoryProvider();
+ INormalizedKeyComputerFactory nkcf = null;
+ int i = 0;
+ for (OrderColumn oc : partitioningFields) {
+ LogicalVariable var = oc.getColumn();
+ sortFields[i] = opSchema.findVariable(var);
+ Object type = env.getVarType(var);
+ OrderOperator.IOrder.OrderKind order = oc.getOrder();
+ if (i == 0 && nkcfProvider != null && type != null) {
+ nkcf = nkcfProvider.getNormalizedKeyComputerFactory(type, order == OrderOperator.IOrder.OrderKind.ASC);
+ }
+ IBinaryComparatorFactoryProvider bcfp = context.getBinaryComparatorFactoryProvider();
+ comps[i] = bcfp.getBinaryComparatorFactory(type, oc.getOrder() == OrderOperator.IOrder.OrderKind.ASC);
+ i++;
+ }
+ return new Triple<>(sortFields, comps, nkcf);
+ }
+}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractUnnestPOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractUnnestPOperator.java
index 5d54e1d..90e88dc 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractUnnestPOperator.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractUnnestPOperator.java
@@ -33,6 +33,7 @@
import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenHelper;
+import org.apache.hyracks.algebricks.data.IUnnestingPositionWriterFactory;
import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.operators.std.UnnestRuntimeFactory;
import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
@@ -81,8 +82,10 @@
IUnnestingEvaluatorFactory unnestingFactory = expressionRuntimeProvider.createUnnestingFunctionFactory(agg,
context.getTypeEnvironment(op.getInputs().get(0).getValue()), inputSchemas, context);
int[] projectionList = JobGenHelper.projectAllVariables(opSchema);
+ IUnnestingPositionWriterFactory positionWriterFactory =
+ unnest.hasPositionalVariable() ? context.getUnnestingPositionWriterFactory() : null;
UnnestRuntimeFactory unnestRuntime = new UnnestRuntimeFactory(outCol, unnestingFactory, projectionList,
- unnest.getPositionWriter(), leftOuter, context.getMissingWriterFactory());
+ positionWriterFactory, leftOuter, context.getMissingWriterFactory());
unnestRuntime.setSourceLocation(unnest.getSourceLocation());
RecordDescriptor recDesc = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), opSchema, context);
builder.contributeMicroOperator(unnest, unnestRuntime, recDesc);
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeleteUpsertPOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeleteUpsertPOperator.java
index 927fb66..1d41291 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeleteUpsertPOperator.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeleteUpsertPOperator.java
@@ -114,7 +114,7 @@
break;
case DELETE:
runtimeAndConstraints = mp.getDeleteRuntime(dataSource, propagatedSchema, typeEnv, keys, payload,
- additionalFilteringKeys, inputDesc, context, spec);
+ additionalFilteringKeys, additionalNonFilteringFields, inputDesc, context, spec);
break;
case UPSERT:
runtimeAndConstraints = mp.getUpsertRuntime(dataSource, inputSchemas[0], typeEnv, keys, payload,
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/PartialBroadcastRangeFollowingExchangePOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/PartialBroadcastRangeFollowingExchangePOperator.java
new file mode 100644
index 0000000..46b7fef
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/PartialBroadcastRangeFollowingExchangePOperator.java
@@ -0,0 +1,87 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.physical;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.core.algebra.base.IHyracksJobBuilder;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
+import org.apache.hyracks.algebricks.core.algebra.properties.INodeDomain;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
+import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
+import org.apache.hyracks.algebricks.core.algebra.properties.PartialBroadcastOrderedFollowingProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
+import org.apache.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
+import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
+import org.apache.hyracks.api.dataflow.IConnectorDescriptor;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.ITupleMultiPartitionComputerFactory;
+import org.apache.hyracks.api.job.IConnectorDescriptorRegistry;
+import org.apache.hyracks.dataflow.common.data.partition.range.FieldRangeFollowingPartitionComputerFactory;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+import org.apache.hyracks.dataflow.std.connectors.MToNPartialBroadcastConnectorDescriptor;
+
+/**
+ * This exchange operator delivers {@link IPartitioningProperty.PartitioningType#PARTIAL_BROADCAST_ORDERED_FOLLOWING}
+ * structural property
+ */
+public final class PartialBroadcastRangeFollowingExchangePOperator extends AbstractRangeExchangePOperator {
+
+ public PartialBroadcastRangeFollowingExchangePOperator(List<OrderColumn> partitioningFields, INodeDomain domain,
+ RangeMap rangeMap) {
+ super(partitioningFields, domain, rangeMap);
+ }
+
+ @Override
+ public PhysicalOperatorTag getOperatorTag() {
+ return PhysicalOperatorTag.PARTIAL_BROADCAST_RANGE_FOLLOWING_EXCHANGE;
+ }
+
+ @Override
+ public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) {
+ IPartitioningProperty pp = new PartialBroadcastOrderedFollowingProperty(partitioningFields, domain, rangeMap);
+ // Broadcasts destroy input's local properties.
+ this.deliveredProperties = new StructuralPropertiesVector(pp, Collections.emptyList());
+ }
+
+ @Override
+ public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
+ IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
+ return emptyUnaryRequirements();
+ }
+
+ @Override
+ public Pair<IConnectorDescriptor, IHyracksJobBuilder.TargetConstraint> createConnectorDescriptor(
+ IConnectorDescriptorRegistry spec, ILogicalOperator op, IOperatorSchema opSchema, JobGenContext context)
+ throws AlgebricksException {
+ Pair<int[], IBinaryComparatorFactory[]> pOrderColumns = createOrderColumnsAndComparators(op, opSchema, context);
+ ITupleMultiPartitionComputerFactory tpcf = new FieldRangeFollowingPartitionComputerFactory(pOrderColumns.first,
+ pOrderColumns.second, crateRangeMapSupplier(), op.getSourceLocation());
+ IConnectorDescriptor conn = new MToNPartialBroadcastConnectorDescriptor(spec, tpcf);
+ return new Pair<>(conn, null);
+ }
+}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/PartialBroadcastRangeIntersectExchangePOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/PartialBroadcastRangeIntersectExchangePOperator.java
new file mode 100644
index 0000000..4097101
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/PartialBroadcastRangeIntersectExchangePOperator.java
@@ -0,0 +1,143 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.physical;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.common.utils.Triple;
+import org.apache.hyracks.algebricks.core.algebra.base.IHyracksJobBuilder;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.properties.INodeDomain;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
+import org.apache.hyracks.algebricks.core.algebra.properties.IntervalColumn;
+import org.apache.hyracks.algebricks.core.algebra.properties.PartialBroadcastOrderedIntersectProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
+import org.apache.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
+import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
+import org.apache.hyracks.algebricks.data.IBinaryComparatorFactoryProvider;
+import org.apache.hyracks.api.dataflow.IConnectorDescriptor;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.ITupleMultiPartitionComputerFactory;
+import org.apache.hyracks.api.job.IConnectorDescriptorRegistry;
+import org.apache.hyracks.dataflow.common.data.partition.range.FieldRangeIntersectPartitionComputerFactory;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+import org.apache.hyracks.dataflow.common.data.partition.range.StaticRangeMapSupplier;
+import org.apache.hyracks.dataflow.std.connectors.MToNPartialBroadcastConnectorDescriptor;
+
+/**
+ * This exchange operator delivers {@link IPartitioningProperty.PartitioningType#PARTIAL_BROADCAST_ORDERED_INTERSECT}
+ * structural property
+ */
+public class PartialBroadcastRangeIntersectExchangePOperator extends AbstractExchangePOperator {
+
+ private final List<IntervalColumn> intervalFields;
+
+ private final INodeDomain domain;
+
+ private final RangeMap rangeMap;
+
+ public PartialBroadcastRangeIntersectExchangePOperator(List<IntervalColumn> intervalFields, INodeDomain domain,
+ RangeMap rangeMap) {
+ this.intervalFields = intervalFields;
+ this.domain = domain;
+ this.rangeMap = rangeMap;
+ }
+
+ @Override
+ public PhysicalOperatorTag getOperatorTag() {
+ return PhysicalOperatorTag.PARTIAL_BROADCAST_RANGE_INTERSECT_EXCHANGE;
+ }
+
+ public final List<IntervalColumn> getIntervalFields() {
+ return intervalFields;
+ }
+
+ public final INodeDomain getDomain() {
+ return domain;
+ }
+
+ @Override
+ public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) {
+ IPartitioningProperty pp = new PartialBroadcastOrderedIntersectProperty(intervalFields, domain, rangeMap);
+ // Broadcasts destroy input's local properties.
+ this.deliveredProperties = new StructuralPropertiesVector(pp, Collections.emptyList());
+ }
+
+ @Override
+ public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
+ IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
+ return emptyUnaryRequirements();
+ }
+
+ @Override
+ public Pair<IConnectorDescriptor, IHyracksJobBuilder.TargetConstraint> createConnectorDescriptor(
+ IConnectorDescriptorRegistry spec, ILogicalOperator op, IOperatorSchema opSchema, JobGenContext context)
+ throws AlgebricksException {
+ Triple<int[], int[], IBinaryComparatorFactory[]> pIntervalColumns =
+ createIntervalColumnsAndComparators(op, opSchema, context);
+ ITupleMultiPartitionComputerFactory tpcf =
+ new FieldRangeIntersectPartitionComputerFactory(pIntervalColumns.first, pIntervalColumns.second,
+ pIntervalColumns.third, new StaticRangeMapSupplier(rangeMap), op.getSourceLocation());
+ IConnectorDescriptor conn = new MToNPartialBroadcastConnectorDescriptor(spec, tpcf);
+ return new Pair<>(conn, null);
+ }
+
+ private Triple<int[], int[], IBinaryComparatorFactory[]> createIntervalColumnsAndComparators(ILogicalOperator op,
+ IOperatorSchema opSchema, JobGenContext context) throws AlgebricksException {
+ int n = intervalFields.size();
+ int[] startFields = new int[n];
+ int[] endFields = new int[n];
+ IBinaryComparatorFactory[] comps = new IBinaryComparatorFactory[n];
+ IVariableTypeEnvironment env = context.getTypeEnvironment(op);
+ int i = 0;
+ for (IntervalColumn ic : intervalFields) {
+ LogicalVariable startVar = ic.getStartColumn();
+ startFields[i] = opSchema.findVariable(startVar);
+ Object startVarType = env.getVarType(startVar);
+ LogicalVariable endEvar = ic.getEndColumn();
+ endFields[i] = opSchema.findVariable(endEvar);
+ Object endVarType = env.getVarType(endEvar);
+ if (!Objects.equals(startVarType, endVarType)) {
+ throw new IllegalStateException();
+ }
+ IBinaryComparatorFactoryProvider bcfp = context.getBinaryComparatorFactoryProvider();
+ comps[i] =
+ bcfp.getBinaryComparatorFactory(startVarType, ic.getOrder() == OrderOperator.IOrder.OrderKind.ASC);
+ i++;
+ }
+ return new Triple<>(startFields, endFields, comps);
+ }
+
+ @Override
+ public String toString() {
+ return getOperatorTag().toString() + " " + intervalFields + (rangeMap != null ? " RANGE_MAP:" + rangeMap : "");
+ }
+}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionExchangePOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionExchangePOperator.java
index fe96d4f..9c80f4c 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionExchangePOperator.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionExchangePOperator.java
@@ -19,7 +19,7 @@
package org.apache.hyracks.algebricks.core.algebra.operators.physical;
import java.util.ArrayList;
-import java.util.LinkedList;
+import java.util.Collections;
import java.util.List;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -27,12 +27,8 @@
import org.apache.hyracks.algebricks.core.algebra.base.IHyracksJobBuilder.TargetConstraint;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
import org.apache.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
-import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder.OrderKind;
-import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
import org.apache.hyracks.algebricks.core.algebra.properties.INodeDomain;
import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
@@ -41,42 +37,23 @@
import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
import org.apache.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
-import org.apache.hyracks.algebricks.data.IBinaryComparatorFactoryProvider;
import org.apache.hyracks.api.dataflow.IConnectorDescriptor;
import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
import org.apache.hyracks.api.job.IConnectorDescriptorRegistry;
-import org.apache.hyracks.dataflow.common.data.partition.range.DynamicRangeMapSupplier;
import org.apache.hyracks.dataflow.common.data.partition.range.FieldRangePartitionComputerFactory;
import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
-import org.apache.hyracks.dataflow.common.data.partition.range.RangeMapSupplier;
-import org.apache.hyracks.dataflow.common.data.partition.range.StaticRangeMapSupplier;
import org.apache.hyracks.dataflow.std.connectors.MToNPartitioningConnectorDescriptor;
-public class RangePartitionExchangePOperator extends AbstractExchangePOperator {
+public final class RangePartitionExchangePOperator extends AbstractRangeExchangePOperator {
- private List<OrderColumn> partitioningFields;
- private INodeDomain domain;
- private RangeMap rangeMap;
- private final boolean rangeMapIsComputedAtRunTime;
- private final String rangeMapKeyInContext;
-
- private RangePartitionExchangePOperator(List<OrderColumn> partitioningFields, INodeDomain domain, RangeMap rangeMap,
- boolean rangeMapIsComputedAtRunTime, String rangeMapKeyInContext) {
- this.partitioningFields = partitioningFields;
- this.domain = domain;
- this.rangeMap = rangeMap;
- this.rangeMapIsComputedAtRunTime = rangeMapIsComputedAtRunTime;
- this.rangeMapKeyInContext = rangeMapKeyInContext;
- }
-
- public RangePartitionExchangePOperator(List<OrderColumn> partitioningFields, String rangeMapKeyInContext,
- INodeDomain domain) {
- this(partitioningFields, domain, null, true, rangeMapKeyInContext);
+ public RangePartitionExchangePOperator(List<OrderColumn> partitioningFields, INodeDomain domain,
+ String rangeMapKeyInContext) {
+ super(partitioningFields, domain, rangeMapKeyInContext);
}
public RangePartitionExchangePOperator(List<OrderColumn> partitioningFields, INodeDomain domain,
RangeMap rangeMap) {
- this(partitioningFields, domain, rangeMap, false, "");
+ super(partitioningFields, domain, rangeMap);
}
@Override
@@ -84,18 +61,11 @@
return PhysicalOperatorTag.RANGE_PARTITION_EXCHANGE;
}
- public List<OrderColumn> getPartitioningFields() {
- return partitioningFields;
- }
-
- public INodeDomain getDomain() {
- return domain;
- }
-
@Override
public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) {
- IPartitioningProperty p = new OrderedPartitionedProperty(new ArrayList<>(partitioningFields), domain, rangeMap);
- this.deliveredProperties = new StructuralPropertiesVector(p, new LinkedList<ILocalStructuralProperty>());
+ IPartitioningProperty pp =
+ new OrderedPartitionedProperty(new ArrayList<>(partitioningFields), domain, rangeMap);
+ this.deliveredProperties = new StructuralPropertiesVector(pp, Collections.emptyList());
}
@Override
@@ -107,30 +77,10 @@
@Override
public Pair<IConnectorDescriptor, TargetConstraint> createConnectorDescriptor(IConnectorDescriptorRegistry spec,
ILogicalOperator op, IOperatorSchema opSchema, JobGenContext context) throws AlgebricksException {
- int n = partitioningFields.size();
- int[] sortFields = new int[n];
- IBinaryComparatorFactory[] comps = new IBinaryComparatorFactory[n];
- IVariableTypeEnvironment env = context.getTypeEnvironment(op);
- int i = 0;
- for (OrderColumn oc : partitioningFields) {
- LogicalVariable var = oc.getColumn();
- sortFields[i] = opSchema.findVariable(var);
- Object type = env.getVarType(var);
- IBinaryComparatorFactoryProvider bcfp = context.getBinaryComparatorFactoryProvider();
- comps[i] = bcfp.getBinaryComparatorFactory(type, oc.getOrder() == OrderKind.ASC);
- i++;
- }
- RangeMapSupplier rangeMapSupplier = rangeMapIsComputedAtRunTime
- ? new DynamicRangeMapSupplier(rangeMapKeyInContext) : new StaticRangeMapSupplier(rangeMap);
- FieldRangePartitionComputerFactory partitionerFactory =
- new FieldRangePartitionComputerFactory(sortFields, comps, rangeMapSupplier, op.getSourceLocation());
+ Pair<int[], IBinaryComparatorFactory[]> pOrderColumns = createOrderColumnsAndComparators(op, opSchema, context);
+ FieldRangePartitionComputerFactory partitionerFactory = new FieldRangePartitionComputerFactory(
+ pOrderColumns.first, pOrderColumns.second, crateRangeMapSupplier(), op.getSourceLocation());
IConnectorDescriptor conn = new MToNPartitioningConnectorDescriptor(spec, partitionerFactory);
return new Pair<>(conn, null);
}
-
- @Override
- public String toString() {
- return getOperatorTag().toString() + " " + partitioningFields
- + (rangeMap != null ? " RANGE_MAP:" + rangeMap : "");
- }
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionMergeExchangePOperator.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionMergeExchangePOperator.java
deleted file mode 100644
index ba4a6b7..0000000
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionMergeExchangePOperator.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * 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.hyracks.algebricks.core.algebra.operators.physical;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.common.utils.Pair;
-import org.apache.hyracks.algebricks.core.algebra.base.IHyracksJobBuilder.TargetConstraint;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import org.apache.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
-import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder.OrderKind;
-import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
-import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty.PropertyType;
-import org.apache.hyracks.algebricks.core.algebra.properties.INodeDomain;
-import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
-import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningRequirementsCoordinator;
-import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
-import org.apache.hyracks.algebricks.core.algebra.properties.LocalOrderProperty;
-import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
-import org.apache.hyracks.algebricks.core.algebra.properties.OrderedPartitionedProperty;
-import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
-import org.apache.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
-import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
-import org.apache.hyracks.algebricks.data.IBinaryComparatorFactoryProvider;
-import org.apache.hyracks.algebricks.data.INormalizedKeyComputerFactoryProvider;
-import org.apache.hyracks.api.dataflow.IConnectorDescriptor;
-import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputerFactory;
-import org.apache.hyracks.api.job.IConnectorDescriptorRegistry;
-import org.apache.hyracks.dataflow.common.data.partition.range.FieldRangePartitionComputerFactory;
-import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
-import org.apache.hyracks.dataflow.common.data.partition.range.StaticRangeMapSupplier;
-import org.apache.hyracks.dataflow.std.connectors.MToNPartitioningMergingConnectorDescriptor;
-
-public class RangePartitionMergeExchangePOperator extends AbstractExchangePOperator {
-
- private List<OrderColumn> partitioningFields;
- private INodeDomain domain;
- private RangeMap rangeMap;
-
- public RangePartitionMergeExchangePOperator(List<OrderColumn> partitioningFields, INodeDomain domain,
- RangeMap rangeMap) {
- this.partitioningFields = partitioningFields;
- this.domain = domain;
- this.rangeMap = rangeMap;
- }
-
- @Override
- public PhysicalOperatorTag getOperatorTag() {
- return PhysicalOperatorTag.RANGE_PARTITION_MERGE_EXCHANGE;
- }
-
- public List<OrderColumn> getPartitioningFields() {
- return partitioningFields;
- }
-
- public INodeDomain getDomain() {
- return domain;
- }
-
- @Override
- public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) {
- IPartitioningProperty p = new OrderedPartitionedProperty(partitioningFields, domain, rangeMap);
- AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue();
- List<ILocalStructuralProperty> op2Locals = op2.getDeliveredPhysicalProperties().getLocalProperties();
- List<ILocalStructuralProperty> locals = new ArrayList<ILocalStructuralProperty>();
- for (ILocalStructuralProperty prop : op2Locals) {
- if (prop.getPropertyType() == PropertyType.LOCAL_ORDER_PROPERTY) {
- locals.add(prop);
- } else {
- break;
- }
- }
-
- this.deliveredProperties = new StructuralPropertiesVector(p, locals);
- }
-
- @Override
- public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
- IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
- List<ILocalStructuralProperty> orderProps = new LinkedList<ILocalStructuralProperty>();
- List<OrderColumn> columns = new ArrayList<OrderColumn>();
- for (OrderColumn oc : partitioningFields) {
- LogicalVariable var = oc.getColumn();
- columns.add(new OrderColumn(var, oc.getOrder()));
- }
- orderProps.add(new LocalOrderProperty(columns));
- StructuralPropertiesVector[] r =
- new StructuralPropertiesVector[] { new StructuralPropertiesVector(null, orderProps) };
- return new PhysicalRequirements(r, IPartitioningRequirementsCoordinator.NO_COORDINATION);
- }
-
- @Override
- public Pair<IConnectorDescriptor, TargetConstraint> createConnectorDescriptor(IConnectorDescriptorRegistry spec,
- ILogicalOperator op, IOperatorSchema opSchema, JobGenContext context) throws AlgebricksException {
- int n = partitioningFields.size();
- int[] sortFields = new int[n];
- IBinaryComparatorFactory[] comps = new IBinaryComparatorFactory[n];
-
- INormalizedKeyComputerFactoryProvider nkcfProvider = context.getNormalizedKeyComputerFactoryProvider();
- INormalizedKeyComputerFactory nkcf = null;
-
- IVariableTypeEnvironment env = context.getTypeEnvironment(op);
- int i = 0;
- for (OrderColumn oc : partitioningFields) {
- LogicalVariable var = oc.getColumn();
- sortFields[i] = opSchema.findVariable(var);
- Object type = env.getVarType(var);
- OrderKind order = oc.getOrder();
- if (i == 0 && nkcfProvider != null && type != null) {
- nkcf = nkcfProvider.getNormalizedKeyComputerFactory(type, order == OrderKind.ASC);
- }
- IBinaryComparatorFactoryProvider bcfp = context.getBinaryComparatorFactoryProvider();
- comps[i] = bcfp.getBinaryComparatorFactory(type, oc.getOrder() == OrderKind.ASC);
- i++;
- }
- ITuplePartitionComputerFactory tpcf = new FieldRangePartitionComputerFactory(sortFields, comps,
- new StaticRangeMapSupplier(rangeMap), op.getSourceLocation());
- IConnectorDescriptor conn = new MToNPartitioningMergingConnectorDescriptor(spec, tpcf, sortFields, comps, nkcf);
- return new Pair<IConnectorDescriptor, TargetConstraint>(conn, null);
- }
-
- @Override
- public String toString() {
- return getOperatorTag().toString() + " " + partitioningFields
- + (rangeMap != null ? " RANGE_MAP:" + rangeMap : "");
- }
-
-}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanStabilityVerifier.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanStabilityVerifier.java
new file mode 100644
index 0000000..3f7a0c1
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanStabilityVerifier.java
@@ -0,0 +1,311 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.plan;
+
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Deque;
+import java.util.List;
+import java.util.function.BiFunction;
+import java.util.function.BiPredicate;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
+import org.apache.hyracks.algebricks.core.algebra.prettyprint.IPlanPrettyPrinter;
+import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
+
+/**
+ * Verifies whether there were any changes in the plan and fails if it finds:
+ * <ul>
+ * <li>new or deleted operator reference: {@code MutableObject<ILogicalOperator>}</li>
+ * <li>new or deleted operator instance: {@code ILogicalOperator}</li>
+ * <li>new or deleted expression reference: {@code MutableObject<ILogicalExpression>}</li>
+ * <li>new or deleted expression instance {@code ILogicalExpression}</li>
+ * </ul>
+ *
+ * Usage:
+ * <ol>
+ * <li>Invoke {@link #recordPlanSignature(Mutable)} to save the plan signature</li>
+ * <li>Run an optimization rule on this plan
+ * <li>If the rule said that it didn't make any changes then
+ * invoke {@link #comparePlanSignature(Mutable)} to verify that</li>
+ * <li>(optionally) Invoke {@link #discardPlanSignature()} to discard the recorded state</li>
+ * </ol>
+ */
+public final class PlanStabilityVerifier {
+
+ static final String MSG_CREATED = "created";
+
+ static final String MSG_DELETED = "deleted";
+
+ static final String MSG_OPERATOR_REFERENCE = "operator reference (Mutable) to";
+
+ static final String MSG_OPERATOR_INSTANCE = "operator instance";
+
+ static final String MSG_EXPRESSION_REFERENCE = "expression reference (Mutable) to";
+
+ static final String MSG_EXPRESSION_INSTANCE = "expression instance";
+
+ private static final String ERROR_MESSAGE_TEMPLATE = "%s %s (%s)";
+
+ private static final int COLL_INIT_CAPACITY = 256;
+
+ private final PlanSignatureRecorderVisitor recorderVisitor = new PlanSignatureRecorderVisitor();
+
+ private final PlanStabilityVerifierVisitor verifierVisitor = new PlanStabilityVerifierVisitor();
+
+ private final List<Mutable<ILogicalOperator>> opRefColl = new ArrayList<>(COLL_INIT_CAPACITY);
+
+ private final List<ILogicalOperator> opColl = new ArrayList<>(COLL_INIT_CAPACITY);
+
+ private final List<Mutable<ILogicalExpression>> exprRefColl = new ArrayList<>(COLL_INIT_CAPACITY);
+
+ private final List<ILogicalExpression> exprColl = new ArrayList<>(COLL_INIT_CAPACITY);
+
+ private final Deque<Mutable<ILogicalOperator>> workQueue = new ArrayDeque<>(COLL_INIT_CAPACITY);
+
+ private final IPlanPrettyPrinter prettyPrinter;
+
+ public PlanStabilityVerifier(IPlanPrettyPrinter prettyPrinter) {
+ this.prettyPrinter = prettyPrinter;
+ }
+
+ public void recordPlanSignature(Mutable<ILogicalOperator> opRef) throws AlgebricksException {
+ reset();
+ walk(opRef, recorderVisitor);
+ }
+
+ public void comparePlanSignature(Mutable<ILogicalOperator> opRef) throws AlgebricksException {
+ if (opRefColl.isEmpty()) {
+ throw new IllegalStateException();
+ }
+ try {
+ walk(opRef, verifierVisitor);
+ ensureEmpty(opRefColl, MSG_DELETED, MSG_OPERATOR_REFERENCE, PlanStabilityVerifier::printOperator);
+ ensureEmpty(opColl, MSG_DELETED, MSG_OPERATOR_INSTANCE, PlanStabilityVerifier::printOperator);
+ ensureEmpty(exprRefColl, MSG_DELETED, MSG_EXPRESSION_REFERENCE, PlanStabilityVerifier::printExpression);
+ ensureEmpty(exprColl, MSG_DELETED, MSG_EXPRESSION_INSTANCE, PlanStabilityVerifier::printExpression);
+ } finally {
+ reset();
+ }
+ }
+
+ public void discardPlanSignature() {
+ reset();
+ }
+
+ private void reset() {
+ opRefColl.clear();
+ opColl.clear();
+ exprRefColl.clear();
+ exprColl.clear();
+ }
+
+ private final class PlanSignatureRecorderVisitor extends AbstractStabilityCheckingVisitor {
+ @Override
+ public void visit(Mutable<ILogicalOperator> opRef) throws AlgebricksException {
+ ILogicalOperator op = opRef.getValue();
+ // visit input ops of a multi-output op only if it's the first time we see this operator
+ boolean skipInputs = OperatorPropertiesUtil.isMultiOutputOperator(op) && findItem(opColl, op) >= 0;
+
+ opRefColl.add(opRef);
+ opColl.add(op);
+
+ if (!skipInputs) {
+ super.visit(opRef);
+ }
+ }
+
+ @Override
+ protected void addChildToWorkQueue(Mutable<ILogicalOperator> childOpRef, boolean addFirst)
+ throws AlgebricksException {
+ ILogicalOperator childOp = childOpRef.getValue();
+ if (!OperatorPropertiesUtil.isMultiOutputOperator(childOp) && opColl.contains(childOp)) {
+ throw new AlgebricksException("cycle: " + printOperator(childOp, prettyPrinter));
+ }
+ super.addChildToWorkQueue(childOpRef, addFirst);
+ }
+
+ @Override
+ protected void visitExpression(Mutable<ILogicalExpression> exprRef) {
+ exprRefColl.add(exprRef);
+ exprColl.add(exprRef.getValue());
+ }
+ }
+
+ private final class PlanStabilityVerifierVisitor extends AbstractStabilityCheckingVisitor {
+ @Override
+ public void visit(Mutable<ILogicalOperator> opRef) throws AlgebricksException {
+ int idx = findItem(opRefColl, opRef);
+ if (idx < 0) {
+ raiseException(MSG_CREATED, MSG_OPERATOR_REFERENCE, printOperator(opRef, prettyPrinter));
+ }
+ opRefColl.set(idx, null);
+
+ ILogicalOperator op = opRef.getValue();
+ idx = findItem(opColl, op);
+ if (idx < 0) {
+ raiseException(MSG_CREATED, MSG_OPERATOR_INSTANCE, printOperator(op, prettyPrinter));
+ }
+ opColl.set(idx, null);
+
+ // visit input ops of a multi-output op only if it's the last time we see this operator
+ boolean skipInputs = OperatorPropertiesUtil.isMultiOutputOperator(op) && findItem(opColl, op) >= 0;
+ if (!skipInputs) {
+ super.visit(opRef);
+ }
+ }
+
+ protected void visitExpression(Mutable<ILogicalExpression> exprRef) throws AlgebricksException {
+ int idx = findItem(exprRefColl, exprRef);
+ if (idx < 0) {
+ raiseException(MSG_CREATED, MSG_EXPRESSION_REFERENCE, printExpression(exprRef, prettyPrinter));
+ }
+ exprRefColl.set(idx, null);
+
+ ILogicalExpression expr = exprRef.getValue();
+ idx = findItem(exprColl, expr);
+ if (idx < 0) {
+ raiseException(MSG_CREATED, MSG_EXPRESSION_INSTANCE, printExpression(expr, prettyPrinter));
+ }
+ exprColl.set(idx, null);
+ }
+ }
+
+ private abstract class AbstractStabilityCheckingVisitor
+ implements IMutableReferenceVisitor<ILogicalOperator>, ILogicalExpressionReferenceTransform {
+
+ @Override
+ public void visit(Mutable<ILogicalOperator> opRef) throws AlgebricksException {
+ ILogicalOperator op = opRef.getValue();
+
+ op.acceptExpressionTransform(this);
+
+ for (Mutable<ILogicalOperator> inputOpRef : op.getInputs()) {
+ addChildToWorkQueue(inputOpRef, true);
+ }
+ if (op instanceof AbstractOperatorWithNestedPlans) {
+ for (ILogicalPlan nestedPlan : ((AbstractOperatorWithNestedPlans) op).getNestedPlans()) {
+ for (Mutable<ILogicalOperator> nestedPlanRoot : nestedPlan.getRoots()) {
+ addChildToWorkQueue(nestedPlanRoot, false);
+ }
+ }
+ }
+ }
+
+ protected abstract void visitExpression(Mutable<ILogicalExpression> exprRef) throws AlgebricksException;
+
+ @Override
+ public final boolean transform(Mutable<ILogicalExpression> exprRef) throws AlgebricksException {
+ visitExpression(exprRef);
+ return false;
+ }
+
+ protected void addChildToWorkQueue(Mutable<ILogicalOperator> childOpRef, boolean addFirst)
+ throws AlgebricksException {
+ if (addFirst) {
+ workQueue.addFirst(childOpRef);
+ } else {
+ workQueue.add(childOpRef);
+ }
+
+ }
+ }
+
+ private void raiseException(String operationKind, String referenceKind, String entity) throws AlgebricksException {
+ String errorMessage = String.format(ERROR_MESSAGE_TEMPLATE, operationKind, referenceKind, entity);
+ throw new AlgebricksException(errorMessage);
+ }
+
+ private <T> void ensureEmpty(List<T> list, String operationKind, String referenceKind,
+ BiFunction<T, IPlanPrettyPrinter, String> printFunction) throws AlgebricksException {
+ int idx = findNonNull(list);
+ if (idx >= 0) {
+ T listItem = list.get(idx);
+ raiseException(operationKind, referenceKind, printFunction.apply(listItem, prettyPrinter));
+ }
+ }
+
+ private static <T> int findItem(List<T> list, T item) {
+ return indexOf(list, (listItem, paramItem) -> listItem == paramItem, item);
+ }
+
+ private static <T> int findNonNull(List<T> list) {
+ return indexOf(list, (listItem, none) -> listItem != null, null);
+ }
+
+ private static <T, U> int indexOf(List<T> list, BiPredicate<T, U> predicate, U predicateParam) {
+ for (int i = 0, n = list.size(); i < n; i++) {
+ T listItem = list.get(i);
+ if (predicate.test(listItem, predicateParam)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ static String printOperator(Mutable<ILogicalOperator> opRef, IPlanPrettyPrinter printer) {
+ return printOperator(opRef.getValue(), printer);
+ }
+
+ static String printOperator(ILogicalOperator op, IPlanPrettyPrinter printer) {
+ try {
+ return printer.reset().printOperator((AbstractLogicalOperator) op, false).toString();
+ } catch (AlgebricksException e) {
+ // shouldn't happen
+ return op.toString();
+ }
+ }
+
+ static String printExpression(Mutable<ILogicalExpression> exprRef, IPlanPrettyPrinter printer) {
+ return printExpression(exprRef.getValue(), printer);
+ }
+
+ static String printExpression(ILogicalExpression expr, IPlanPrettyPrinter printer) {
+ try {
+ return printer.reset().printExpression(expr).toString();
+ } catch (AlgebricksException e) {
+ // shouldn't happen
+ return expr.toString();
+ }
+ }
+
+ private void walk(Mutable<ILogicalOperator> opRef, IMutableReferenceVisitor<ILogicalOperator> visitor)
+ throws AlgebricksException {
+ if (!workQueue.isEmpty()) {
+ throw new IllegalStateException();
+ }
+ Mutable<ILogicalOperator> currentOpRef = opRef;
+ do {
+ visitor.visit(currentOpRef);
+ currentOpRef = workQueue.pollFirst();
+ } while (currentOpRef != null);
+ }
+
+ private interface IMutableReferenceVisitor<T> {
+ void visit(Mutable<T> ref) throws AlgebricksException;
+ }
+}
\ No newline at end of file
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanStructureVerifier.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanStructureVerifier.java
new file mode 100644
index 0000000..8495099
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanStructureVerifier.java
@@ -0,0 +1,218 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.plan;
+
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Deque;
+import java.util.IdentityHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
+import org.apache.hyracks.algebricks.core.algebra.prettyprint.IPlanPrettyPrinter;
+import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
+import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
+
+/**
+ * Verifies plan structure and fails if it finds
+ * <ul>
+ * <li>a shared operator reference: {@code MutableObject<ILogicalOperator>}</li>
+ * <li>a shared operator instance: {@code ILogicalOperator} (except if it's a multi-output operator)</li>
+ * <li>a shared expression reference: {@code MutableObject<ILogicalExpression>}</li>
+ * <li>a shared expression instance {@code ILogicalExpression} (except if it's a {@code ConstantExpression})</li>
+ * </ul>
+ */
+public final class PlanStructureVerifier {
+
+ private static final String ERROR_MESSAGE_TEMPLATE_1 = "shared %s (%s) in %s";
+
+ private static final String ERROR_MESSAGE_TEMPLATE_2 = "shared %s (%s) between %s and %s";
+
+ private static final String ERROR_MESSAGE_TEMPLATE_3 = "missing output type environment in %s";
+
+ private static final String ERROR_MESSAGE_TEMPLATE_4 = "missing schema in %s";
+
+ private final ExpressionReferenceVerifierVisitor exprVisitor = new ExpressionReferenceVerifierVisitor();
+
+ private final Map<Mutable<ILogicalOperator>, ILogicalOperator> opRefMap = new IdentityHashMap<>();
+
+ private final Map<ILogicalOperator, ILogicalOperator> opMap = new IdentityHashMap<>();
+
+ private final Map<Mutable<ILogicalExpression>, ILogicalOperator> exprRefMap = new IdentityHashMap<>();
+
+ private final Map<ILogicalExpression, ILogicalOperator> exprMap = new IdentityHashMap<>();
+
+ private final Deque<Pair<Mutable<ILogicalOperator>, ILogicalOperator>> workQueue = new ArrayDeque<>();
+
+ private final IPlanPrettyPrinter prettyPrinter;
+
+ private final ITypingContext typeEnvProvider;
+
+ private boolean ensureTypeEnv;
+
+ private boolean ensureSchema;
+
+ public PlanStructureVerifier(IPlanPrettyPrinter prettyPrinter, ITypingContext typeEnvProvider) {
+ this.prettyPrinter = prettyPrinter;
+ this.typeEnvProvider = typeEnvProvider;
+ }
+
+ public void verifyPlanStructure(Mutable<ILogicalOperator> opRef) throws AlgebricksException {
+ reset();
+ ILogicalOperator op = opRef.getValue();
+ // if root has type-env/schema then ensure that all children have them too
+ ensureTypeEnv = typeEnvProvider.getOutputTypeEnvironment(op) != null;
+ ensureSchema = op.getSchema() != null;
+ walk(opRef);
+ reset();
+ }
+
+ private void reset() {
+ opRefMap.clear();
+ opMap.clear();
+ exprRefMap.clear();
+ exprMap.clear();
+ ensureTypeEnv = false;
+ ensureSchema = false;
+ }
+
+ private void walk(Mutable<ILogicalOperator> opRef) throws AlgebricksException {
+ if (!workQueue.isEmpty()) {
+ throw new IllegalStateException();
+ }
+ workQueue.add(new Pair<>(opRef, null));
+ for (;;) {
+ Pair<Mutable<ILogicalOperator>, ILogicalOperator> p = workQueue.pollFirst();
+ if (p == null) {
+ break;
+ }
+ Mutable<ILogicalOperator> currentOpRef = p.first;
+ ILogicalOperator currentOp = currentOpRef.getValue();
+ ILogicalOperator parentOp = p.second;
+
+ List<Mutable<ILogicalOperator>> childOps = visitOp(currentOpRef, parentOp);
+
+ for (Mutable<ILogicalOperator> childOpRef : childOps) {
+ ILogicalOperator childOp = childOpRef.getValue();
+ if (!OperatorPropertiesUtil.isMultiOutputOperator(childOp) && opMap.containsKey(childOp)) {
+ throw new AlgebricksException(
+ "cycle: " + PlanStabilityVerifier.printOperator(childOp, prettyPrinter));
+ }
+ workQueue.add(new Pair<>(childOpRef, currentOp));
+ }
+ }
+ }
+
+ private List<Mutable<ILogicalOperator>> visitOp(Mutable<ILogicalOperator> opRef, ILogicalOperator parentOp)
+ throws AlgebricksException {
+ ILogicalOperator op = opRef.getValue();
+ ILogicalOperator firstParentOp;
+ firstParentOp = opRefMap.put(opRef, parentOp);
+ if (firstParentOp != null) {
+ raiseException(PlanStabilityVerifier.MSG_OPERATOR_REFERENCE,
+ PlanStabilityVerifier.printOperator(op, prettyPrinter), firstParentOp, parentOp);
+ }
+
+ if (OperatorPropertiesUtil.isMultiOutputOperator(op) && opMap.containsKey(op)) {
+ // don't visit input ops because we've already looked at them
+ return Collections.emptyList();
+ }
+
+ firstParentOp = opMap.put(op, parentOp);
+ if (firstParentOp != null) {
+ raiseException(PlanStabilityVerifier.MSG_OPERATOR_INSTANCE,
+ PlanStabilityVerifier.printOperator(op, prettyPrinter), firstParentOp, parentOp);
+ }
+
+ exprVisitor.setOperator(op);
+ op.acceptExpressionTransform(exprVisitor);
+
+ if (ensureTypeEnv && typeEnvProvider.getOutputTypeEnvironment(op) == null) {
+ throw new AlgebricksException(
+ String.format(ERROR_MESSAGE_TEMPLATE_3, PlanStabilityVerifier.printOperator(op, prettyPrinter)));
+ }
+ if (ensureSchema && op.getSchema() == null) {
+ throw new AlgebricksException(
+ String.format(ERROR_MESSAGE_TEMPLATE_4, PlanStabilityVerifier.printOperator(op, prettyPrinter)));
+ }
+
+ List<Mutable<ILogicalOperator>> children = op.getInputs();
+ if (op instanceof AbstractOperatorWithNestedPlans) {
+ children = new ArrayList<>(children);
+ for (ILogicalPlan nestedPlan : ((AbstractOperatorWithNestedPlans) op).getNestedPlans()) {
+ children.addAll(nestedPlan.getRoots());
+ }
+ }
+ return children;
+ }
+
+ private void raiseException(String sharedReferenceKind, String sharedEntity, ILogicalOperator firstOp,
+ ILogicalOperator secondOp) throws AlgebricksException {
+ String errorMessage;
+ if (firstOp == secondOp) {
+ errorMessage = String.format(ERROR_MESSAGE_TEMPLATE_1, sharedReferenceKind, sharedEntity,
+ PlanStabilityVerifier.printOperator(firstOp, prettyPrinter));
+ } else {
+ errorMessage = String.format(ERROR_MESSAGE_TEMPLATE_2, sharedReferenceKind, sharedEntity,
+ PlanStabilityVerifier.printOperator(firstOp, prettyPrinter),
+ PlanStabilityVerifier.printOperator(secondOp, prettyPrinter));
+ }
+ throw new AlgebricksException(errorMessage);
+ }
+
+ private final class ExpressionReferenceVerifierVisitor implements ILogicalExpressionReferenceTransform {
+
+ private ILogicalOperator currentOp;
+
+ void setOperator(ILogicalOperator currentOp) {
+ this.currentOp = Objects.requireNonNull(currentOp);
+ }
+
+ @Override
+ public boolean transform(Mutable<ILogicalExpression> exprRef) throws AlgebricksException {
+ ILogicalExpression expr = exprRef.getValue();
+ ILogicalOperator firstOp;
+ firstOp = exprRefMap.put(exprRef, currentOp);
+ if (firstOp != null) {
+ raiseException(PlanStabilityVerifier.MSG_EXPRESSION_REFERENCE,
+ PlanStabilityVerifier.printExpression(expr, prettyPrinter), firstOp, currentOp);
+ }
+ if (expr.getExpressionTag() != LogicalExpressionTag.CONSTANT) {
+ firstOp = exprMap.put(expr, currentOp);
+ if (firstOp != null) {
+ raiseException(PlanStabilityVerifier.MSG_EXPRESSION_INSTANCE,
+ PlanStabilityVerifier.printExpression(expr, prettyPrinter), firstOp, currentOp);
+ }
+ }
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/IPlanPrettyPrinter.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/IPlanPrettyPrinter.java
index 922e0ee..faf4976 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/IPlanPrettyPrinter.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/IPlanPrettyPrinter.java
@@ -19,6 +19,7 @@
package org.apache.hyracks.algebricks.core.algebra.prettyprint;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
@@ -28,7 +29,15 @@
public interface IPlanPrettyPrinter {
/** Prints the plan rooted at the operator argument. */
- IPlanPrettyPrinter printOperator(AbstractLogicalOperator operator) throws AlgebricksException;
+ default IPlanPrettyPrinter printOperator(AbstractLogicalOperator operator) throws AlgebricksException {
+ return printOperator(operator, true);
+ }
+
+ /** Prints given operator and optionally it's inputs */
+ IPlanPrettyPrinter printOperator(AbstractLogicalOperator operator, boolean printInputs) throws AlgebricksException;
+
+ /** Prints given expression */
+ IPlanPrettyPrinter printExpression(ILogicalExpression expression) throws AlgebricksException;
/** Prints the whole logical plan. */
IPlanPrettyPrinter printPlan(ILogicalPlan plan) throws AlgebricksException;
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
index 52c7e2a..1d560ce 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
@@ -94,18 +94,20 @@
}
@Override
- public final IPlanPrettyPrinter printOperator(AbstractLogicalOperator op) throws AlgebricksException {
- printOperatorImpl(op, 0);
+ public final IPlanPrettyPrinter printOperator(AbstractLogicalOperator op, boolean printInputs)
+ throws AlgebricksException {
+ printOperatorImpl(op, 0, printInputs);
return this;
}
private void printPlanImpl(ILogicalPlan plan, int indent) throws AlgebricksException {
for (Mutable<ILogicalOperator> root : plan.getRoots()) {
- printOperatorImpl((AbstractLogicalOperator) root.getValue(), indent);
+ printOperatorImpl((AbstractLogicalOperator) root.getValue(), indent, true);
}
}
- private void printOperatorImpl(AbstractLogicalOperator op, int indent) throws AlgebricksException {
+ private void printOperatorImpl(AbstractLogicalOperator op, int indent, boolean printInputs)
+ throws AlgebricksException {
op.accept(this, indent);
IPhysicalOperator pOp = op.getPhysicalOperator();
@@ -117,12 +119,20 @@
appendln(buffer, " -- |" + op.getExecutionMode() + "|");
}
- for (Mutable<ILogicalOperator> i : op.getInputs()) {
- printOperatorImpl((AbstractLogicalOperator) i.getValue(), indent + INIT_INDENT);
+ if (printInputs) {
+ for (Mutable<ILogicalOperator> i : op.getInputs()) {
+ printOperatorImpl((AbstractLogicalOperator) i.getValue(), indent + INIT_INDENT, printInputs);
+ }
}
}
@Override
+ public IPlanPrettyPrinter printExpression(ILogicalExpression expression) throws AlgebricksException {
+ buffer.append(expression.accept(exprVisitor, 0));
+ return this;
+ }
+
+ @Override
public Void visitAggregateOperator(AggregateOperator op, Integer indent) throws AlgebricksException {
addIndent(indent).append("aggregate ").append(str(op.getVariables())).append(" <- ");
pprintExprList(op.getExpressions(), indent);
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
index 21ea331..999a818 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
@@ -159,8 +159,9 @@
}
@Override
- public final IPlanPrettyPrinter printOperator(AbstractLogicalOperator op) throws AlgebricksException {
- printOperatorImpl(op);
+ public final IPlanPrettyPrinter printOperator(AbstractLogicalOperator op, boolean printInputs)
+ throws AlgebricksException {
+ printOperatorImpl(op, printInputs);
flushContentToWriter();
return this;
}
@@ -172,7 +173,7 @@
jsonGenerator.writeStartArray();
}
for (Mutable<ILogicalOperator> root : plan.getRoots()) {
- printOperatorImpl((AbstractLogicalOperator) root.getValue());
+ printOperatorImpl((AbstractLogicalOperator) root.getValue(), true);
}
if (writeArrayOfRoots) {
jsonGenerator.writeEndArray();
@@ -182,7 +183,7 @@
}
}
- private void printOperatorImpl(AbstractLogicalOperator op) throws AlgebricksException {
+ private void printOperatorImpl(AbstractLogicalOperator op, boolean printInputs) throws AlgebricksException {
try {
jsonGenerator.writeStartObject();
op.accept(this, null);
@@ -192,10 +193,10 @@
jsonGenerator.writeStringField("physical-operator", pOp.toString());
}
jsonGenerator.writeStringField("execution-mode", op.getExecutionMode().toString());
- if (!op.getInputs().isEmpty()) {
+ if (printInputs && !op.getInputs().isEmpty()) {
jsonGenerator.writeArrayFieldStart("inputs");
for (Mutable<ILogicalOperator> k : op.getInputs()) {
- printOperatorImpl((AbstractLogicalOperator) k.getValue());
+ printOperatorImpl((AbstractLogicalOperator) k.getValue(), printInputs);
}
jsonGenerator.writeEndArray();
}
@@ -206,6 +207,16 @@
}
@Override
+ public IPlanPrettyPrinter printExpression(ILogicalExpression expression) throws AlgebricksException {
+ try {
+ jsonGenerator.writeString(expression.accept(exprVisitor, null));
+ return this;
+ } catch (IOException e) {
+ throw new AlgebricksException(e, ErrorCode.ERROR_PRINTING_PLAN);
+ }
+ }
+
+ @Override
public Void visitAggregateOperator(AggregateOperator op, Void indent) throws AlgebricksException {
try {
jsonGenerator.writeStringField(OPERATOR_FIELD, "aggregate");
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/AbstractOrderedPartitionedProperty.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/AbstractOrderedPartitionedProperty.java
new file mode 100644
index 0000000..7c280f4
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/AbstractOrderedPartitionedProperty.java
@@ -0,0 +1,111 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.properties;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+abstract class AbstractOrderedPartitionedProperty implements IPartitioningProperty {
+
+ protected final List<OrderColumn> orderColumns;
+
+ protected final RangeMap rangeMap;
+
+ protected INodeDomain domain;
+
+ AbstractOrderedPartitionedProperty(List<OrderColumn> orderColumns, INodeDomain domain) {
+ this(orderColumns, domain, null);
+ }
+
+ AbstractOrderedPartitionedProperty(List<OrderColumn> orderColumns, INodeDomain domain, RangeMap rangeMap) {
+ this.orderColumns = orderColumns;
+ this.domain = domain;
+ this.rangeMap = rangeMap;
+ }
+
+ public List<OrderColumn> getOrderColumns() {
+ return orderColumns;
+ }
+
+ public List<LogicalVariable> getColumns() {
+ ArrayList<LogicalVariable> cols = new ArrayList<>(orderColumns.size());
+ for (OrderColumn oc : orderColumns) {
+ cols.add(oc.getColumn());
+ }
+ return cols;
+ }
+
+ @Override
+ public String toString() {
+ return getPartitioningType().toString() + orderColumns + " domain:" + domain
+ + (rangeMap != null ? " range-map:" + rangeMap : "");
+ }
+
+ @Override
+ public void getColumns(Collection<LogicalVariable> columns) {
+ for (OrderColumn oc : orderColumns) {
+ columns.add(oc.getColumn());
+ }
+ }
+
+ public RangeMap getRangeMap() {
+ return rangeMap;
+ }
+
+ @Override
+ public INodeDomain getNodeDomain() {
+ return domain;
+ }
+
+ @Override
+ public void setNodeDomain(INodeDomain domain) {
+ this.domain = domain;
+ }
+
+ @Override
+ public IPartitioningProperty substituteColumnVars(Map<LogicalVariable, LogicalVariable> varMap) {
+ boolean applied = false;
+ List<OrderColumn> newOrderColumns = new ArrayList<>(orderColumns.size());
+ for (OrderColumn orderColumn : orderColumns) {
+ LogicalVariable columnVar = orderColumn.getColumn();
+ LogicalVariable newColumnVar = varMap.get(columnVar);
+ if (newColumnVar != null) {
+ applied = true;
+ } else {
+ newColumnVar = columnVar;
+ }
+ newOrderColumns.add(new OrderColumn(newColumnVar, orderColumn.getOrder()));
+ }
+ return applied ? newInstance(newOrderColumns, domain, rangeMap) : this;
+ }
+
+ @Override
+ public IPartitioningProperty clonePartitioningProperty() {
+ return newInstance(new ArrayList<>(orderColumns), domain, rangeMap);
+ }
+
+ protected abstract AbstractOrderedPartitionedProperty newInstance(List<OrderColumn> columns, INodeDomain domain,
+ RangeMap rangeMap);
+}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningProperty.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningProperty.java
index f5eef1c..8e181c0 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningProperty.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningProperty.java
@@ -50,7 +50,27 @@
* Data is range partitioned (only used on data that has a total order).
* The partitions are order based on the data range.
*/
- ORDERED_PARTITIONED
+ ORDERED_PARTITIONED,
+ /**
+ * Data is partially replicated as follows:
+ * <ol>
+ * <li>partition the data according to the {@link #ORDERED_PARTITIONED} layout
+ * <li>then replicate each tuple in each partition to those partitions that correspond to higher ranges
+ * than the range of this tuple's original partition
+ * </ol>
+ */
+ PARTIAL_BROADCAST_ORDERED_FOLLOWING,
+ /**
+ * Data is partially replicated as follows:
+ * <ol>
+ * <li>assume there are two columns "start" and "end"
+ * <li>partition the data according to the {@link #ORDERED_PARTITIONED} layout on the "start" column
+ * <li>then replicate each tuple in each partition to those partitions that correspond to higher ranges
+ * than the range of this tuple's original partition, excluding those partitions that start at a range
+ * higher than the "end" column
+ * </ol>
+ */
+ PARTIAL_BROADCAST_ORDERED_INTERSECT
}
INodeDomain DOMAIN_FOR_UNPARTITIONED_DATA = new INodeDomain() {
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IntervalColumn.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IntervalColumn.java
new file mode 100644
index 0000000..484561c
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IntervalColumn.java
@@ -0,0 +1,78 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.properties;
+
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder.OrderKind;
+
+public final class IntervalColumn {
+
+ private LogicalVariable startColumn;
+
+ private LogicalVariable endColumn;
+
+ private OrderKind order;
+
+ public IntervalColumn(LogicalVariable startColumn, LogicalVariable endColumn, OrderKind order) {
+ this.startColumn = startColumn;
+ this.endColumn = endColumn;
+ this.order = order;
+ }
+
+ public LogicalVariable getStartColumn() {
+ return startColumn;
+ }
+
+ public LogicalVariable getEndColumn() {
+ return endColumn;
+ }
+
+ public OrderKind getOrder() {
+ return order;
+ }
+
+ public void setStartColumn(LogicalVariable column) {
+ this.startColumn = column;
+ }
+
+ public void setEndColumn(LogicalVariable column) {
+ this.endColumn = column;
+ }
+
+ public void setOrder(OrderKind order) {
+ this.order = order;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof IntervalColumn)) {
+ return false;
+ } else {
+ IntervalColumn ic = (IntervalColumn) obj;
+ return startColumn.equals(ic.getStartColumn()) && endColumn.equals(ic.getEndColumn())
+ && order == ic.getOrder();
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "{" + startColumn + "," + endColumn + "," + order + "}";
+ }
+}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/OrderedPartitionedProperty.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/OrderedPartitionedProperty.java
index 0136996..d4fcd36 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/OrderedPartitionedProperty.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/OrderedPartitionedProperty.java
@@ -18,8 +18,6 @@
*/
package org.apache.hyracks.algebricks.core.algebra.properties;
-import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -27,32 +25,14 @@
import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
-public class OrderedPartitionedProperty implements IPartitioningProperty {
-
- private final List<OrderColumn> orderColumns;
- private final RangeMap rangeMap;
- private INodeDomain domain;
+public class OrderedPartitionedProperty extends AbstractOrderedPartitionedProperty {
public OrderedPartitionedProperty(List<OrderColumn> orderColumns, INodeDomain domain) {
- this(orderColumns, domain, null);
+ super(orderColumns, domain);
}
public OrderedPartitionedProperty(List<OrderColumn> orderColumns, INodeDomain domain, RangeMap rangeMap) {
- this.domain = domain;
- this.orderColumns = orderColumns;
- this.rangeMap = rangeMap;
- }
-
- public List<OrderColumn> getOrderColumns() {
- return orderColumns;
- }
-
- public List<LogicalVariable> getColumns() {
- ArrayList<LogicalVariable> cols = new ArrayList<>(orderColumns.size());
- for (OrderColumn oc : orderColumns) {
- cols.add(oc.getColumn());
- }
- return cols;
+ super(orderColumns, domain, rangeMap);
}
@Override
@@ -61,59 +41,16 @@
}
@Override
- public String toString() {
- return getPartitioningType().toString() + orderColumns + " domain:" + domain
- + (rangeMap != null ? " range-map:" + rangeMap : "");
- }
-
- @Override
public IPartitioningProperty normalize(Map<LogicalVariable, EquivalenceClass> equivalenceClasses,
List<FunctionalDependency> fds) {
List<OrderColumn> columns = PropertiesUtil.replaceOrderColumnsByEqClasses(orderColumns, equivalenceClasses);
columns = PropertiesUtil.applyFDsToOrderColumns(columns, fds);
- return new OrderedPartitionedProperty(columns, domain, rangeMap);
+ return newInstance(columns, domain, rangeMap);
}
@Override
- public void getColumns(Collection<LogicalVariable> columns) {
- for (OrderColumn oc : orderColumns) {
- columns.add(oc.getColumn());
- }
- }
-
- public RangeMap getRangeMap() {
- return rangeMap;
- }
-
- @Override
- public INodeDomain getNodeDomain() {
- return domain;
- }
-
- @Override
- public void setNodeDomain(INodeDomain domain) {
- this.domain = domain;
- }
-
- @Override
- public IPartitioningProperty substituteColumnVars(Map<LogicalVariable, LogicalVariable> varMap) {
- boolean applied = false;
- List<OrderColumn> newOrderColumns = new ArrayList<>(orderColumns.size());
- for (OrderColumn orderColumn : orderColumns) {
- LogicalVariable columnVar = orderColumn.getColumn();
- LogicalVariable newColumnVar = varMap.get(columnVar);
- if (newColumnVar != null) {
- applied = true;
- } else {
- newColumnVar = columnVar;
- }
- newOrderColumns.add(new OrderColumn(newColumnVar, orderColumn.getOrder()));
- }
- return applied ? new OrderedPartitionedProperty(newOrderColumns, domain, rangeMap) : this;
- }
-
- @Override
- public IPartitioningProperty clonePartitioningProperty() {
- return new OrderedPartitionedProperty(new ArrayList<>(orderColumns), domain, rangeMap);
+ protected AbstractOrderedPartitionedProperty newInstance(List<OrderColumn> orderColumns, INodeDomain domain,
+ RangeMap rangeMap) {
+ return new OrderedPartitionedProperty(orderColumns, domain, rangeMap);
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PartialBroadcastOrderedFollowingProperty.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PartialBroadcastOrderedFollowingProperty.java
new file mode 100644
index 0000000..1845d1b
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PartialBroadcastOrderedFollowingProperty.java
@@ -0,0 +1,52 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.properties;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.hyracks.algebricks.core.algebra.base.EquivalenceClass;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public final class PartialBroadcastOrderedFollowingProperty extends AbstractOrderedPartitionedProperty {
+
+ public PartialBroadcastOrderedFollowingProperty(List<OrderColumn> orderColumns, INodeDomain domain,
+ RangeMap rangeMap) {
+ super(orderColumns, domain, rangeMap);
+ }
+
+ @Override
+ public PartitioningType getPartitioningType() {
+ return PartitioningType.PARTIAL_BROADCAST_ORDERED_FOLLOWING;
+ }
+
+ @Override
+ public IPartitioningProperty normalize(Map<LogicalVariable, EquivalenceClass> equivalenceClasses,
+ List<FunctionalDependency> fds) {
+ return this;
+ }
+
+ @Override
+ protected AbstractOrderedPartitionedProperty newInstance(List<OrderColumn> orderColumns, INodeDomain domain,
+ RangeMap rangeMap) {
+ return new PartialBroadcastOrderedFollowingProperty(orderColumns, domain, rangeMap);
+ }
+}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PartialBroadcastOrderedIntersectProperty.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PartialBroadcastOrderedIntersectProperty.java
new file mode 100644
index 0000000..cb5b645
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PartialBroadcastOrderedIntersectProperty.java
@@ -0,0 +1,119 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.properties;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.hyracks.algebricks.core.algebra.base.EquivalenceClass;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.dataflow.common.data.partition.range.RangeMap;
+
+public final class PartialBroadcastOrderedIntersectProperty implements IPartitioningProperty {
+
+ private final List<IntervalColumn> intervalColumns;
+
+ private final RangeMap rangeMap;
+
+ private INodeDomain domain;
+
+ public PartialBroadcastOrderedIntersectProperty(List<IntervalColumn> intervalColumns, INodeDomain domain,
+ RangeMap rangeMap) {
+ this.intervalColumns = intervalColumns;
+ this.domain = domain;
+ this.rangeMap = rangeMap;
+ }
+
+ @Override
+ public PartitioningType getPartitioningType() {
+ return PartitioningType.PARTIAL_BROADCAST_ORDERED_INTERSECT;
+ }
+
+ @Override
+ public String toString() {
+ return getPartitioningType().toString() + intervalColumns + " domain:" + domain
+ + (rangeMap != null ? " range-map:" + rangeMap : "");
+ }
+
+ public List<IntervalColumn> getIntervalColumns() {
+ return intervalColumns;
+ }
+
+ @Override
+ public void getColumns(Collection<LogicalVariable> columns) {
+ for (IntervalColumn ic : intervalColumns) {
+ columns.add(ic.getStartColumn());
+ columns.add(ic.getEndColumn());
+ }
+ }
+
+ public RangeMap getRangeMap() {
+ return rangeMap;
+ }
+
+ @Override
+ public INodeDomain getNodeDomain() {
+ return domain;
+ }
+
+ @Override
+ public void setNodeDomain(INodeDomain domain) {
+ this.domain = domain;
+ }
+
+ @Override
+ public IPartitioningProperty normalize(Map<LogicalVariable, EquivalenceClass> equivalenceClasses,
+ List<FunctionalDependency> fds) {
+ return this;
+ }
+
+ @Override
+ public IPartitioningProperty substituteColumnVars(Map<LogicalVariable, LogicalVariable> varMap) {
+ boolean applied = false;
+ List<IntervalColumn> newIntervalColumns = new ArrayList<>(intervalColumns.size());
+ for (IntervalColumn intervalColumn : intervalColumns) {
+ LogicalVariable startColumnVar = intervalColumn.getStartColumn();
+ LogicalVariable newStartColumnVar = varMap.get(startColumnVar);
+ if (newStartColumnVar != null) {
+ applied = true;
+ } else {
+ newStartColumnVar = startColumnVar;
+ }
+
+ LogicalVariable endColumnVar = intervalColumn.getEndColumn();
+ LogicalVariable newEndColumnVar = varMap.get(endColumnVar);
+ if (newEndColumnVar != null) {
+ applied = true;
+ } else {
+ newEndColumnVar = endColumnVar;
+ }
+
+ newIntervalColumns.add(new IntervalColumn(newStartColumnVar, newEndColumnVar, intervalColumn.getOrder()));
+ }
+ return applied ? new PartialBroadcastOrderedIntersectProperty(newIntervalColumns, domain, rangeMap) : this;
+ }
+
+ @Override
+ public IPartitioningProperty clonePartitioningProperty() {
+ return new PartialBroadcastOrderedIntersectProperty(new ArrayList<>(intervalColumns), domain, rangeMap);
+ }
+}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PropertiesUtil.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PropertiesUtil.java
index 1ebaeeb..1025e44 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PropertiesUtil.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PropertiesUtil.java
@@ -181,6 +181,32 @@
}
}
}
+ case PARTIAL_BROADCAST_ORDERED_FOLLOWING: {
+ switch (dlvd.getPartitioningType()) {
+ case PARTIAL_BROADCAST_ORDERED_FOLLOWING: {
+ PartialBroadcastOrderedFollowingProperty pr = (PartialBroadcastOrderedFollowingProperty) reqd;
+ PartialBroadcastOrderedFollowingProperty pd = (PartialBroadcastOrderedFollowingProperty) dlvd;
+ return pr.getOrderColumns().equals(pd.getOrderColumns())
+ && pr.getRangeMap().equals(pd.getRangeMap());
+ }
+ default: {
+ return false;
+ }
+ }
+ }
+ case PARTIAL_BROADCAST_ORDERED_INTERSECT: {
+ switch (dlvd.getPartitioningType()) {
+ case PARTIAL_BROADCAST_ORDERED_INTERSECT: {
+ PartialBroadcastOrderedIntersectProperty pr = (PartialBroadcastOrderedIntersectProperty) reqd;
+ PartialBroadcastOrderedIntersectProperty pd = (PartialBroadcastOrderedIntersectProperty) dlvd;
+ return pr.getIntervalColumns().equals(pd.getIntervalColumns())
+ && pr.getRangeMap().equals(pd.getRangeMap());
+ }
+ default: {
+ return false;
+ }
+ }
+ }
default: {
return (dlvd.getPartitioningType() == reqd.getPartitioningType());
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
index 3f5012a..9ca2f6e 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
@@ -21,6 +21,7 @@
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.BitSet;
+import java.util.Collection;
import java.util.Collections;
import java.util.Deque;
import java.util.List;
@@ -53,6 +54,7 @@
import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
import org.apache.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public class OperatorManipulationUtil {
@@ -461,4 +463,15 @@
}
return -1;
}
+
+ public static List<Mutable<ILogicalExpression>> createVariableReferences(Collection<LogicalVariable> varList,
+ SourceLocation sourceLoc) {
+ List<Mutable<ILogicalExpression>> varRefs = new ArrayList<>(varList.size());
+ for (LogicalVariable var : varList) {
+ VariableReferenceExpression varRef = new VariableReferenceExpression(var);
+ varRef.setSourceLocation(sourceLoc);
+ varRefs.add(new MutableObject<>(varRef));
+ }
+ return varRefs;
+ }
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorPropertiesUtil.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorPropertiesUtil.java
index 49d4748..c6589b0 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorPropertiesUtil.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorPropertiesUtil.java
@@ -352,4 +352,9 @@
&& rightChild.getExecutionMode().equals(AbstractLogicalOperator.ExecutionMode.UNPARTITIONED);
return unPartitioned ? StructuralPropertiesVector.EMPTY_PROPERTIES_VECTOR : partitionedPropertiesVector;
}
+
+ public static boolean isMultiOutputOperator(ILogicalOperator op) {
+ LogicalOperatorTag opTag = op.getOperatorTag();
+ return opTag == LogicalOperatorTag.REPLICATE || opTag == LogicalOperatorTag.SPLIT;
+ }
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
index 0ab21b4..33e27ac 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
@@ -28,4 +28,5 @@
public static final int SORT_SAMPLES = 100;
public static final boolean SORT_PARALLEL = true;
public static final boolean INDEX_ONLY_DEFAULT = true;
+ public static final boolean SANITYCHECK_DEFAULT = false;
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenContext.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenContext.java
index 4bc5689..41cde2e 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenContext.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenContext.java
@@ -43,6 +43,7 @@
import org.apache.hyracks.algebricks.data.IPrinterFactoryProvider;
import org.apache.hyracks.algebricks.data.ISerializerDeserializerProvider;
import org.apache.hyracks.algebricks.data.ITypeTraitProvider;
+import org.apache.hyracks.algebricks.data.IUnnestingPositionWriterFactory;
import org.apache.hyracks.api.dataflow.value.IMissingWriterFactory;
import org.apache.hyracks.api.dataflow.value.IPredicateEvaluatorFactoryProvider;
import org.apache.hyracks.api.exceptions.IWarningCollector;
@@ -57,7 +58,8 @@
private final IPrinterFactoryProvider printerFactoryProvider;
private final ITypeTraitProvider typeTraitProvider;
private final IMetadataProvider<?, ?> metadataProvider;
- private final IMissingWriterFactory nonMatchWriterFactory;
+ private final IMissingWriterFactory missingWriterFactory;
+ private final IUnnestingPositionWriterFactory unnestingPositionWriterFactory;
private final INormalizedKeyComputerFactoryProvider normalizedKeyComputerFactoryProvider;
private final Object appContext;
private final IBinaryBooleanInspectorFactory booleanInspectorFactory;
@@ -81,7 +83,7 @@
IBinaryComparatorFactoryProvider comparatorFactoryProvider, ITypeTraitProvider typeTraitProvider,
IBinaryBooleanInspectorFactory booleanInspectorFactory,
IBinaryIntegerInspectorFactory integerInspectorFactory, IPrinterFactoryProvider printerFactoryProvider,
- IMissingWriterFactory nullWriterFactory,
+ IMissingWriterFactory missingWriterFactory, IUnnestingPositionWriterFactory unnestingPositionWriterFactory,
INormalizedKeyComputerFactoryProvider normalizedKeyComputerFactoryProvider,
IExpressionRuntimeProvider expressionRuntimeProvider, IExpressionTypeComputer expressionTypeComputer,
ITypingContext typingContext, IExpressionEvalSizeComputer expressionEvalSizeComputer,
@@ -102,7 +104,8 @@
this.printerFactoryProvider = printerFactoryProvider;
this.clusterLocations = clusterLocations;
this.normalizedKeyComputerFactoryProvider = normalizedKeyComputerFactoryProvider;
- this.nonMatchWriterFactory = nullWriterFactory;
+ this.missingWriterFactory = missingWriterFactory;
+ this.unnestingPositionWriterFactory = unnestingPositionWriterFactory;
this.expressionRuntimeProvider = expressionRuntimeProvider;
this.expressionTypeComputer = expressionTypeComputer;
this.typingContext = typingContext;
@@ -190,7 +193,11 @@
}
public IMissingWriterFactory getMissingWriterFactory() {
- return nonMatchWriterFactory;
+ return missingWriterFactory;
+ }
+
+ public IUnnestingPositionWriterFactory getUnnestingPositionWriterFactory() {
+ return unnestingPositionWriterFactory;
}
public INormalizedKeyComputerFactoryProvider getNormalizedKeyComputerFactoryProvider() {
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/OperatorSchemaImpl.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/OperatorSchemaImpl.java
index 9bb620b..dc97f3b 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/OperatorSchemaImpl.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/OperatorSchemaImpl.java
@@ -19,38 +19,64 @@
package org.apache.hyracks.algebricks.core.jobgen.impl;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.BitSet;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
+import it.unimi.dsi.fastutil.objects.Object2IntMap;
+import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
+
public class OperatorSchemaImpl implements IOperatorSchema {
- private final Map<LogicalVariable, Integer> varMap;
+
+ private final Object2IntMap<LogicalVariable> varMap;
private final List<LogicalVariable> varList;
public OperatorSchemaImpl() {
- varMap = new HashMap<LogicalVariable, Integer>();
- varList = new ArrayList<LogicalVariable>();
+ varMap = new Object2IntOpenHashMap<>();
+ varList = new ArrayList<>();
}
@Override
public void addAllVariables(IOperatorSchema source) {
for (LogicalVariable v : source) {
- varMap.put(v, varList.size());
- varList.add(v);
+ addVariable(v);
}
}
@Override
public void addAllNewVariables(IOperatorSchema source) {
- for (LogicalVariable v : source) {
- if (varMap.get(v) == null) {
- varMap.put(v, varList.size());
- varList.add(v);
+ // source schema can contain the same variable more than once,
+ // we need to add it as many times if this variable is new.
+ int sourceLen = source.getSize();
+ BitSet newVarIdxs = null;
+ for (int i = 0; i < sourceLen; i++) {
+ LogicalVariable v = source.getVariable(i);
+ if (!varMap.containsKey(v)) {
+ addVariable(v);
+ if (newVarIdxs == null) {
+ newVarIdxs = new BitSet(sourceLen);
+ }
+ newVarIdxs.set(i);
+ } else {
+ // if varMap contains this variable then we need to differentiate between two cases:
+ // 1. the variable was present before this method was called, therefore it's not new
+ // 2. the variable was not present before this method was called, but was added earlier in this loop
+ // (i.e. it is a duplicate entry of the same variable in the source schema)
+ // in this case it is considered new and we need to add it to varMap
+ if (newVarIdxs != null) {
+ for (int j = newVarIdxs.nextSetBit(0); j >= 0; j = newVarIdxs.nextSetBit(j + 1)) {
+ if (v.equals(source.getVariable(j))) {
+ // this variable was previously added as 'new'
+ // we need to add a duplicate entry for this variable
+ addVariable(v);
+ break;
+ }
+ }
+ }
}
}
}
@@ -95,6 +121,6 @@
@Override
public String toString() {
- return varMap.toString();
+ return varMap + " " + varList;
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AbstractRuleController.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AbstractRuleController.java
index 96e15da..4287b26 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AbstractRuleController.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AbstractRuleController.java
@@ -29,17 +29,24 @@
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
import org.apache.hyracks.algebricks.core.algebra.prettyprint.IPlanPrettyPrinter;
import org.apache.hyracks.algebricks.core.config.AlgebricksConfig;
+import org.apache.hyracks.api.exceptions.ErrorCode;
import org.apache.hyracks.util.LogRedactionUtil;
public abstract class AbstractRuleController {
+ protected final boolean isTraceEnabled;
+
+ protected boolean isSanityCheckEnabled;
+
protected IOptimizationContext context;
public AbstractRuleController() {
+ isTraceEnabled = AlgebricksConfig.ALGEBRICKS_LOGGER.isTraceEnabled();
}
public void setContext(IOptimizationContext context) {
this.context = context;
+ this.isSanityCheckEnabled = context.getPhysicalOptimizationConfig().isSanityCheckEnabled();
}
/**
@@ -63,31 +70,20 @@
return rewriteOperatorRef(opRef, rule, true, false);
}
- private String getPlanString(Mutable<ILogicalOperator> opRef) throws AlgebricksException {
- if (AlgebricksConfig.ALGEBRICKS_LOGGER.isTraceEnabled() && context != null) {
- IPlanPrettyPrinter prettyPrinter = context.getPrettyPrinter();
- return prettyPrinter.reset().printOperator((AbstractLogicalOperator) opRef.getValue()).toString();
- }
- return null;
- }
-
- private void printRuleApplication(IAlgebraicRewriteRule rule, String beforePlan, String afterPlan) {
- if (AlgebricksConfig.ALGEBRICKS_LOGGER.isTraceEnabled()) {
- AlgebricksConfig.ALGEBRICKS_LOGGER.trace(">> Rule " + rule.getClass() + " fired.\n");
- AlgebricksConfig.ALGEBRICKS_LOGGER.trace(">> Before plan\n" + LogRedactionUtil.userData(beforePlan) + "\n");
- AlgebricksConfig.ALGEBRICKS_LOGGER.trace(">> After plan\n" + LogRedactionUtil.userData(afterPlan) + "\n");
- }
- }
-
protected boolean rewriteOperatorRef(Mutable<ILogicalOperator> opRef, IAlgebraicRewriteRule rule,
boolean enterNestedPlans, boolean fullDFS) throws AlgebricksException {
String preBeforePlan = getPlanString(opRef);
+ sanityCheckBeforeRewrite(rule, opRef);
if (rule.rewritePre(opRef, context)) {
String preAfterPlan = getPlanString(opRef);
- printRuleApplication(rule, preBeforePlan, preAfterPlan);
+ printRuleApplication(rule, "fired", preBeforePlan, preAfterPlan);
+ sanityCheckAfterRewrite(rule, opRef, true, preBeforePlan);
return true;
+ } else {
+ sanityCheckAfterRewrite(rule, opRef, false, preBeforePlan);
}
+
boolean rewritten = false;
AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
@@ -118,12 +114,80 @@
}
String postBeforePlan = getPlanString(opRef);
+ sanityCheckBeforeRewrite(rule, opRef);
if (rule.rewritePost(opRef, context)) {
String postAfterPlan = getPlanString(opRef);
- printRuleApplication(rule, postBeforePlan, postAfterPlan);
+ printRuleApplication(rule, "fired", postBeforePlan, postAfterPlan);
+ sanityCheckAfterRewrite(rule, opRef, true, postBeforePlan);
return true;
+ } else {
+ sanityCheckAfterRewrite(rule, opRef, false, postBeforePlan);
}
return rewritten;
}
+
+ private void sanityCheckBeforeRewrite(IAlgebraicRewriteRule rule, Mutable<ILogicalOperator> opRef)
+ throws AlgebricksException {
+ if (isSanityCheckEnabled) {
+ sanityCheckBeforeRewriteImpl(rule, opRef);
+ }
+ }
+
+ private void sanityCheckAfterRewrite(IAlgebraicRewriteRule rule, Mutable<ILogicalOperator> opRef, boolean rewritten,
+ String beforePlan) throws AlgebricksException {
+ if (isSanityCheckEnabled) {
+ sanityCheckAfterRewriteImpl(rule, opRef, rewritten, beforePlan);
+ }
+ }
+
+ private void sanityCheckBeforeRewriteImpl(IAlgebraicRewriteRule rule, Mutable<ILogicalOperator> opRef)
+ throws AlgebricksException {
+ try {
+ context.getPlanStabilityVerifier().recordPlanSignature(opRef);
+ } catch (AlgebricksException e) {
+ throw AlgebricksException.create(ErrorCode.COMPILATION_ILLEGAL_STATE,
+ String.format("Illegal state before rule %s. %s", rule.getClass().getName(), e.getMessage()));
+ }
+ }
+
+ private void sanityCheckAfterRewriteImpl(IAlgebraicRewriteRule rule, Mutable<ILogicalOperator> opRef,
+ boolean rewritten, String beforePlan) throws AlgebricksException {
+ if (rewritten) {
+ try {
+ context.getPlanStructureVerifier().verifyPlanStructure(opRef);
+ } catch (AlgebricksException e) {
+ throw AlgebricksException.create(ErrorCode.COMPILATION_ILLEGAL_STATE,
+ String.format("Fired rule %s produced illegal %s", rule.getClass().getName(), e.getMessage()));
+ }
+ } else {
+ try {
+ context.getPlanStabilityVerifier().comparePlanSignature(opRef);
+ } catch (AlgebricksException e) {
+ if (isTraceEnabled) {
+ printRuleApplication(rule, "not fired, but failed sanity check: " + e.getMessage(), beforePlan,
+ getPlanString(opRef));
+ }
+ throw AlgebricksException.create(ErrorCode.COMPILATION_ILLEGAL_STATE,
+ String.format("Non-fired rule %s unexpectedly %s", rule.getClass().getName(), e.getMessage()));
+ }
+ }
+ context.getPlanStabilityVerifier().discardPlanSignature();
+ }
+
+ private String getPlanString(Mutable<ILogicalOperator> opRef) throws AlgebricksException {
+ if (isTraceEnabled && context != null) {
+ IPlanPrettyPrinter prettyPrinter = context.getPrettyPrinter();
+ return prettyPrinter.reset().printOperator((AbstractLogicalOperator) opRef.getValue()).toString();
+ }
+ return null;
+ }
+
+ private void printRuleApplication(IAlgebraicRewriteRule rule, String status, String beforePlan, String afterPlan) {
+ if (isTraceEnabled) {
+ AlgebricksConfig.ALGEBRICKS_LOGGER.trace(">> Rule " + rule.getClass().getName() + " " + status + "\n");
+ AlgebricksConfig.ALGEBRICKS_LOGGER.trace(">> Before plan\n" + LogRedactionUtil.userData(beforePlan) + "\n");
+ AlgebricksConfig.ALGEBRICKS_LOGGER.trace(">> After plan\n" + LogRedactionUtil.userData(afterPlan) + "\n");
+ }
+ }
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AlgebricksOptimizationContext.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AlgebricksOptimizationContext.java
index 0fa0023..d1fd247 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AlgebricksOptimizationContext.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AlgebricksOptimizationContext.java
@@ -38,6 +38,8 @@
import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableEvalSizeEnvironment;
import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
+import org.apache.hyracks.algebricks.core.algebra.plan.PlanStabilityVerifier;
+import org.apache.hyracks.algebricks.core.algebra.plan.PlanStructureVerifier;
import org.apache.hyracks.algebricks.core.algebra.prettyprint.IPlanPrettyPrinter;
import org.apache.hyracks.algebricks.core.algebra.properties.DefaultNodeGroupDomain;
import org.apache.hyracks.algebricks.core.algebra.properties.FunctionalDependency;
@@ -89,6 +91,8 @@
private final IPlanPrettyPrinter prettyPrinter;
private final IConflictingTypeResolver conflictingTypeResovler;
private final IWarningCollector warningCollector;
+ private final PlanStructureVerifier planStructureVerifier;
+ private final PlanStabilityVerifier planStabilityVerifier;
public AlgebricksOptimizationContext(int varCounter, IExpressionEvalSizeComputer expressionEvalSizeComputer,
IMergeAggregationExpressionFactory mergeAggregationExpressionFactory,
@@ -106,6 +110,9 @@
this.prettyPrinter = prettyPrinter;
this.conflictingTypeResovler = conflictingTypeResovler;
this.warningCollector = warningCollector;
+ boolean isSanityCheckEnabled = physicalOptimizationConfig.isSanityCheckEnabled();
+ this.planStructureVerifier = isSanityCheckEnabled ? new PlanStructureVerifier(prettyPrinter, this) : null;
+ this.planStabilityVerifier = isSanityCheckEnabled ? new PlanStabilityVerifier(prettyPrinter) : null;
}
@Override
@@ -337,4 +344,14 @@
public IWarningCollector getWarningCollector() {
return warningCollector;
}
+
+ @Override
+ public PlanStructureVerifier getPlanStructureVerifier() {
+ return planStructureVerifier;
+ }
+
+ @Override
+ public PlanStabilityVerifier getPlanStabilityVerifier() {
+ return planStabilityVerifier;
+ }
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
index 25d53b0..ab06488 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
@@ -30,6 +30,7 @@
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
import org.apache.hyracks.algebricks.core.config.AlgebricksConfig;
+import org.apache.hyracks.api.exceptions.ErrorCode;
import org.apache.hyracks.util.LogRedactionUtil;
import org.apache.logging.log4j.Level;
@@ -58,6 +59,7 @@
}
logPlanAt("Plan Before Optimization", Level.TRACE);
+ sanityCheckBeforeOptimization(plan);
runLogicalOptimizationSets(plan, logicalRewrites);
computeSchemaBottomUpForPlan(plan);
runPhysicalOptimizationSets(plan, physicalRewrites);
@@ -118,4 +120,17 @@
}
runOptimizationSets(plan, optimizationSet);
}
+
+ private void sanityCheckBeforeOptimization(ILogicalPlan plan) throws AlgebricksException {
+ if (context.getPhysicalOptimizationConfig().isSanityCheckEnabled()) {
+ try {
+ for (Mutable<ILogicalOperator> opRef : plan.getRoots()) {
+ context.getPlanStructureVerifier().verifyPlanStructure(opRef);
+ }
+ } catch (AlgebricksException e) {
+ throw AlgebricksException.create(ErrorCode.COMPILATION_ILLEGAL_STATE,
+ String.format("Initial plan contains illegal %s", e.getMessage()));
+ }
+ }
+ }
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
index 22eeb23..4f6fee0 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
@@ -40,6 +40,7 @@
private static final String SORT_PARALLEL = "SORT_PARALLEL";
private static final String SORT_SAMPLES = "SORT_SAMPLES";
private static final String INDEX_ONLY = "INDEX_ONLY";
+ private static final String SANITY_CHECK = "SANITY_CHECK";
private Properties properties = new Properties();
@@ -181,6 +182,14 @@
return getBoolean(INDEX_ONLY, AlgebricksConfig.INDEX_ONLY_DEFAULT);
}
+ public void setSanityCheckEnabled(boolean sanityCheck) {
+ setBoolean(SANITY_CHECK, sanityCheck);
+ }
+
+ public boolean isSanityCheckEnabled() {
+ return getBoolean(SANITY_CHECK, AlgebricksConfig.SANITYCHECK_DEFAULT);
+ }
+
private void setInt(String property, int value) {
properties.setProperty(property, Integer.toString(value));
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/utils/LogicalOperatorDotVisitor.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/utils/LogicalOperatorDotVisitor.java
index a1ae42b..5a8c128 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/utils/LogicalOperatorDotVisitor.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/utils/LogicalOperatorDotVisitor.java
@@ -754,6 +754,12 @@
break;
case UNPARTITIONED:
stringBuilder.append("Data is in one place.");
+ case PARTIAL_BROADCAST_ORDERED_FOLLOWING:
+ stringBuilder.append("Data is partially broadcasted to partitions.");
+ break;
+ case PARTIAL_BROADCAST_ORDERED_INTERSECT:
+ stringBuilder.append("Data is partially broadcasted to partitions.");
+ break;
}
if (nodeDomain instanceof DefaultNodeGroupDomain) {
DefaultNodeGroupDomain nd = (DefaultNodeGroupDomain) nodeDomain;
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/utils/Substitution.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/utils/Substitution.java
deleted file mode 100644
index 4495314..0000000
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/utils/Substitution.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.hyracks.algebricks.core.utils;
-
-public class Substitution<T> {
- public T substituted;
- public T substitutedWith;
-
- public Substitution(T substituted, T substitutedWith) {
- this.substituted = substituted;
- this.substitutedWith = substitutedWith;
- }
-}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/test/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanStabilityVerifierTest.java b/hyracks-fullstack/algebricks/algebricks-core/src/test/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanStabilityVerifierTest.java
new file mode 100644
index 0000000..7502788
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/test/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanStabilityVerifierTest.java
@@ -0,0 +1,316 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.plan;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator;
+import org.junit.Assert;
+import org.junit.Test;
+
+public final class PlanStabilityVerifierTest extends PlanVerifierTestBase {
+
+ final PlanStabilityVerifier verifier = new PlanStabilityVerifier(planPrinter);
+
+ @Test
+ public void testVerifySuccess() throws Exception {
+ Mutable<ILogicalOperator> opRef1 = createSamplePlan1();
+ verifier.recordPlanSignature(opRef1);
+ verifier.comparePlanSignature(opRef1);
+ }
+
+ @Test
+ public void testAddOperator() throws Exception {
+ AssignOperator op1 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+ Mutable<ILogicalOperator> opRef1 = newMutable(op1);
+
+ verifier.recordPlanSignature(opRef1);
+
+ AssignOperator op2 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+ op1.getInputs().add(newMutable(op2));
+
+ try {
+ verifier.comparePlanSignature(opRef1);
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("created operator reference"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(op2)));
+ }
+ }
+
+ @Test
+ public void testAddOperatorInNestedPlan() throws Exception {
+ AssignOperator nestedOp1 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+
+ SubplanOperator op = new SubplanOperator(nestedOp1);
+ Mutable<ILogicalOperator> opRef = newMutable(op);
+
+ verifier.recordPlanSignature(opRef);
+
+ AssignOperator nestedOp2 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+ nestedOp1.getInputs().add(newMutable(nestedOp2));
+
+ try {
+ verifier.comparePlanSignature(opRef);
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("created operator reference"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(nestedOp2)));
+ }
+ }
+
+ @Test
+ public void testRemoveOperator() throws Exception {
+ AssignOperator op1 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+ Mutable<ILogicalOperator> opRef1 = newMutable(op1);
+
+ AssignOperator op2 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+ op1.getInputs().add(newMutable(op2));
+
+ verifier.recordPlanSignature(opRef1);
+
+ op1.getInputs().clear();
+
+ try {
+ verifier.comparePlanSignature(opRef1);
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("deleted operator reference"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(op2)));
+ }
+ }
+
+ @Test
+ public void testRemoveOperatorInNestedPlan() throws Exception {
+ AssignOperator nestedOp1 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+
+ AssignOperator nestedOp2 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+ nestedOp1.getInputs().add(newMutable(nestedOp2));
+
+ SubplanOperator op = new SubplanOperator(nestedOp1);
+ Mutable<ILogicalOperator> opRef = newMutable(op);
+
+ verifier.recordPlanSignature(opRef);
+
+ nestedOp1.getInputs().clear();
+
+ try {
+ verifier.comparePlanSignature(opRef);
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("deleted operator reference"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(nestedOp2)));
+ }
+ }
+
+ @Test
+ public void testReplaceOperator() throws Exception {
+ AssignOperator op1 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+ Mutable<ILogicalOperator> opRef1 = newMutable(op1);
+
+ AssignOperator op2 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+ op1.getInputs().add(newMutable(op2));
+
+ verifier.recordPlanSignature(opRef1);
+
+ AssignOperator op3 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+ op1.getInputs().clear();
+ op1.getInputs().add(newMutable(op3));
+
+ try {
+ verifier.comparePlanSignature(opRef1);
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("created operator reference"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(op3)));
+ }
+ }
+
+ @Test
+ public void testReplaceOperatorInNestedPlan() throws Exception {
+ AssignOperator nestedOp1 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+
+ AssignOperator nestedOp2 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+ nestedOp1.getInputs().add(newMutable(nestedOp2));
+
+ SubplanOperator op = new SubplanOperator(nestedOp1);
+ Mutable<ILogicalOperator> opRef = newMutable(op);
+
+ verifier.recordPlanSignature(opRef);
+
+ AssignOperator nestedOp3 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+ nestedOp1.getInputs().clear();
+ nestedOp1.getInputs().add(newMutable(nestedOp3));
+
+ try {
+ verifier.comparePlanSignature(opRef);
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("created operator reference"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(nestedOp3)));
+ }
+ }
+
+ @Test
+ public void testAddExpression() throws Exception {
+ AssignOperator op = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+ Mutable<ILogicalOperator> opRef = newMutable(op);
+
+ verifier.recordPlanSignature(opRef);
+
+ op.getVariables().add(newVar());
+ LogicalVariable testVar = newVar();
+ op.getExpressions().add(newMutable(newVarRef(testVar)));
+
+ try {
+ verifier.comparePlanSignature(opRef);
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("created expression reference"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printVar(testVar)));
+ }
+ }
+
+ @Test
+ public void testRemoveExpression() throws Exception {
+ AssignOperator op = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+ op.getVariables().add(newVar());
+ LogicalVariable testVar = newVar();
+ op.getExpressions().add(newMutable(newVarRef(testVar)));
+
+ Mutable<ILogicalOperator> opRef = newMutable(op);
+
+ verifier.recordPlanSignature(opRef);
+
+ op.getVariables().remove(1);
+ op.getExpressions().remove(1);
+
+ try {
+ verifier.comparePlanSignature(opRef);
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("deleted expression reference"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printVar(testVar)));
+ }
+ }
+
+ @Test
+ public void testReplaceExpression() throws Exception {
+ AssignOperator op = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+ Mutable<ILogicalOperator> opRef = newMutable(op);
+
+ verifier.recordPlanSignature(opRef);
+
+ LogicalVariable testVar = newVar();
+ op.getExpressions().get(0).setValue(newVarRef(testVar));
+
+ try {
+ verifier.comparePlanSignature(opRef);
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertEquals(String.format("created expression instance (%s)", printVar(testVar)), e.getMessage());
+ }
+ }
+
+ @Test
+ public void testCycleBeforeRecord() {
+ AssignOperator op1 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+ Mutable<ILogicalOperator> opRef1 = newMutable(op1);
+
+ AssignOperator op2 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+ Mutable<ILogicalOperator> opRef2 = newMutable(op2);
+
+ op1.getInputs().add(opRef2);
+ op2.getInputs().add(opRef1);
+
+ try {
+ verifier.recordPlanSignature(opRef1);
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("cycle"));
+ }
+ }
+
+ @Test
+ public void testCycleBeforeCompare() throws Exception {
+ AssignOperator op1 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+ Mutable<ILogicalOperator> opRef1 = newMutable(op1);
+
+ AssignOperator op2 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+ Mutable<ILogicalOperator> opRef2 = newMutable(op2);
+
+ op1.getInputs().add(opRef2);
+
+ verifier.recordPlanSignature(opRef1);
+
+ op2.getInputs().add(new MutableObject<>(op1));
+
+ try {
+ verifier.comparePlanSignature(opRef1);
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("created operator reference"));
+ }
+ }
+
+ @Test
+ public void testApiDiscard() throws Exception {
+ AssignOperator op = newAssign(newVar(), newMutable(newVarRef(newVar())));
+ Mutable<ILogicalOperator> opRef = newMutable(op);
+
+ verifier.recordPlanSignature(opRef);
+ verifier.comparePlanSignature(opRef);
+
+ verifier.discardPlanSignature();
+
+ try {
+ verifier.comparePlanSignature(opRef);
+ Assert.fail("Expected to catch " + IllegalStateException.class.getName());
+ } catch (IllegalStateException e) {
+ // expected
+ }
+ }
+
+ @Test
+ public void testApiRecordAfterRecordFailure() throws Exception {
+ AssignOperator op = newAssign(newVar(), newMutable(newVarRef(newVar())));
+ Mutable<ILogicalOperator> opRef = newMutable(op);
+
+ verifier.recordPlanSignature(opRef);
+ verifier.recordPlanSignature(opRef); // ok. the previously recorded state is discarded
+ verifier.comparePlanSignature(opRef);
+ }
+
+ @Test
+ public void testApiCompareWithoutRecordFailure() throws Exception {
+ AssignOperator op = newAssign(newVar(), newMutable(newVarRef(newVar())));
+ Mutable<ILogicalOperator> opRef = newMutable(op);
+
+ try {
+ verifier.comparePlanSignature(opRef);
+ Assert.fail("Expected to catch " + IllegalStateException.class.getName());
+ } catch (IllegalStateException e) {
+ // expected
+ }
+ }
+}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/test/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanStructureVerifierTest.java b/hyracks-fullstack/algebricks/algebricks-core/src/test/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanStructureVerifierTest.java
new file mode 100644
index 0000000..f047cec
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/test/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanStructureVerifierTest.java
@@ -0,0 +1,351 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.plan;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IConflictingTypeResolver;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionTypeComputer;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IMissableTypeComputer;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
+import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
+import org.junit.Assert;
+import org.junit.Test;
+
+public final class PlanStructureVerifierTest extends PlanVerifierTestBase implements ITypingContext {
+
+ final PlanStructureVerifier verifier = new PlanStructureVerifier(planPrinter, this);
+
+ @Test
+ public void testVerifySuccess() throws Exception {
+ Mutable<ILogicalOperator> opRef1 = createSamplePlan1();
+ verifier.verifyPlanStructure(opRef1);
+ }
+
+ @Test
+ public void testSharedExpressionReferenceInSameOp() {
+ LogicalVariable v1 = newVar();
+ AssignOperator op1 = newAssign(v1, newMutable(ConstantExpression.TRUE));
+
+ Mutable<ILogicalExpression> v1Ref = newMutable(newVarRef(v1));
+
+ AssignOperator op2 = newAssign(newVar(), v1Ref, newVar(), v1Ref);
+ op2.getInputs().add(newMutable(op1));
+
+ try {
+ verifier.verifyPlanStructure(newMutable(op2));
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("shared expression reference"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("to (" + printVar(v1) + ")"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("in " + printOp(op2)));
+ }
+ }
+
+ @Test
+ public void testSharedExpressionInSameOp() {
+ LogicalVariable v1 = newVar();
+ AssignOperator op1 = newAssign(v1, newMutable(ConstantExpression.TRUE));
+
+ ILogicalExpression v1Ref = newVarRef(v1);
+
+ AssignOperator op2 = newAssign(newVar(), newMutable(v1Ref), newVar(), newMutable(v1Ref));
+ op2.getInputs().add(newMutable(op1));
+
+ try {
+ verifier.verifyPlanStructure(newMutable(op2));
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("shared expression instance"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("(" + printVar(v1) + ")"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("in " + printOp(op2)));
+ }
+ }
+
+ @Test
+ public void testSharedExpressionReferenceBetweenOps() {
+ LogicalVariable v1 = newVar();
+ AssignOperator op1 = newAssign(v1, newMutable(ConstantExpression.TRUE));
+
+ Mutable<ILogicalExpression> v1Ref = newMutable(newVarRef(v1));
+
+ AssignOperator op2 = newAssign(newVar(), v1Ref);
+ op2.getInputs().add(newMutable(op1));
+
+ AssignOperator op3 = newAssign(newVar(), v1Ref);
+ op3.getInputs().add(newMutable(op2));
+
+ try {
+ verifier.verifyPlanStructure(newMutable(op3));
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("shared expression reference"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("to (" + printVar(v1) + ")"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(op2)));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(op3)));
+ }
+ }
+
+ @Test
+ public void testSharedExpressionBetweenOps() {
+ LogicalVariable v1 = newVar();
+ AssignOperator op1 = newAssign(v1, newMutable(ConstantExpression.TRUE));
+
+ ILogicalExpression v1Ref = newVarRef(v1);
+
+ AssignOperator op2 = newAssign(newVar(), newMutable(v1Ref));
+ op2.getInputs().add(newMutable(op1));
+
+ AssignOperator op3 = newAssign(newVar(), newMutable(v1Ref));
+ op3.getInputs().add(newMutable(op2));
+
+ try {
+ verifier.verifyPlanStructure(newMutable(op3));
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("shared expression instance"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("(" + printVar(v1) + ")"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(op2)));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(op3)));
+ }
+ }
+
+ @Test
+ public void testSharedOperatorReferenceInSameOp() {
+ AssignOperator op1 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+ Mutable<ILogicalOperator> opRef1 = newMutable(op1);
+
+ InnerJoinOperator op2 = new InnerJoinOperator(newMutable(ConstantExpression.TRUE));
+ op2.getInputs().add(opRef1);
+ op2.getInputs().add(opRef1);
+
+ try {
+ verifier.verifyPlanStructure(newMutable(op2));
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("shared operator reference"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("to (" + printOp(op1) + ")"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("in " + printOp(op2)));
+ }
+ }
+
+ @Test
+ public void testSharedOperatorInSameOp() {
+ AssignOperator op1 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+
+ InnerJoinOperator op2 = new InnerJoinOperator(newMutable(ConstantExpression.TRUE));
+ op2.getInputs().add(newMutable(op1));
+ op2.getInputs().add(newMutable(op1));
+
+ try {
+ verifier.verifyPlanStructure(newMutable(op2));
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("shared operator instance"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("(" + printOp(op1) + ")"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("in " + printOp(op2)));
+ }
+ }
+
+ @Test
+ public void testSharedOperatorReferenceBetweenOps() {
+ InnerJoinOperator op1 = new InnerJoinOperator(newMutable(ConstantExpression.TRUE));
+
+ InnerJoinOperator op2 = new InnerJoinOperator(newMutable(ConstantExpression.TRUE));
+ op1.getInputs().add(newMutable(op2));
+
+ InnerJoinOperator op3 = new InnerJoinOperator(newMutable(ConstantExpression.FALSE));
+ op1.getInputs().add(newMutable(op3));
+
+ AssignOperator op4 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+ Mutable<ILogicalOperator> opRef4 = newMutable(op4);
+
+ op2.getInputs().add(opRef4);
+ op2.getInputs().add(newMutable(newAssign(newVar(), newMutable(ConstantExpression.MISSING))));
+
+ op3.getInputs().add(opRef4);
+ op3.getInputs().add(newMutable(newAssign(newVar(), newMutable(ConstantExpression.MISSING))));
+
+ try {
+ verifier.verifyPlanStructure(newMutable(op1));
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("shared operator reference"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("to (" + printOp(op4) + ")"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(op2)));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(op3)));
+ }
+ }
+
+ @Test
+ public void testSharedOperatorBetweenOps() {
+ InnerJoinOperator op1 = new InnerJoinOperator(newMutable(ConstantExpression.TRUE));
+
+ InnerJoinOperator op2 = new InnerJoinOperator(newMutable(ConstantExpression.TRUE));
+ op1.getInputs().add(newMutable(op2));
+
+ InnerJoinOperator op3 = new InnerJoinOperator(newMutable(ConstantExpression.FALSE));
+ op1.getInputs().add(newMutable(op3));
+
+ AssignOperator op4 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+
+ op2.getInputs().add(newMutable(op4));
+ op2.getInputs().add(newMutable(newAssign(newVar(), newMutable(ConstantExpression.MISSING))));
+
+ op3.getInputs().add(newMutable(op4));
+ op3.getInputs().add(newMutable(newAssign(newVar(), newMutable(ConstantExpression.MISSING))));
+
+ try {
+ verifier.verifyPlanStructure(newMutable(op1));
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("shared operator instance"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("(" + printOp(op4) + ")"));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(op2)));
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains(printOp(op3)));
+ }
+ }
+
+ @Test
+ public void testCycle() {
+ AssignOperator op1 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+ Mutable<ILogicalOperator> opRef1 = newMutable(op1);
+
+ AssignOperator op2 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+ Mutable<ILogicalOperator> opRef2 = newMutable(op2);
+
+ op1.getInputs().add(opRef2);
+ op2.getInputs().add(opRef1);
+
+ try {
+ verifier.verifyPlanStructure(opRef1);
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("cycle"));
+ }
+ }
+
+ @Test
+ public void testNoSchema() {
+ EmptyTupleSourceOperator ets = newETS();
+ ets.recomputeSchema();
+
+ AssignOperator op1 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+ op1.getInputs().add(newMutable(ets));
+ op1.recomputeSchema();
+
+ op1.getInputs().clear();
+
+ AssignOperator op2 = newAssign(newVar(), newMutable(ConstantExpression.FALSE));
+ // no schema
+ op1.getInputs().add(newMutable(op2));
+
+ try {
+ verifier.verifyPlanStructure(newMutable(op1));
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("missing schema"));
+ }
+ }
+
+ @Test
+ public void testNoTypeEnvironment() throws Exception {
+ EmptyTupleSourceOperator ets = newETS();
+ computeAndSetTypeEnvironmentForOperator(ets);
+ ets.recomputeSchema();
+
+ SelectOperator op1 = new SelectOperator(newMutable(ConstantExpression.TRUE), false, null);
+ op1.getInputs().add(newMutable(ets));
+ computeAndSetTypeEnvironmentForOperator(op1);
+ op1.recomputeSchema();
+
+ op1.getInputs().clear();
+
+ SelectOperator op2 = new SelectOperator(newMutable(ConstantExpression.FALSE), false, null);
+ op2.getInputs().add(newMutable(ets));
+ op2.recomputeSchema();
+ // no type env
+
+ op1.getInputs().add(newMutable(op2));
+
+ try {
+ verifier.verifyPlanStructure(newMutable(op1));
+ Assert.fail("Expected to catch " + AlgebricksException.class.getName());
+ } catch (AlgebricksException e) {
+ Assert.assertTrue(e.getMessage(), e.getMessage().contains("missing output type environment"));
+ }
+ }
+
+ // ITypingContext
+
+ final Map<ILogicalOperator, IVariableTypeEnvironment> typeEnvMap = new HashMap<>();
+
+ @Override
+ public void computeAndSetTypeEnvironmentForOperator(ILogicalOperator op) throws AlgebricksException {
+ setOutputTypeEnvironment(op, op.computeOutputTypeEnvironment(this));
+ }
+
+ @Override
+ public void setOutputTypeEnvironment(ILogicalOperator op, IVariableTypeEnvironment env) {
+ typeEnvMap.put(op, env);
+ }
+
+ @Override
+ public IVariableTypeEnvironment getOutputTypeEnvironment(ILogicalOperator op) {
+ return typeEnvMap.get(op);
+ }
+
+ @Override
+ public void invalidateTypeEnvironmentForOperator(ILogicalOperator op) {
+ typeEnvMap.remove(op);
+ }
+
+ @Override
+ public IExpressionTypeComputer getExpressionTypeComputer() {
+ return null;
+ }
+
+ @Override
+ public IMissableTypeComputer getMissableTypeComputer() {
+ return null;
+ }
+
+ @Override
+ public IConflictingTypeResolver getConflictingTypeResolver() {
+ return null;
+ }
+
+ @Override
+ public IMetadataProvider<?, ?> getMetadataProvider() {
+ return null;
+ }
+}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/test/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanVerifierTestBase.java b/hyracks-fullstack/algebricks/algebricks-core/src/test/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanVerifierTestBase.java
new file mode 100644
index 0000000..7bfbaa9
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/test/java/org/apache/hyracks/algebricks/core/algebra/plan/PlanVerifierTestBase.java
@@ -0,0 +1,119 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.plan;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator;
+import org.apache.hyracks.algebricks.core.algebra.prettyprint.IPlanPrettyPrinter;
+import org.apache.hyracks.algebricks.core.algebra.prettyprint.PlanPrettyPrinter;
+
+public abstract class PlanVerifierTestBase {
+ final IPlanPrettyPrinter planPrinter = PlanPrettyPrinter.createStringPlanPrettyPrinter();
+
+ int varCounter;
+
+ EmptyTupleSourceOperator newETS() {
+ return new EmptyTupleSourceOperator();
+ }
+
+ AssignOperator newAssign(LogicalVariable var, Mutable<ILogicalExpression> exprRef) {
+ return new AssignOperator(var, exprRef);
+ }
+
+ AssignOperator newAssign(LogicalVariable var1, Mutable<ILogicalExpression> exprRef1, LogicalVariable var2,
+ Mutable<ILogicalExpression> exprRef2) {
+ AssignOperator op = new AssignOperator(var1, exprRef1);
+ op.getVariables().add(var2);
+ op.getExpressions().add(exprRef2);
+ return op;
+ }
+
+ <T> Mutable<T> newMutable(T item) {
+ return new MutableObject<>(item);
+ }
+
+ VariableReferenceExpression newVarRef(LogicalVariable var) {
+ return new VariableReferenceExpression(var);
+ }
+
+ LogicalVariable newVar() {
+ return new LogicalVariable(varCounter++);
+ }
+
+ String printOp(ILogicalOperator op) {
+ try {
+ return planPrinter.reset().printOperator((AbstractLogicalOperator) op, false).toString();
+ } catch (AlgebricksException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ String printExpr(ILogicalExpression expr) {
+ try {
+ return planPrinter.reset().printExpression(expr).toString();
+ } catch (AlgebricksException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ String printVar(LogicalVariable var) {
+ return printExpr(newVarRef(var));
+ }
+
+ Mutable<ILogicalOperator> createSamplePlan1() {
+ AssignOperator op1 = newAssign(newVar(), newMutable(ConstantExpression.TRUE));
+
+ SubplanOperator op2 = new SubplanOperator(newAssign(newVar(), newMutable(ConstantExpression.TRUE)));
+ op1.getInputs().add(newMutable(op2));
+
+ InnerJoinOperator op3 = new InnerJoinOperator(newMutable(ConstantExpression.TRUE));
+ op2.getInputs().add(newMutable(op3));
+
+ AssignOperator op4 = new AssignOperator(newVar(), newMutable(ConstantExpression.TRUE));
+ op3.getInputs().add(newMutable(op4));
+
+ AssignOperator op5 = new AssignOperator(newVar(), newMutable(ConstantExpression.FALSE));
+ op3.getInputs().add(newMutable(op5));
+
+ ReplicateOperator op6 = new ReplicateOperator(2);
+
+ op4.getInputs().add(newMutable(op6));
+ op6.getOutputs().add(newMutable(op4));
+
+ op5.getInputs().add(newMutable(op6));
+ op6.getOutputs().add(newMutable(op5));
+
+ op6.getInputs().add(newMutable(newETS()));
+
+ return newMutable(op1);
+ }
+}
diff --git a/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IUnnestingPositionWriter.java b/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IUnnestingPositionWriter.java
new file mode 100644
index 0000000..935665e
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IUnnestingPositionWriter.java
@@ -0,0 +1,26 @@
+/*
+ * 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.hyracks.algebricks.data;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+public interface IUnnestingPositionWriter {
+ void write(DataOutput dataOutput, long position) throws IOException;
+}
diff --git a/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IUnnestingPositionWriterFactory.java b/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IUnnestingPositionWriterFactory.java
new file mode 100644
index 0000000..164ea99
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IUnnestingPositionWriterFactory.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.hyracks.algebricks.data;
+
+import java.io.Serializable;
+
+@FunctionalInterface
+public interface IUnnestingPositionWriterFactory extends Serializable {
+ IUnnestingPositionWriter createUnnestingPositionWriter();
+}
\ No newline at end of file
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/AbstractIntroduceGroupByCombinerRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/AbstractIntroduceGroupByCombinerRule.java
index 6c42929..b917ce1 100644
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/AbstractIntroduceGroupByCombinerRule.java
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/AbstractIntroduceGroupByCombinerRule.java
@@ -87,7 +87,7 @@
if (!newGbyLiveVars.contains(usedVar)) {
// Let the left-hand side of gbyOp's decoration expressions populated through the combiner group-by without
// any intermediate assignment.
- newGbyOp.addDecorExpression(null, p.second.getValue());
+ newGbyOp.addDecorExpression(null, p.second.getValue().cloneExpression());
newGbyLiveVars.add(usedVar);
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceStructuralPropertiesRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceStructuralPropertiesRule.java
index 706028b..cf95d01 100644
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceStructuralPropertiesRule.java
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceStructuralPropertiesRule.java
@@ -70,6 +70,8 @@
import org.apache.hyracks.algebricks.core.algebra.operators.physical.HashPartitionMergeExchangePOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.MicroStableSortPOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.OneToOneExchangePOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.PartialBroadcastRangeFollowingExchangePOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.PartialBroadcastRangeIntersectExchangePOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.RandomMergeExchangePOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.RandomPartitionExchangePOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.RangePartitionExchangePOperator;
@@ -90,6 +92,8 @@
import org.apache.hyracks.algebricks.core.algebra.properties.LocalOrderProperty;
import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
import org.apache.hyracks.algebricks.core.algebra.properties.OrderedPartitionedProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.PartialBroadcastOrderedFollowingProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.PartialBroadcastOrderedIntersectProperty;
import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
import org.apache.hyracks.algebricks.core.algebra.properties.PropertiesUtil;
import org.apache.hyracks.algebricks.core.algebra.properties.RandomPartitioningProperty;
@@ -601,6 +605,18 @@
pop = new RandomPartitionExchangePOperator(nd);
break;
}
+ case PARTIAL_BROADCAST_ORDERED_FOLLOWING: {
+ PartialBroadcastOrderedFollowingProperty pbp = (PartialBroadcastOrderedFollowingProperty) pp;
+ pop = new PartialBroadcastRangeFollowingExchangePOperator(pbp.getOrderColumns(),
+ pbp.getNodeDomain(), pbp.getRangeMap());
+ break;
+ }
+ case PARTIAL_BROADCAST_ORDERED_INTERSECT: {
+ PartialBroadcastOrderedIntersectProperty pbp = (PartialBroadcastOrderedIntersectProperty) pp;
+ pop = new PartialBroadcastRangeIntersectExchangePOperator(pbp.getIntervalColumns(),
+ pbp.getNodeDomain(), pbp.getRangeMap());
+ break;
+ }
default: {
throw new NotImplementedException("Enforcer for " + pp.getPartitioningType()
+ " partitioning type has not been implemented.");
@@ -678,14 +694,16 @@
private IPhysicalOperator createRangePartitionerConnector(AbstractLogicalOperator parentOp, INodeDomain domain,
IPartitioningProperty requiredPartitioning, int childIndex, IOptimizationContext ctx)
throws AlgebricksException {
- // options for range partitioning: 1. static range map, 2. dynamic range map computed at run time
+ // options for range partitioning: 1. Range Map from Hint computed at run time 2. static range map, 3. dynamic range map computed at run time
List<OrderColumn> partitioningColumns = ((OrderedPartitionedProperty) requiredPartitioning).getOrderColumns();
- if (parentOp.getAnnotations().containsKey(OperatorAnnotations.USE_STATIC_RANGE)) {
- RangeMap rangeMap = (RangeMap) parentOp.getAnnotations().get(OperatorAnnotations.USE_STATIC_RANGE);
+ RangeMap rangeMap = ((OrderedPartitionedProperty) requiredPartitioning).getRangeMap();
+ if (rangeMap != null) {
return new RangePartitionExchangePOperator(partitioningColumns, domain, rangeMap);
- } else {
- return createDynamicRangePartitionExchangePOperator(parentOp, ctx, domain, partitioningColumns, childIndex);
+ } else if (parentOp.getAnnotations().containsKey(OperatorAnnotations.USE_STATIC_RANGE)) {
+ RangeMap map = (RangeMap) parentOp.getAnnotations().get(OperatorAnnotations.USE_STATIC_RANGE);
+ return new RangePartitionExchangePOperator(partitioningColumns, domain, map);
}
+ return createDynamicRangePartitionExchangePOperator(parentOp, ctx, domain, partitioningColumns, childIndex);
}
private IPhysicalOperator createDynamicRangePartitionExchangePOperator(AbstractLogicalOperator parentOp,
@@ -698,9 +716,8 @@
// these two exchange ops are needed so that the parents of replicate stay the same during later optimizations.
// This is because replicate operator has references to its parents. If any later optimizations add new parents,
// then replicate would still point to the old ones.
- MutableObject<ILogicalOperator> replicateOpRef = new MutableObject<>(replicateOp);
- ExchangeOperator exchToLocalAgg = createOneToOneExchangeOp(replicateOpRef, ctx);
- ExchangeOperator exchToForward = createOneToOneExchangeOp(replicateOpRef, ctx);
+ ExchangeOperator exchToLocalAgg = createOneToOneExchangeOp(new MutableObject<>(replicateOp), ctx);
+ ExchangeOperator exchToForward = createOneToOneExchangeOp(new MutableObject<>(replicateOp), ctx);
MutableObject<ILogicalOperator> exchToLocalAggRef = new MutableObject<>(exchToLocalAgg);
MutableObject<ILogicalOperator> exchToForwardRef = new MutableObject<>(exchToForward);
@@ -732,7 +749,7 @@
parentOp.getInputs().set(childIndex, forwardRef);
parentOp.recomputeSchema();
ctx.computeAndSetTypeEnvironmentForOperator(parentOp);
- return new RangePartitionExchangePOperator(partitioningColumns, rangeMapKey, targetDomain);
+ return new RangePartitionExchangePOperator(partitioningColumns, targetDomain, rangeMapKey);
}
private static ReplicateOperator createReplicateOperator(Mutable<ILogicalOperator> inputOperator,
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
index b8dd24f..2cfa241 100644
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
@@ -256,6 +256,7 @@
}
} else {
if (expr.isFunctional() && assignCommonExpression(exprEqClass, expr)) {
+ modified = true;
//re-obtain the live vars after rewriting in the method called in the if condition
Set<LogicalVariable> liveVars = new HashSet<LogicalVariable>();
VariableUtilities.getLiveVariables(op, liveVars);
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java
index 176ab7a..bd24644 100644
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java
@@ -29,13 +29,13 @@
import org.apache.commons.lang3.mutable.MutableInt;
import org.apache.commons.lang3.mutable.MutableObject;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.ListSet;
import org.apache.hyracks.algebricks.common.utils.Pair;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractReplicateOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
@@ -48,6 +48,7 @@
import org.apache.hyracks.algebricks.core.algebra.operators.physical.OneToOneExchangePOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.ReplicatePOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.StreamProjectPOperator;
+import org.apache.hyracks.algebricks.core.algebra.util.OperatorManipulationUtil;
import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
import org.apache.hyracks.api.exceptions.SourceLocation;
@@ -172,7 +173,6 @@
ReplicateOperator rop = new ReplicateOperator(group.size(), materializationFlags);
rop.setSourceLocation(candidateSourceLoc);
rop.setPhysicalOperator(new ReplicatePOperator());
- Mutable<ILogicalOperator> ropRef = new MutableObject<ILogicalOperator>(rop);
AbstractLogicalOperator aopCandidate = (AbstractLogicalOperator) candidate.getValue();
List<Mutable<ILogicalOperator>> originalCandidateParents = childrenToParents.get(candidate);
@@ -186,51 +186,55 @@
Mutable<ILogicalOperator> beforeExchangeRef = new MutableObject<ILogicalOperator>(beforeExchange);
beforeExchange.getInputs().add(candidate);
context.computeAndSetTypeEnvironmentForOperator(beforeExchange);
+ beforeExchange.recomputeSchema();
rop.getInputs().add(beforeExchangeRef);
}
context.computeAndSetTypeEnvironmentForOperator(rop);
+ rop.recomputeSchema();
for (Mutable<ILogicalOperator> parentRef : originalCandidateParents) {
AbstractLogicalOperator parent = (AbstractLogicalOperator) parentRef.getValue();
int index = parent.getInputs().indexOf(candidate);
if (parent.getOperatorTag() == LogicalOperatorTag.EXCHANGE) {
- parent.getInputs().set(index, ropRef);
+ parent.getInputs().set(index, new MutableObject<>(rop));
rop.getOutputs().add(parentRef);
} else {
AbstractLogicalOperator exchange = new ExchangeOperator();
exchange.setPhysicalOperator(new OneToOneExchangePOperator());
exchange.setExecutionMode(rop.getExecutionMode());
MutableObject<ILogicalOperator> exchangeRef = new MutableObject<ILogicalOperator>(exchange);
- exchange.getInputs().add(ropRef);
+ exchange.getInputs().add(new MutableObject<>(rop));
rop.getOutputs().add(exchangeRef);
context.computeAndSetTypeEnvironmentForOperator(exchange);
+ exchange.recomputeSchema();
parent.getInputs().set(index, exchangeRef);
context.computeAndSetTypeEnvironmentForOperator(parent);
+ parent.recomputeSchema();
}
}
- List<LogicalVariable> liveVarsNew = new ArrayList<LogicalVariable>();
+ List<LogicalVariable> liveVarsNew = new ArrayList<>();
VariableUtilities.getLiveVariables(candidate.getValue(), liveVarsNew);
- ArrayList<Mutable<ILogicalExpression>> assignExprs = new ArrayList<Mutable<ILogicalExpression>>();
- for (LogicalVariable liveVar : liveVarsNew) {
- VariableReferenceExpression liveVarRef = new VariableReferenceExpression(liveVar);
- liveVarRef.setSourceLocation(candidateSourceLoc);
- assignExprs.add(new MutableObject<ILogicalExpression>(liveVarRef));
- }
for (Mutable<ILogicalOperator> ref : group) {
if (ref.equals(candidate)) {
continue;
}
- ArrayList<LogicalVariable> liveVars = new ArrayList<LogicalVariable>();
- Map<LogicalVariable, LogicalVariable> variableMappingBack =
- new HashMap<LogicalVariable, LogicalVariable>();
+ ListSet<LogicalVariable> liveVarsNewSet = new ListSet<>(liveVarsNew);
+ List<LogicalVariable> liveVars = new ArrayList<>(liveVarsNew.size());
+ ListSet<LogicalVariable> liveVarsSet = new ListSet<>();
+ Map<LogicalVariable, LogicalVariable> variableMappingBack = new HashMap<>();
IsomorphismUtilities.mapVariablesTopDown(ref.getValue(), candidate.getValue(), variableMappingBack);
- for (int i = 0; i < liveVarsNew.size(); i++) {
- liveVars.add(variableMappingBack.get(liveVarsNew.get(i)));
+ for (LogicalVariable liveVarNew : liveVarsNew) {
+ liveVars.add(variableMappingBack.get(liveVarNew));
+ }
+ for (LogicalVariable liveVarNew : liveVarsNewSet) {
+ liveVarsSet.add(variableMappingBack.get(liveVarNew));
}
SourceLocation refSourceLoc = ref.getValue().getSourceLocation();
- AbstractLogicalOperator assignOperator = new AssignOperator(liveVars, assignExprs);
+ List<Mutable<ILogicalExpression>> assignExprs =
+ OperatorManipulationUtil.createVariableReferences(liveVarsNewSet, candidateSourceLoc);
+ AbstractLogicalOperator assignOperator = new AssignOperator(new ArrayList<>(liveVarsSet), assignExprs);
assignOperator.setSourceLocation(refSourceLoc);
assignOperator.setExecutionMode(rop.getExecutionMode());
assignOperator.setPhysicalOperator(new AssignPOperator());
@@ -241,7 +245,7 @@
AbstractLogicalOperator exchOp = new ExchangeOperator();
exchOp.setPhysicalOperator(new OneToOneExchangePOperator());
exchOp.setExecutionMode(rop.getExecutionMode());
- exchOp.getInputs().add(ropRef);
+ exchOp.getInputs().add(new MutableObject<>(rop));
MutableObject<ILogicalOperator> exchOpRef = new MutableObject<ILogicalOperator>(exchOp);
rop.getOutputs().add(exchOpRef);
assignOperator.getInputs().add(exchOpRef);
@@ -249,8 +253,11 @@
// set the types
context.computeAndSetTypeEnvironmentForOperator(exchOp);
+ exchOp.recomputeSchema();
context.computeAndSetTypeEnvironmentForOperator(assignOperator);
+ assignOperator.recomputeSchema();
context.computeAndSetTypeEnvironmentForOperator(projectOperator);
+ projectOperator.recomputeSchema();
List<Mutable<ILogicalOperator>> parentOpList = childrenToParents.get(ref);
for (Mutable<ILogicalOperator> parentOpRef : parentOpList) {
@@ -270,8 +277,10 @@
exchg.getInputs().add(new MutableObject<ILogicalOperator>(childOp));
parentOp.getInputs().set(index, new MutableObject<ILogicalOperator>(exchg));
context.computeAndSetTypeEnvironmentForOperator(exchg);
+ exchg.recomputeSchema();
}
context.computeAndSetTypeEnvironmentForOperator(parentOp);
+ parentOp.recomputeSchema();
}
}
cleanupPlan();
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InsertProjectBeforeUnionRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InsertProjectBeforeUnionRule.java
index c4ae57d..5745d9b 100644
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InsertProjectBeforeUnionRule.java
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InsertProjectBeforeUnionRule.java
@@ -82,7 +82,9 @@
projectOp.setPhysicalOperator(new StreamProjectPOperator());
projectOp.setExecutionMode(inputOp.getExecutionMode());
context.computeAndSetTypeEnvironmentForOperator(projectOp);
+ projectOp.recomputeSchema();
context.computeAndSetTypeEnvironmentForOperator(inputOp);
+ inputOp.recomputeSchema();
}
private boolean isIdentical(List<LogicalVariable> finalSchema, List<LogicalVariable> inputSchema)
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
index a724014..ca92331 100644
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
@@ -165,6 +165,7 @@
projectOp.getInputs().add(new MutableObject<ILogicalOperator>(childOp));
op.getInputs().get(i).setValue(projectOp);
context.computeAndSetTypeEnvironmentForOperator(projectOp);
+ projectOp.recomputeSchema();
modified = true;
}
}
@@ -177,11 +178,13 @@
if (liveVars.size() == projectVarsTemp.size() && liveVars.containsAll(projectVarsTemp)) {
// The existing project has become useless. Remove it.
parentOp.getInputs().get(parentInputIndex).setValue(op.getInputs().get(0).getValue());
+ modified = true;
}
}
if (modified) {
context.computeAndSetTypeEnvironmentForOperator(op);
+ op.recomputeSchema();
}
return modified;
}
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IsolateHyracksOperatorsRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IsolateHyracksOperatorsRule.java
index 35b2dea..e13ec30 100644
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IsolateHyracksOperatorsRule.java
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IsolateHyracksOperatorsRule.java
@@ -27,10 +27,8 @@
import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
import org.apache.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator.ExecutionMode;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.physical.OneToOneExchangePOperator;
-import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
public class IsolateHyracksOperatorsRule implements IAlgebraicRewriteRule {
@@ -124,20 +122,17 @@
return false;
}
- private final static void insertOneToOneExchange(Mutable<ILogicalOperator> i, IOptimizationContext context)
+ private static void insertOneToOneExchange(Mutable<ILogicalOperator> inOpRef, IOptimizationContext context)
throws AlgebricksException {
+ ILogicalOperator inOp = inOpRef.getValue();
+
ExchangeOperator e = new ExchangeOperator();
e.setPhysicalOperator(new OneToOneExchangePOperator());
- ILogicalOperator inOp = i.getValue();
-
- e.getInputs().add(new MutableObject<ILogicalOperator>(inOp));
- i.setValue(e);
- // e.recomputeSchema();
- OperatorPropertiesUtil.computeSchemaAndPropertiesRecIfNull(e, context);
- ExecutionMode em = ((AbstractLogicalOperator) inOp).getExecutionMode();
- e.setExecutionMode(em);
- e.computeDeliveredPhysicalProperties(context);
+ e.getInputs().add(new MutableObject<>(inOp));
+ e.setExecutionMode(inOp.getExecutionMode());
context.computeAndSetTypeEnvironmentForOperator(e);
- }
+ e.recomputeSchema();
+ inOpRef.setValue(e);
+ }
}
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushAssignBelowUnionAllRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushAssignBelowUnionAllRule.java
deleted file mode 100644
index 145761c..0000000
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushAssignBelowUnionAllRule.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * 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.hyracks.algebricks.rewriter.rules;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.common.utils.Triple;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnionAllOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-
-/**
- * Pushes an AssignOperator below a UnionAll operator by creating an new AssignOperator below each of
- * the UnionAllOperator's branches with appropriate variable replacements.
- * This rule can help to enable other rules that are difficult to fire across a UnionAllOperator,
- * for example, eliminating common sub-expressions.
- * Example:
- * Before plan:
- * ...
- * assign [$$20, $$21] <- [funcA($$3), funcB($$6)]
- * union ($$1, $$2, $$3) ($$4, $$5, $$6)
- * union_branch_0
- * ...
- * union_branch_1
- * ...
- * After plan:
- * ...
- * union ($$1, $$2, $$3) ($$4, $$5, $$6) ($$22, $$24, $$20) ($$23, $$25, $$21)
- * assign [$$22, $$23] <- [funcA($$1), funcB($$4)]
- * union_branch_0
- * ...
- * assign [$$24, $$25] <- [funcA($$2), funcB($$5)]
- * union_branch_1
- * ...
- */
-public class PushAssignBelowUnionAllRule implements IAlgebraicRewriteRule {
-
- @Override
- public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
- throws AlgebricksException {
- return false;
- }
-
- @Override
- public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
- throws AlgebricksException {
- AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
- if (!op.hasInputs()) {
- return false;
- }
-
- boolean modified = false;
- inputs_loop: for (int i = 0; i < op.getInputs().size(); i++) {
- AbstractLogicalOperator childOp = (AbstractLogicalOperator) op.getInputs().get(i).getValue();
- if (childOp.getOperatorTag() != LogicalOperatorTag.ASSIGN) {
- continue;
- }
- AssignOperator assignOp = (AssignOperator) childOp;
- for (Mutable<ILogicalExpression> expr : assignOp.getExpressions()) {
- if (!expr.getValue().isFunctional()) {
- continue inputs_loop;
- }
- }
-
- AbstractLogicalOperator childOfChildOp = (AbstractLogicalOperator) assignOp.getInputs().get(0).getValue();
- if (childOfChildOp.getOperatorTag() != LogicalOperatorTag.UNIONALL) {
- continue;
- }
- UnionAllOperator unionOp = (UnionAllOperator) childOfChildOp;
- Set<LogicalVariable> assignUsedVars = new HashSet<>();
- VariableUtilities.getUsedVariables(assignOp, assignUsedVars);
- List<LogicalVariable> assignVars = assignOp.getVariables();
- AssignOperator[] newAssignOps = new AssignOperator[2];
- for (int j = 0; j < unionOp.getInputs().size(); j++) {
- newAssignOps[j] = createAssignBelowUnionAllBranch(unionOp, j, assignOp, assignUsedVars, context);
- if (newAssignOps[j] == null) {
- continue inputs_loop;
- }
- }
- // Add original assign variables to the union variable mappings.
- for (int j = 0; j < assignVars.size(); j++) {
- LogicalVariable first = newAssignOps[0].getVariables().get(j);
- LogicalVariable second = newAssignOps[1].getVariables().get(j);
- unionOp.getVariableMappings().add(new Triple<>(first, second, assignVars.get(j)));
- }
- context.computeAndSetTypeEnvironmentForOperator(unionOp);
- // Remove original assign operator.
- op.getInputs().set(i, assignOp.getInputs().get(0));
- context.computeAndSetTypeEnvironmentForOperator(op);
- modified = true;
- }
-
- return modified;
- }
-
- private AssignOperator createAssignBelowUnionAllBranch(UnionAllOperator unionOp, int inputIndex,
- AssignOperator originalAssignOp, Set<LogicalVariable> assignUsedVars, IOptimizationContext context)
- throws AlgebricksException {
- AssignOperator newAssignOp = cloneAssignOperator(originalAssignOp, context, unionOp, inputIndex);
- if (newAssignOp == null) {
- return null;
- }
- newAssignOp.getInputs().add(new MutableObject<>(unionOp.getInputs().get(inputIndex).getValue()));
- unionOp.getInputs().get(inputIndex).setValue(newAssignOp);
- int numVarMappings = unionOp.getVariableMappings().size();
- for (int i = 0; i < numVarMappings; i++) {
- Triple<LogicalVariable, LogicalVariable, LogicalVariable> varMapping = unionOp.getVariableMappings().get(i);
- if (assignUsedVars.contains(varMapping.third)) {
- LogicalVariable replacementVar;
- if (inputIndex == 0) {
- replacementVar = varMapping.first;
- } else {
- replacementVar = varMapping.second;
- }
- VariableUtilities.substituteVariables(newAssignOp, varMapping.third, replacementVar, context);
- }
- }
- context.computeAndSetTypeEnvironmentForOperator(newAssignOp);
- return newAssignOp;
- }
-
- /**
- * Clones the given assign operator changing the returned variables to be new ones.
- * Also, leaves the inputs of the clone clear. It returns null if the assign operator cannot be pushed.
- */
- private AssignOperator cloneAssignOperator(AssignOperator assignOp, IOptimizationContext context,
- UnionAllOperator unionOp, int inputIndex) throws AlgebricksException {
- List<LogicalVariable> vars = new ArrayList<>();
- List<Mutable<ILogicalExpression>> exprs = new ArrayList<>();
- int numVars = assignOp.getVariables().size();
- for (int i = 0; i < numVars; i++) {
- vars.add(context.newVar());
- ILogicalExpression clonedExpression = assignOp.getExpressions().get(i).getValue().cloneExpression();
- if (!modifyExpression(clonedExpression, unionOp, context, inputIndex)) {
- return null; // bail if the expression couldn't be modified according to the branch it is moved to
- }
- exprs.add(new MutableObject<>(clonedExpression));
- }
- AssignOperator assignCloneOp = new AssignOperator(vars, exprs);
- assignCloneOp.setSourceLocation(assignOp.getSourceLocation());
- assignCloneOp.setExecutionMode(assignOp.getExecutionMode());
- return assignCloneOp;
- }
-
- // modifies the cloned expression according to the branch it'll be moved to. returns true if successful.
- protected boolean modifyExpression(ILogicalExpression expression, UnionAllOperator unionOp,
- IOptimizationContext ctx, int inputIndex) throws AlgebricksException {
- // default implementation does not check specific expressions
- return true;
- }
-}
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushMapOperatorThroughUnionRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushMapOperatorThroughUnionRule.java
new file mode 100644
index 0000000..3c468be
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushMapOperatorThroughUnionRule.java
@@ -0,0 +1,185 @@
+/*
+ * 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.hyracks.algebricks.rewriter.rules;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.common.utils.Triple;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnionAllOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.LogicalOperatorDeepCopyWithNewVariablesVisitor;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
+import org.apache.hyracks.algebricks.core.algebra.util.OperatorManipulationUtil;
+import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
+import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
+import org.apache.hyracks.api.exceptions.ErrorCode;
+
+/**
+ * @author kereno, ecarm002, ildar.absalyamov
+ * Pushes down 'map' operator through both branches of the union-all operator
+ * Before rule:
+ * ============
+ * map_op
+ * union-all (left_branch, right_branch, res)
+ * left_branch
+ * left_op_1
+ * ...
+ * right_branch
+ * right_op_1
+ *
+ * After rule:
+ * ============
+ * union-all (left_branch, right_branch, res)
+ * left_branch
+ * map_op
+ * left_op_1
+ * right_branch
+ * map_op
+ * right_op_1
+ */
+public abstract class PushMapOperatorThroughUnionRule implements IAlgebraicRewriteRule {
+
+ @Override
+ public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) {
+ return false;
+ }
+
+ protected boolean isOperatorKindPushableThroughUnion(ILogicalOperator op) {
+ return op.isMap();
+ }
+
+ @Override
+ public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+ throws AlgebricksException {
+ AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
+
+ boolean pushable = isOperatorKindPushableThroughUnion(op) && OperatorPropertiesUtil.isMovable(op);
+ if (!pushable) {
+ return false;
+ }
+
+ Mutable<ILogicalOperator> inputOpRef = op.getInputs().get(0);
+ AbstractLogicalOperator inputOp = (AbstractLogicalOperator) inputOpRef.getValue();
+ if (inputOp.getOperatorTag() != LogicalOperatorTag.UNIONALL) {
+ return false;
+ }
+ UnionAllOperator unionAllOp = (UnionAllOperator) inputOp;
+
+ List<LogicalVariable> opProducedVars = new ArrayList<>();
+ VariableUtilities.getProducedVariables(op, opProducedVars);
+
+ Set<LogicalVariable> opUsedVars = new HashSet<>();
+ VariableUtilities.getUsedVariables(op, opUsedVars);
+
+ Pair<ILogicalOperator, Map<LogicalVariable, LogicalVariable>> leftBranchPair =
+ insertIntoBranch(op, opUsedVars, unionAllOp, 0, context);
+ if (leftBranchPair == null) {
+ return false;
+ }
+ ILogicalOperator leftBranchRootOp = leftBranchPair.first;
+ // < original produced var, new produced variable in left branch >
+ Map<LogicalVariable, LogicalVariable> leftBranchProducedVarMap = leftBranchPair.second;
+
+ Pair<ILogicalOperator, Map<LogicalVariable, LogicalVariable>> rightBranchPair =
+ insertIntoBranch(op, opUsedVars, unionAllOp, 1, context);
+ if (rightBranchPair == null) {
+ return false;
+ }
+ ILogicalOperator rightBranchRootOp = rightBranchPair.first;
+ // < original produced var, new produced variable in right branch >
+ Map<LogicalVariable, LogicalVariable> rightBranchProducedVarMap = rightBranchPair.second;
+
+ UnionAllOperator newUnionAllOp = (UnionAllOperator) OperatorManipulationUtil.deepCopy(unionAllOp);
+ newUnionAllOp.getInputs().add(new MutableObject<>(leftBranchRootOp));
+ newUnionAllOp.getInputs().add(new MutableObject<>(rightBranchRootOp));
+
+ for (LogicalVariable opProducedVar : opProducedVars) {
+ LogicalVariable leftBranchProducedVar = leftBranchProducedVarMap.get(opProducedVar);
+ if (leftBranchProducedVar == null) {
+ throw AlgebricksException.create(ErrorCode.COMPILATION_ILLEGAL_STATE, op.getSourceLocation(),
+ "Cannot find " + opProducedVar);
+ }
+ LogicalVariable rightBranchProducedVar = rightBranchProducedVarMap.get(opProducedVar);
+ if (rightBranchProducedVar == null) {
+ throw AlgebricksException.create(ErrorCode.COMPILATION_ILLEGAL_STATE, op.getSourceLocation(),
+ "Cannot find " + opProducedVar);
+ }
+
+ newUnionAllOp.getVariableMappings()
+ .add(new Triple<>(leftBranchProducedVar, rightBranchProducedVar, opProducedVar));
+ }
+
+ context.computeAndSetTypeEnvironmentForOperator(newUnionAllOp);
+ opRef.setValue(newUnionAllOp);
+
+ return true;
+ }
+
+ private Pair<ILogicalOperator, Map<LogicalVariable, LogicalVariable>> insertIntoBranch(AbstractLogicalOperator op,
+ Set<LogicalVariable> opUsedVars, UnionAllOperator unionAllOp, int branchIdx, IOptimizationContext context)
+ throws AlgebricksException {
+ ILogicalOperator branchRootOp = unionAllOp.getInputs().get(branchIdx).getValue();
+ Pair<ILogicalOperator, Map<LogicalVariable, LogicalVariable>> newBranchRootOpPair =
+ deepCopyForBranch(op, opUsedVars, unionAllOp, branchIdx, context);
+ if (newBranchRootOpPair == null) {
+ return null;
+ }
+
+ ILogicalOperator newBranchRootOp = newBranchRootOpPair.first;
+ newBranchRootOp.getInputs().get(0).setValue(branchRootOp);
+ context.computeAndSetTypeEnvironmentForOperator(newBranchRootOp);
+
+ // [ operator, < original produced var, new variable (produced in branch) > ]
+ return newBranchRootOpPair;
+ }
+
+ protected Pair<ILogicalOperator, Map<LogicalVariable, LogicalVariable>> deepCopyForBranch(ILogicalOperator op,
+ Set<LogicalVariable> opUsedVars, UnionAllOperator unionAllOp, int branchIdx, IOptimizationContext context)
+ throws AlgebricksException {
+ // < union-output-var, union-branch-var >
+ LinkedHashMap<LogicalVariable, LogicalVariable> usedVarsMapping = new LinkedHashMap<>();
+ for (Triple<LogicalVariable, LogicalVariable, LogicalVariable> t : unionAllOp.getVariableMappings()) {
+ LogicalVariable unionOutputVar = t.third;
+ if (opUsedVars.contains(unionOutputVar)) {
+ LogicalVariable branchVar = branchIdx == 0 ? t.first : t.second;
+ usedVarsMapping.put(unionOutputVar, branchVar);
+ }
+ }
+
+ LogicalOperatorDeepCopyWithNewVariablesVisitor deepCopyVisitor =
+ new LogicalOperatorDeepCopyWithNewVariablesVisitor(context, null, usedVarsMapping, true);
+ ILogicalOperator newOp = deepCopyVisitor.deepCopy(op);
+
+ return new Pair<>(newOp, deepCopyVisitor.getInputToOutputVariableMapping());
+ }
+}
\ No newline at end of file
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushProjectDownRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushProjectDownRule.java
index 9457b60..c919195 100644
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushProjectDownRule.java
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushProjectDownRule.java
@@ -68,7 +68,9 @@
Set<LogicalVariable> toPush = new LinkedHashSet<LogicalVariable>();
toPush.addAll(pi.getVariables());
- Pair<Boolean, Boolean> p = pushThroughOp(toPush, opRef2, op, context);
+ boolean recomputeSchema = op.getSchema() != null;
+
+ Pair<Boolean, Boolean> p = pushThroughOp(toPush, opRef2, op, context, recomputeSchema);
boolean smthWasPushed = p.first;
if (p.second) { // the original projection is redundant
opRef.setValue(op.getInputs().get(0).getValue());
@@ -79,7 +81,8 @@
}
private static Pair<Boolean, Boolean> pushThroughOp(Set<LogicalVariable> toPush, Mutable<ILogicalOperator> opRef2,
- ILogicalOperator initialOp, IOptimizationContext context) throws AlgebricksException {
+ ILogicalOperator initialOp, IOptimizationContext context, boolean recomputeSchema)
+ throws AlgebricksException {
List<LogicalVariable> initProjectList = new ArrayList<LogicalVariable>(toPush);
AbstractLogicalOperator op2 = (AbstractLogicalOperator) opRef2.getValue();
do {
@@ -135,6 +138,9 @@
gby.getDecorList().addAll(newDecorList);
if (gbyChanged) {
context.computeAndSetTypeEnvironmentForOperator(gby);
+ if (recomputeSchema) {
+ gby.recomputeSchema();
+ }
}
}
used2.clear();
@@ -149,7 +155,7 @@
boolean smthWasPushed = false;
for (Mutable<ILogicalOperator> c : op2.getInputs()) {
- if (pushNeededProjections(toPush, c, context, initialOp)) {
+ if (pushNeededProjections(toPush, c, context, initialOp, recomputeSchema)) {
smthWasPushed = true;
}
}
@@ -157,7 +163,7 @@
AbstractOperatorWithNestedPlans n = (AbstractOperatorWithNestedPlans) op2;
for (ILogicalPlan p : n.getNestedPlans()) {
for (Mutable<ILogicalOperator> r : p.getRoots()) {
- if (pushNeededProjections(toPush, r, context, initialOp)) {
+ if (pushNeededProjections(toPush, r, context, initialOp, recomputeSchema)) {
smthWasPushed = true;
}
}
@@ -168,7 +174,8 @@
// It does not try to push above another Projection.
private static boolean pushNeededProjections(Set<LogicalVariable> toPush, Mutable<ILogicalOperator> opRef,
- IOptimizationContext context, ILogicalOperator initialOp) throws AlgebricksException {
+ IOptimizationContext context, ILogicalOperator initialOp, boolean recomputeSchema)
+ throws AlgebricksException {
Set<LogicalVariable> allP = new LinkedHashSet<LogicalVariable>();
AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
VariableUtilities.getSubplanLocalLiveVariables(op, allP);
@@ -183,19 +190,19 @@
// projection would be redundant, since we would project everything
// but we can try with the children
boolean push = false;
- if (pushThroughOp(toProject, opRef, initialOp, context).first) {
+ if (pushThroughOp(toProject, opRef, initialOp, context, recomputeSchema).first) {
push = true;
}
return push;
} else {
- return pushAllProjectionsOnTopOf(toProject, opRef, context, initialOp);
+ return pushAllProjectionsOnTopOf(toProject, opRef, context, initialOp, recomputeSchema);
}
}
// It does not try to push above another Projection.
private static boolean pushAllProjectionsOnTopOf(Collection<LogicalVariable> toPush,
- Mutable<ILogicalOperator> opRef, IOptimizationContext context, ILogicalOperator initialOp)
- throws AlgebricksException {
+ Mutable<ILogicalOperator> opRef, IOptimizationContext context, ILogicalOperator initialOp,
+ boolean recomputeSchema) throws AlgebricksException {
if (toPush.isEmpty()) {
return false;
}
@@ -215,6 +222,9 @@
opRef.setValue(pi2);
pi2.setExecutionMode(op.getExecutionMode());
context.computeAndSetTypeEnvironmentForOperator(pi2);
+ if (recomputeSchema) {
+ pi2.recomputeSchema();
+ }
return true;
}
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushUnnestDownThroughUnionRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushUnnestDownThroughUnionRule.java
deleted file mode 100644
index 434faff..0000000
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushUnnestDownThroughUnionRule.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * 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.hyracks.algebricks.rewriter.rules;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.common.utils.Triple;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnionAllOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-
-/**
- * @author kereno, ecarm002, ildar.absalyamov
- * Pushes down unnest through both branches of the union operator
- * Before rule:
- * ============
- * unnest
- * union (left_branch, right_branch, res)
- * left_branch
- * right_branch
- * After rule:
- * ============
- * union (left_branch, right_branch, res)
- * unnest
- * left_branch
- * unnest
- * right_branch
- */
-public class PushUnnestDownThroughUnionRule implements IAlgebraicRewriteRule {
-
- @Override
- public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) {
- return false;
- }
-
- @Override
- public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
- throws AlgebricksException {
-
- AbstractLogicalOperator unnest = (AbstractLogicalOperator) opRef.getValue();
- if (unnest.getOperatorTag() != LogicalOperatorTag.UNNEST) {
- return false;
- }
- UnnestOperator unnestOpRef = (UnnestOperator) opRef.getValue();
- Mutable<ILogicalOperator> unionOp = unnest.getInputs().get(0);
-
- AbstractLogicalOperator unionAbstractOp = (AbstractLogicalOperator) unionOp.getValue();
- if (unionAbstractOp.getOperatorTag() != LogicalOperatorTag.UNIONALL) {
- return false;
- }
-
- LogicalVariable unnestVar1 = context.newVar();
- UnnestOperator unnest1 = new UnnestOperator(unnestVar1,
- new MutableObject<ILogicalExpression>(unnestOpRef.getExpressionRef().getValue().cloneExpression()));
- LogicalVariable unnestVar2 = context.newVar();
- UnnestOperator unnest2 = new UnnestOperator(unnestVar2,
- new MutableObject<ILogicalExpression>(unnestOpRef.getExpressionRef().getValue().cloneExpression()));
-
- //Getting the two topmost branched and adding them as an input to the unnests:
- Mutable<ILogicalOperator> branch1 = unionAbstractOp.getInputs().get(0);
- ILogicalOperator agg1 = branch1.getValue();
- List<LogicalVariable> agg1_var = new ArrayList<LogicalVariable>();
- VariableUtilities.getLiveVariables(agg1, agg1_var);
- Mutable<ILogicalOperator> branch2 = unionAbstractOp.getInputs().get(1);
- ILogicalOperator agg2 = branch2.getValue();
- List<LogicalVariable> agg2_var = new ArrayList<LogicalVariable>();
- VariableUtilities.getLiveVariables(agg2, agg2_var);
-
- //Modifying the unnest so it has the right variable
- List<LogicalVariable> var_unnest_1 = new ArrayList<LogicalVariable>();
- unnest1.getExpressionRef().getValue().getUsedVariables(var_unnest_1);
- unnest1.getExpressionRef().getValue().substituteVar(var_unnest_1.get(0), agg1_var.get(0));
-
- List<LogicalVariable> var_unnest2 = new ArrayList<LogicalVariable>();
- unnest2.getExpressionRef().getValue().getUsedVariables(var_unnest2);
- unnest2.getExpressionRef().getValue().substituteVar(var_unnest2.get(0), agg2_var.get(0));
-
- unnest1.getInputs().add(branch1);
- unnest2.getInputs().add(branch2);
- context.computeAndSetTypeEnvironmentForOperator(unnest1);
- context.computeAndSetTypeEnvironmentForOperator(unnest2);
-
- //creating a new union operator with the updated logical variables
- List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> varMap =
- new ArrayList<Triple<LogicalVariable, LogicalVariable, LogicalVariable>>(1);
- Triple<LogicalVariable, LogicalVariable, LogicalVariable> union_triple_vars =
- new Triple<LogicalVariable, LogicalVariable, LogicalVariable>(unnestVar1, unnestVar2,
- unnestOpRef.getVariables().get(0));
- varMap.add(union_triple_vars);
- UnionAllOperator unionOpFinal = new UnionAllOperator(varMap);
-
- unionOpFinal.getInputs().add(new MutableObject<ILogicalOperator>(unnest1));
- unionOpFinal.getInputs().add(new MutableObject<ILogicalOperator>(unnest2));
-
- context.computeAndSetTypeEnvironmentForOperator(unionOpFinal);
-
- opRef.setValue(unionOpFinal);
- return true;
-
- }
-}
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantVariablesInUnionRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantVariablesInUnionRule.java
new file mode 100644
index 0000000..fc9bb05
--- /dev/null
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantVariablesInUnionRule.java
@@ -0,0 +1,142 @@
+/*
+ * 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.hyracks.algebricks.rewriter.rules;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Triple;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnionAllOperator;
+import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
+import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
+
+/**
+ * Removes redundant variable mapping from the union-all operator as follows:
+ * <p>
+ * Before rule:
+ * <pre>
+ * union-all([$left, $right, $out_1], [$left, $right, $out_2])
+ * </pre>
+ * <p>
+ * After rule:
+ * <pre>
+ * assign $out_2 := $out_1
+ * union-all([$left, $right, $out_1])
+ * </pre>
+ * Notes:
+ * <ul>
+ * <li>
+ * The new assign operator is annotated as {@link OperatorPropertiesUtil#MOVABLE non-movable}
+ * to prevent it from being pushed back into the union-all by {@link PushMapOperatorThroughUnionRule}.
+ * It is supposed to be removed later by {@link RemoveUnusedAssignAndAggregateRule}.
+ * <li>
+ * This rule is supposed to run during logical optimization stage because
+ * it does not compute schema for the new assign operator
+ * </ul>
+ */
+public final class RemoveRedundantVariablesInUnionRule implements IAlgebraicRewriteRule {
+
+ @Override
+ public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context) {
+ return false;
+ }
+
+ @Override
+ public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+ throws AlgebricksException {
+ ILogicalOperator op = opRef.getValue();
+ if (op.getOperatorTag() != LogicalOperatorTag.UNIONALL) {
+ return false;
+ }
+
+ if (context.checkIfInDontApplySet(this, op)) {
+ return false;
+ }
+
+ UnionAllOperator unionAllOp = (UnionAllOperator) op;
+ List<LogicalVariable> newAssignVars = null;
+ List<Mutable<ILogicalExpression>> newAssignExprs = null;
+
+ List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> varMappings = unionAllOp.getVariableMappings();
+
+ for (int i = 0; i < varMappings.size();) {
+ Triple<LogicalVariable, LogicalVariable, LogicalVariable> varMapping = varMappings.get(i);
+ LogicalVariable existingOutputVar = findVarMapping(varMappings, i, varMapping.first, varMapping.second);
+ if (existingOutputVar != null) {
+ LogicalVariable thisOutputVar = varMapping.third;
+ if (newAssignVars == null) {
+ newAssignVars = new ArrayList<>();
+ newAssignExprs = new ArrayList<>();
+ }
+ VariableReferenceExpression existingOutputVarRef = new VariableReferenceExpression(existingOutputVar);
+ existingOutputVarRef.setSourceLocation(unionAllOp.getSourceLocation());
+ newAssignVars.add(thisOutputVar);
+ newAssignExprs.add(new MutableObject<>(existingOutputVarRef));
+
+ varMappings.remove(i);
+ } else {
+ i++;
+ }
+ }
+
+ if (newAssignVars == null) {
+ return false;
+ }
+
+ AssignOperator newAssignOp = new AssignOperator(newAssignVars, newAssignExprs);
+ newAssignOp.setSourceLocation(unionAllOp.getSourceLocation());
+ newAssignOp.getInputs().add(new MutableObject<>(unionAllOp));
+
+ // this Assign is supposed to be removed later by RemoveUnusedAssignAndAggregateRule.
+ // mark it as non-movable to prevent PushMapThroughUnionRule from pushing it back into the UnionAll operator
+ OperatorPropertiesUtil.markMovable(newAssignOp, false);
+
+ context.computeAndSetTypeEnvironmentForOperator(unionAllOp);
+ context.computeAndSetTypeEnvironmentForOperator(newAssignOp);
+ opRef.setValue(newAssignOp);
+
+ context.addToDontApplySet(this, unionAllOp);
+
+ return true;
+ }
+
+ private static LogicalVariable findVarMapping(
+ List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> varMappings, int endIndexExclusive,
+ LogicalVariable firstBranchVar, LogicalVariable secondBranchVar) {
+ int n = Math.min(endIndexExclusive, varMappings.size());
+ for (int i = 0; i < n; i++) {
+ Triple<LogicalVariable, LogicalVariable, LogicalVariable> t = varMappings.get(i);
+ if (t.first.equals(firstBranchVar) && t.second.equals(secondBranchVar)) {
+ return t.third;
+ }
+ }
+ return null;
+ }
+}
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/PushSubplanIntoGroupByRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/PushSubplanIntoGroupByRule.java
index 8e41a15..6d5d67d 100644
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/PushSubplanIntoGroupByRule.java
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/PushSubplanIntoGroupByRule.java
@@ -204,7 +204,7 @@
newGbyNestedPlans.add(new ALogicalPlanImpl(rootOpRef));
upperSubplanRootRefIterator.remove();
- changed |= true;
+ changed = true;
break;
}
}
@@ -212,10 +212,12 @@
if (upperSubplanRootRefs.isEmpty()) {
subplanNestedPlanIterator.remove();
+ changed = true;
}
}
if (subplan.getNestedPlans().isEmpty()) {
subplanOperatorIterator.remove();
+ changed = true;
}
}
@@ -228,7 +230,7 @@
parent.getInputs().get(0).setValue(gby);
// Removes unnecessary pipelines inside the group by operator.
- cleanup(currentRootRef.getValue(), gby);
+ changed |= cleanup(currentRootRef.getValue(), gby);
// Computes type environments.
context.computeAndSetTypeEnvironmentForOperator(gby);
@@ -245,7 +247,8 @@
* the group-by operator.
* @throws AlgebricksException
*/
- private void cleanup(ILogicalOperator rootOp, GroupByOperator gby) throws AlgebricksException {
+ private boolean cleanup(ILogicalOperator rootOp, GroupByOperator gby) throws AlgebricksException {
+ boolean changed = false;
Set<LogicalVariable> freeVars = new HashSet<>();
OperatorPropertiesUtil.getFreeVariablesInPath(rootOp, gby, freeVars);
Iterator<ILogicalPlan> nestedPlanIterator = gby.getNestedPlans().iterator();
@@ -259,16 +262,20 @@
if (!freeVars.contains(aggOp.getVariables().get(varIndex))) {
aggOp.getVariables().remove(varIndex);
aggOp.getExpressions().remove(varIndex);
+ changed = true;
}
}
if (aggOp.getVariables().isEmpty()) {
nestRootRefIterator.remove();
+ changed = true;
}
}
if (nestedPlan.getRoots().isEmpty()) {
nestedPlanIterator.remove();
+ changed = true;
}
}
+ return changed;
}
private Mutable<ILogicalOperator> downToNts(Mutable<ILogicalOperator> opRef) {
diff --git a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingPositionWriter.java b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingPositionWriter.java
deleted file mode 100644
index 092d22e..0000000
--- a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingPositionWriter.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.hyracks.algebricks.runtime.base;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-public interface IUnnestingPositionWriter {
- public void write(DataOutput dataOutput, long position) throws IOException;
-}
diff --git a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/AbstractOneInputOneOutputOneFramePushRuntime.java b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/AbstractOneInputOneOutputOneFramePushRuntime.java
index 71b44d3..9f4541f5 100644
--- a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/AbstractOneInputOneOutputOneFramePushRuntime.java
+++ b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/AbstractOneInputOneOutputOneFramePushRuntime.java
@@ -70,13 +70,11 @@
}
protected void flushAndReset() throws HyracksDataException {
- if (appender.getTupleCount() > 0) {
- appender.write(writer, true);
- }
+ appender.write(writer, true);
}
protected void flushIfNotFailed() throws HyracksDataException {
- if (!failed) {
+ if (!failed && appender.getTupleCount() > 0) {
flushAndReset();
}
}
diff --git a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/SubplanRuntimeFactory.java b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/SubplanRuntimeFactory.java
index 3cee12d..6e5c2c9 100644
--- a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/SubplanRuntimeFactory.java
+++ b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/SubplanRuntimeFactory.java
@@ -224,7 +224,9 @@
for (int t = 0; t < nTuple; t++) {
appendConcat(tRef.getFrameTupleAccessor(), tRef.getTupleIndex(), ta, t);
}
- smthWasWritten = true;
+ if (nTuple > 0) {
+ smthWasWritten = true;
+ }
}
@Override
diff --git a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/UnnestRuntimeFactory.java b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/UnnestRuntimeFactory.java
index 74e182b..9ee5a48 100644
--- a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/UnnestRuntimeFactory.java
+++ b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/UnnestRuntimeFactory.java
@@ -24,10 +24,11 @@
import java.io.IOException;
import java.nio.ByteBuffer;
+import org.apache.hyracks.algebricks.data.IUnnestingPositionWriter;
+import org.apache.hyracks.algebricks.data.IUnnestingPositionWriterFactory;
import org.apache.hyracks.algebricks.runtime.base.IEvaluatorContext;
import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluatorFactory;
-import org.apache.hyracks.algebricks.runtime.base.IUnnestingPositionWriter;
import org.apache.hyracks.algebricks.runtime.evaluators.EvaluatorContext;
import org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime;
import org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputRuntimeFactory;
@@ -46,7 +47,7 @@
private final int outCol;
private final IUnnestingEvaluatorFactory unnestingFactory;
private final boolean unnestColIsProjected;
- private final IUnnestingPositionWriter positionWriter;
+ private final IUnnestingPositionWriterFactory positionWriterFactory;
private final boolean leftOuter;
private final IMissingWriterFactory missingWriterFactory;
private int outColPos;
@@ -57,7 +58,8 @@
}
public UnnestRuntimeFactory(int outCol, IUnnestingEvaluatorFactory unnestingFactory, int[] projectionList,
- IUnnestingPositionWriter positionWriter, boolean leftOuter, IMissingWriterFactory missingWriterFactory) {
+ IUnnestingPositionWriterFactory positionWriterFactory, boolean leftOuter,
+ IMissingWriterFactory missingWriterFactory) {
super(projectionList);
this.outCol = outCol;
this.unnestingFactory = unnestingFactory;
@@ -68,7 +70,7 @@
}
}
unnestColIsProjected = outColPos >= 0;
- this.positionWriter = positionWriter;
+ this.positionWriterFactory = positionWriterFactory;
this.leftOuter = leftOuter;
this.missingWriterFactory = missingWriterFactory;
}
@@ -94,6 +96,8 @@
private IPointable p = VoidPointable.FACTORY.createPointable();
private ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(projectionList.length);
private IUnnestingEvaluator unnest = unnestingFactory.createUnnestingEvaluator(evalCtx);
+ private final IUnnestingPositionWriter positionWriter =
+ positionWriterFactory != null ? positionWriterFactory.createUnnestingPositionWriter() : null;
@Override
public void open() throws HyracksDataException {
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java
index 16ba168..a93da48 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java
@@ -158,6 +158,7 @@
public static final int ERROR_PRINTING_PLAN = 122;
public static final int INSUFFICIENT_MEMORY = 123;
public static final int PARSING_ERROR = 124;
+ public static final int INVALID_INVERTED_LIST_TYPE_TRAITS = 125;
// Compilation error codes.
public static final int RULECOLLECTION_NOT_INSTANCE_OF_LIST = 10000;
@@ -169,6 +170,7 @@
public static final int INAPPLICABLE_HINT = 10006;
public static final int CROSS_PRODUCT_JOIN = 10007;
public static final int GROUP_ALL_DECOR = 10008;
+ public static final int COMPILATION_ILLEGAL_STATE = 10009;
private static class Holder {
private static final Map<Integer, String> errorMessageMap;
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties b/hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties
index 7423419..01895a6 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties
@@ -142,6 +142,7 @@
122 = Encountered an error while printing the plan
123 = Insufficient memory is provided for the join operators, please increase the join memory budget.
124 = Parsing error at %1$s line %2$s field %3$s: %4$s
+125 = Invalid inverted list type traits: %1$s
10000 = The given rule collection %1$s is not an instance of the List class.
10001 = Cannot compose partition constraint %1$s with %2$s
@@ -151,4 +152,5 @@
10005 = Operator is not implemented: %1$s
10006 = Could not apply %1$s hint: %2$s
10007 = Encountered a cross product join
-10008 = Inappropriate use of group by all with decor variables
\ No newline at end of file
+10008 = Inappropriate use of group by all with decor variables
+10009 = Illegal state. %1$s
\ No newline at end of file
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigManager.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigManager.java
index c175dd4..0ba9090 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigManager.java
@@ -18,6 +18,8 @@
*/
package org.apache.hyracks.control.common.config;
+import static org.apache.hyracks.control.common.config.OptionTypes.COLLECTION_TYPES;
+
import java.io.IOException;
import java.io.Serializable;
import java.lang.reflect.Array;
@@ -340,17 +342,27 @@
throw new HyracksException("Unknown section in ini: " + section.getName());
}
Map<String, IOption> optionMap = getSectionOptionMap(rootSection);
- for (Map.Entry<String, String> iniOption : section.entrySet()) {
- String name = iniOption.getKey();
+ for (String name : section.keySet()) {
final IOption option = optionMap == null ? null : optionMap.get(name);
if (option == null) {
handleUnknownOption(section, name);
return;
}
- final String value = iniOption.getValue();
- LOGGER.debug("setting " + option.toIniString() + " to " + value);
- final Object parsed = option.type().parse(value);
- invokeSetters(option, parsed, node);
+ final List<String> values = section.getAll(name);
+ if (values.size() <= 1) {
+ LOGGER.debug("setting " + option.toIniString() + " to " + values.get(0));
+ final Object parsed = option.type().parse(values.get(0));
+ invokeSetters(option, parsed, node);
+ } else {
+ if (option.type().targetType().isArray()) {
+ Object[] val = values.stream()
+ .map(v -> ((String) (COLLECTION_TYPES.get(option.type()).parse(v)))).toArray();
+ invokeSetters(option, Arrays.copyOf(val, val.length, option.type().targetType()), node);
+ } else {
+ throw new HyracksException(
+ "Multiple option values specified for unary option" + option.toIniString());
+ }
+ }
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigUtils.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigUtils.java
index 1cc739c..c95a3d1 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigUtils.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/ConfigUtils.java
@@ -37,6 +37,7 @@
import org.apache.hyracks.api.config.Section;
import org.apache.hyracks.api.config.SerializedOption;
import org.apache.hyracks.control.common.controllers.ControllerConfig;
+import org.ini4j.Config;
import org.ini4j.Ini;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
@@ -88,6 +89,9 @@
public static Ini loadINIFile(String configFile) throws IOException {
Ini ini = new Ini();
+ Config conf = new Config();
+ conf.setMultiOption(true);
+ ini.setConfig(conf);
File conffile = new File(configFile);
if (!conffile.exists()) {
throw new FileNotFoundException(configFile);
@@ -98,6 +102,9 @@
public static Ini loadINIFile(URL configURL) throws IOException {
Ini ini = new Ini();
+ Config conf = new Config();
+ conf.setMultiOption(true);
+ ini.setConfig(conf);
ini.load(configURL);
return ini;
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/OptionTypes.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/OptionTypes.java
index 7088e08..0dcb7a4 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/OptionTypes.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/config/OptionTypes.java
@@ -20,7 +20,10 @@
import java.net.MalformedURLException;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.stream.Stream;
import org.apache.hyracks.api.config.IOptionType;
@@ -388,6 +391,13 @@
}
};
+ static Map<IOptionType, IOptionType> COLLECTION_TYPES;
+ static {
+ Map<IOptionType, IOptionType> collTypes = new HashMap<>();
+ collTypes.put(STRING_ARRAY, STRING);
+ COLLECTION_TYPES = Collections.unmodifiableMap(collTypes);
+ }
+
private OptionTypes() {
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NCConfig.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NCConfig.java
index 510db51..eaf0418 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NCConfig.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NCConfig.java
@@ -18,6 +18,7 @@
*/
package org.apache.hyracks.control.common.controllers;
+import static org.apache.hyracks.control.common.config.OptionTypes.BOOLEAN;
import static org.apache.hyracks.control.common.config.OptionTypes.INTEGER;
import static org.apache.hyracks.control.common.config.OptionTypes.INTEGER_BYTE_UNIT;
import static org.apache.hyracks.control.common.config.OptionTypes.LONG;
@@ -91,7 +92,10 @@
KEY_STORE_PASSWORD(STRING, (String) null),
IO_WORKERS_PER_PARTITION(POSITIVE_INTEGER, 2),
IO_QUEUE_SIZE(POSITIVE_INTEGER, 10),
- PYTHON_HOME(STRING, "/usr/bin/python3");
+ PYTHON_CMD(STRING, (String) null),
+ PYTHON_ADDITIONAL_PACKAGES(STRING_ARRAY, (String[]) null),
+ PYTHON_USE_BUNDLED_MSGPACK(BOOLEAN, true),
+ PYTHON_ARGS(STRING_ARRAY, (String[]) null);
private final IOptionType parser;
private final String defaultValueDescription;
@@ -224,8 +228,14 @@
return "Number of threads per partition used to write and read from storage";
case IO_QUEUE_SIZE:
return "Length of the queue used for requests to write and read";
- case PYTHON_HOME:
- return "Path to python interpreter";
+ case PYTHON_CMD:
+ return "Absolute path to python interpreter. Defaults to environmental Python3";
+ case PYTHON_ADDITIONAL_PACKAGES:
+ return "List of additional paths, separated by a path separator character, to add to sys.path behind msgpack and library package paths";
+ case PYTHON_USE_BUNDLED_MSGPACK:
+ return "True to include bundled msgpack on Python sys.path, false to use system-provided msgpack";
+ case PYTHON_ARGS:
+ return "Python args to pass to Python interpreter";
default:
throw new IllegalStateException("Not yet implemented: " + this);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/CCNCFunctions.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/CCNCFunctions.java
index 2ba4768..6b5b5db 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/CCNCFunctions.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/CCNCFunctions.java
@@ -70,6 +70,7 @@
import org.apache.hyracks.control.common.job.profiling.om.TaskProfile;
import org.apache.hyracks.ipc.api.IPayloadSerializerDeserializer;
import org.apache.hyracks.ipc.impl.JavaSerializationBasedPayloadSerializerDeserializer;
+import org.apache.hyracks.ipc.impl.Message;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -1431,12 +1432,12 @@
}
@Override
- public Object deserializeObject(ByteBuffer buffer, int length) throws Exception {
+ public Object deserializeObject(ByteBuffer buffer, int length, byte flag) throws Exception {
if (length < FID_CODE_SIZE) {
throw new IllegalStateException("Message size too small: " + length);
}
byte fid = buffer.get();
- return deserialize(fid, buffer, length - FID_CODE_SIZE);
+ return deserialize(fid, buffer, length - FID_CODE_SIZE, flag);
}
@Override
@@ -1448,7 +1449,7 @@
if (fid != FunctionId.OTHER.ordinal()) {
throw new IllegalStateException("Expected FID for OTHER, found: " + fid);
}
- return (Exception) deserialize(fid, buffer, length - FID_CODE_SIZE);
+ return (Exception) deserialize(fid, buffer, length - FID_CODE_SIZE, Message.ERROR);
}
@Override
@@ -1515,7 +1516,7 @@
JavaSerializationBasedPayloadSerializerDeserializer.serialize(out, object);
}
- private Object deserialize(byte fid, ByteBuffer buffer, int length) throws Exception {
+ private Object deserialize(byte fid, ByteBuffer buffer, int length, byte flag) throws Exception {
switch (FunctionId.values()[fid]) {
case REGISTER_PARTITION_PROVIDER:
return RegisterPartitionProviderFunction.deserialize(buffer, length);
@@ -1542,7 +1543,7 @@
return CleanupJobletFunction.deserialize(buffer, length);
}
- return javaSerde.deserializeObject(buffer, length);
+ return javaSerde.deserializeObject(buffer, length, flag);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/pom.xml b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/pom.xml
index c0091f0..a11d8de 100644
--- a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/pom.xml
+++ b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/pom.xml
@@ -32,10 +32,6 @@
</properties>
<dependencies>
<dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- </dependency>
- <dependency>
<groupId>org.apache.hyracks</groupId>
<artifactId>hyracks-util</artifactId>
<version>${project.version}</version>
@@ -56,5 +52,9 @@
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
+ <dependency>
+ <groupId>it.unimi.dsi</groupId>
+ <artifactId>fastutil</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringPointable.java b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringPointable.java
index 9ff2f41..828de18 100644
--- a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringPointable.java
+++ b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringPointable.java
@@ -18,11 +18,12 @@
*/
package org.apache.hyracks.data.std.primitive;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.StandardCharsets;
+import static org.apache.hyracks.util.string.UTF8StringUtil.HIGH_SURROGATE_WITHOUT_LOW_SURROGATE;
+import static org.apache.hyracks.util.string.UTF8StringUtil.LOW_SURROGATE_WITHOUT_HIGH_SURROGATE;
-import org.apache.commons.lang3.CharSet;
+import java.io.IOException;
+import java.nio.charset.Charset;
+
import org.apache.hyracks.api.dataflow.value.ITypeTraits;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.api.io.IJsonSerializable;
@@ -38,6 +39,8 @@
import com.fasterxml.jackson.databind.JsonNode;
+import it.unimi.dsi.fastutil.ints.IntCollection;
+
public final class UTF8StringPointable extends AbstractPointable implements IHashable, IComparable {
public static final UTF8StringPointableFactory FACTORY = new UTF8StringPointableFactory();
@@ -50,6 +53,9 @@
private int hashValue;
private int stringLength;
+ public static final UTF8StringPointable SPACE_STRING_POINTABLE = generateUTF8Pointable(" ");
+ public static final Charset CESU8_CHARSET = Charset.forName("CESU8");
+
/**
* reset those meta length.
* Since the {@code utf8Length} and the {@code metaLength} are often used, we compute those two values in advance.
@@ -114,6 +120,26 @@
return UTF8StringUtil.charSize(bytes, start + offset);
}
+ public int codePointAt(int offset) {
+ return UTF8StringUtil.codePointAt(bytes, start + offset);
+ }
+
+ public int codePointSize(int offset) {
+ return UTF8StringUtil.codePointSize(bytes, start + offset);
+ }
+
+ public void getCodePoints(IntCollection codePointSet) {
+ int byteIdx = 0;
+ while (byteIdx < utf8Length) {
+ codePointSet.add(codePointAt(metaLength + byteIdx));
+ byteIdx += codePointSize(metaLength + byteIdx);
+ }
+
+ if (byteIdx != utf8Length) {
+ throw new IllegalArgumentException("Decoding error: malformed bytes");
+ }
+ }
+
/**
* Gets the length of the string in characters.
* The first time call will need to go through the entire string, the following call will just return the pre-caculated result
@@ -168,11 +194,7 @@
@Override
public String toString() {
- try {
- return new String(bytes, getCharStartOffset(), getUTF8Length(), StandardCharsets.UTF_8.name());
- } catch (UnsupportedEncodingException e) {
- throw new IllegalStateException(e);
- }
+ return new String(bytes, getCharStartOffset(), getUTF8Length(), CESU8_CHARSET);
}
public int ignoreCaseCompareTo(UTF8StringPointable other) {
@@ -216,19 +238,56 @@
* the pattern string.
* @param ignoreCase,
* to ignore case or not.
+ * @return the offset in the unit of code point of the first character of the matching string. Not including the MetaLength.
+ */
+ public static int findInCodePoint(UTF8StringPointable src, UTF8StringPointable pattern, boolean ignoreCase) {
+ return findInByteOrCodePoint(src, pattern, ignoreCase, 0, false);
+ }
+
+ /**
+ * @param src,
+ * the source string.
+ * @param pattern,
+ * the pattern string.
+ * @param ignoreCase,
+ * to ignore case or not.
* @param startMatch,
* the start offset.
* @return the byte offset of the first character of the matching string after <code>startMatchPos}</code>.
* Not including the MetaLength.
*/
public static int find(UTF8StringPointable src, UTF8StringPointable pattern, boolean ignoreCase, int startMatch) {
+ return findInByteOrCodePoint(src, pattern, ignoreCase, startMatch, true);
+ }
+
+ /**
+ * @param src,
+ * the source string.
+ * @param pattern,
+ * the pattern string.
+ * @param ignoreCase,
+ * to ignore case or not.
+ * @param startMatch,
+ * the start offset.
+ * @return the offset in the unit of code point of the first character of the matching string. Not including the MetaLength.
+ */
+ public static int findInCodePoint(UTF8StringPointable src, UTF8StringPointable pattern, boolean ignoreCase,
+ int startMatch) {
+ return findInByteOrCodePoint(src, pattern, ignoreCase, startMatch, false);
+ }
+
+ // If resultInByte is true, then return the position in bytes, otherwise return the position in code points
+ private static int findInByteOrCodePoint(UTF8StringPointable src, UTF8StringPointable pattern, boolean ignoreCase,
+ int startMatch, boolean resultInByte) {
int startMatchPos = startMatch;
final int srcUtfLen = src.getUTF8Length();
final int pttnUtfLen = pattern.getUTF8Length();
final int srcStart = src.getMetaDataLength();
final int pttnStart = pattern.getMetaDataLength();
+ int codePointCount = 0;
int maxStart = srcUtfLen - pttnUtfLen;
+ boolean prevHighSurrogate = false;
while (startMatchPos <= maxStart) {
int c1 = startMatchPos;
int c2 = 0;
@@ -237,6 +296,14 @@
char ch2 = pattern.charAt(pttnStart + c2);
if (ch1 != ch2) {
+ // Currently, the ignoreCase is only valid for one-surrogate characters
+ // (e.g. characters whose UTF-16 encoding is 2-byte (1 Java char) instead of 4-byte (2 Java chars).
+ // We may need to support the two-surrogate characters in the future
+ //
+ // Another edge case is that one letter may have different forms of lower cases in different languages
+ // For example, the letter I may have "i" as the lower case in English but "Äą" in Turkish.
+ // We may need to use methods such as String.toLowerCase(Locale locale) to support other languages in the future
+ // Reference: https://stackoverflow.com/questions/11063102/using-locales-with-javas-tolowercase-and-touppercase
if (!ignoreCase || Character.toLowerCase(ch1) != Character.toLowerCase(ch2)) {
break;
}
@@ -244,9 +311,35 @@
c1 += src.charSize(srcStart + c1);
c2 += pattern.charSize(pttnStart + c2);
}
+
if (c2 == pttnUtfLen) {
- return startMatchPos;
+ if (resultInByte) {
+ return startMatchPos;
+ } else {
+ if (prevHighSurrogate) {
+ throw new IllegalArgumentException(HIGH_SURROGATE_WITHOUT_LOW_SURROGATE);
+ }
+ return codePointCount;
+ }
}
+
+ // The result is counted in code point instead of bytes
+ if (resultInByte == false) {
+ char ch = src.charAt(srcStart + startMatchPos);
+ if (Character.isHighSurrogate(ch)) {
+ prevHighSurrogate = true;
+ } else if (Character.isLowSurrogate(ch)) {
+ if (prevHighSurrogate) {
+ codePointCount++;
+ prevHighSurrogate = false;
+ } else {
+ throw new IllegalArgumentException(LOW_SURROGATE_WITHOUT_HIGH_SURROGATE);
+ }
+ } else {
+ codePointCount++;
+ }
+ }
+
startMatchPos += src.charSize(srcStart + startMatchPos);
}
return -1;
@@ -337,43 +430,45 @@
}
/**
+ * Return the substring. Note that the offset and length are in the unit of code point.
* @return {@code true} if substring was successfully written into given {@code out}, or
- * {@code false} if substring could not be obtained ({@code charOffset} or {@code charLength}
+ * {@code false} if substring could not be obtained ({@code codePointOffset} or {@code codePointLength}
* are less than 0 or starting position is greater than the input length)
*/
- public boolean substr(int charOffset, int charLength, UTF8StringBuilder builder, GrowableArray out)
+ public boolean substr(int codePointOffset, int codePointLength, UTF8StringBuilder builder, GrowableArray out)
throws IOException {
- return substr(this, charOffset, charLength, builder, out);
+ return substr(this, codePointOffset, codePointLength, builder, out);
}
/**
+ * Return the substring. Note that the offset and length are in the unit of code point.
* @return {@code true} if substring was successfully written into given {@code out}, or
- * {@code false} if substring could not be obtained ({@code charOffset} or {@code charLength}
+ * {@code false} if substring could not be obtained ({@code codePointOffset} or {@code codePointLength}
* are less than 0 or starting position is greater than the input length)
*/
- public static boolean substr(UTF8StringPointable src, int charOffset, int charLength, UTF8StringBuilder builder,
- GrowableArray out) throws IOException {
- if (charOffset < 0 || charLength < 0) {
+ public static boolean substr(UTF8StringPointable src, int codePointOffset, int codePointLength,
+ UTF8StringBuilder builder, GrowableArray out) throws IOException {
+ if (codePointOffset < 0 || codePointLength < 0) {
return false;
}
int utfLen = src.getUTF8Length();
- int chIdx = 0;
+ int codePointIdx = 0;
int byteIdx = 0;
- while (byteIdx < utfLen && chIdx < charOffset) {
- byteIdx += src.charSize(src.getMetaDataLength() + byteIdx);
- chIdx++;
+ while (byteIdx < utfLen && codePointIdx < codePointOffset) {
+ byteIdx += src.codePointSize(src.getMetaDataLength() + byteIdx);
+ codePointIdx++;
}
if (byteIdx >= utfLen) {
return false;
}
- builder.reset(out, Math.min(utfLen - byteIdx, (int) (charLength * 1.0 * byteIdx / chIdx)));
- chIdx = 0;
- while (byteIdx < utfLen && chIdx < charLength) {
- builder.appendChar(src.charAt(src.getMetaDataLength() + byteIdx));
- chIdx++;
- byteIdx += src.charSize(src.getMetaDataLength() + byteIdx);
+ builder.reset(out, Math.min(utfLen - byteIdx, (int) (codePointLength * 1.0 * byteIdx / codePointIdx)));
+ codePointIdx = 0;
+ while (byteIdx < utfLen && codePointIdx < codePointLength) {
+ builder.appendCodePoint(src.codePointAt(src.getMetaDataLength() + byteIdx));
+ codePointIdx++;
+ byteIdx += src.codePointSize(src.getMetaDataLength() + byteIdx);
}
builder.finish();
return true;
@@ -543,16 +638,11 @@
builder.finish();
}
- public void trim(UTF8StringBuilder builder, GrowableArray out, boolean left, boolean right, CharSet charSet)
- throws IOException {
- trim(this, builder, out, left, right, charSet);
- }
-
/**
* Generates a trimmed string of an input source string.
*
* @param srcPtr
- * , the input source string.
+ * , the input source string
* @param builder
* , the result string builder.
* @param out
@@ -561,23 +651,23 @@
* , whether to trim the left side.
* @param right
* , whether to trim the right side.
- * @param charSet
- * , the chars that should be trimmed.
+ * @param codePointSet
+ * , the set of code points that should be trimmed.
* @throws IOException
*/
public static void trim(UTF8StringPointable srcPtr, UTF8StringBuilder builder, GrowableArray out, boolean left,
- boolean right, CharSet charSet) throws IOException {
+ boolean right, IntCollection codePointSet) throws IOException {
final int srcUtfLen = srcPtr.getUTF8Length();
final int srcStart = srcPtr.getMetaDataLength();
// Finds the start Index (inclusive).
int startIndex = 0;
if (left) {
while (startIndex < srcUtfLen) {
- char ch = srcPtr.charAt(srcStart + startIndex);
- if (!charSet.contains(ch)) {
+ int codepoint = srcPtr.codePointAt(srcStart + startIndex);
+ if (!codePointSet.contains(codepoint)) {
break;
}
- startIndex += srcPtr.charSize(srcStart + startIndex);
+ startIndex += srcPtr.codePointSize(srcStart + startIndex);
}
}
@@ -587,9 +677,9 @@
endIndex = startIndex;
int cursorIndex = startIndex;
while (cursorIndex < srcUtfLen) {
- char ch = srcPtr.charAt(srcStart + cursorIndex);
- cursorIndex += srcPtr.charSize(srcStart + cursorIndex);
- if (!charSet.contains(ch)) {
+ int codePioint = srcPtr.codePointAt(srcStart + cursorIndex);
+ cursorIndex += srcPtr.codePointSize(srcStart + cursorIndex);
+ if (!codePointSet.contains(codePioint)) {
endIndex = cursorIndex;
}
}
@@ -603,6 +693,26 @@
}
/**
+ * Generates a trimmed string from the original string.
+ *
+ * @param builder
+ * , the result string builder.
+ * @param out
+ * , the storage for the output string.
+ * @param left
+ * , whether to trim the left side.
+ * @param right
+ * , whether to trim the right side.
+ * @param codePointSet
+ * , the set of code points that should be trimmed.
+ * @throws IOException
+ */
+ public void trim(UTF8StringBuilder builder, GrowableArray out, boolean left, boolean right,
+ IntCollection codePointSet) throws IOException {
+ trim(this, builder, out, left, right, codePointSet);
+ }
+
+ /**
* Generates a reversed string from an input source string
*
* @param srcPtr
@@ -620,7 +730,27 @@
int srcEnd = srcPtr.getStartOffset() + srcPtr.getLength() - 1;
for (int cursorIndex = srcEnd; cursorIndex >= srcStart; cursorIndex--) {
if (UTF8StringUtil.isCharStart(srcPtr.bytes, cursorIndex)) {
+ char ch = UTF8StringUtil.charAt(srcPtr.bytes, cursorIndex);
int charSize = UTF8StringUtil.charSize(srcPtr.bytes, cursorIndex);
+
+ if (Character.isLowSurrogate(ch)) {
+ while (cursorIndex >= srcStart) {
+ cursorIndex--;
+ if (UTF8StringUtil.isCharStart(srcPtr.bytes, cursorIndex)) {
+ ch = UTF8StringUtil.charAt(srcPtr.bytes, cursorIndex);
+ if (Character.isHighSurrogate(ch) == false) {
+ throw new IllegalArgumentException(
+ "Decoding Error: no corresponding high surrogate found for the following low surrogate");
+ }
+
+ charSize += UTF8StringUtil.charSize(srcPtr.bytes, cursorIndex);
+ break;
+ }
+ }
+ } else if (Character.isHighSurrogate(ch)) {
+ throw new IllegalArgumentException("Decoding Error: get a high surrogate without low surrogate");
+ }
+
builder.appendUtf8StringPointable(srcPtr, cursorIndex, charSize);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/VarLengthTypeTrait.java b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/VarLengthTypeTrait.java
index 1b27784..b6e4d94 100644
--- a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/VarLengthTypeTrait.java
+++ b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/VarLengthTypeTrait.java
@@ -39,6 +39,11 @@
@Override
public int getFixedLength() {
+ // This method should never be called: here we are getting the fixed length of a variable length field
+ // A better way to handle this method is to throw an exception
+ // such as UnsupportedOperationException("try to get the fixed length of a variable length type trait"),
+ // however, since this method is somehow fundamental and pretty old, we want to keep it this way
+ // to avoid potential issues.
return 0;
}
diff --git a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8StringBuilder.java b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8StringBuilder.java
index 2300c06..9913a39 100644
--- a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8StringBuilder.java
+++ b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8StringBuilder.java
@@ -23,11 +23,20 @@
public class UTF8StringBuilder extends AbstractVarLenObjectBuilder {
+ private final char[] tmpCharsForCodePointConversion = new char[2];
+
public void appendChar(char ch) throws IOException {
UTF8StringUtil.writeCharAsModifiedUTF8(ch, out);
}
- public void appendString(String string) throws IOException {
+ public void appendCodePoint(int codePoint) throws IOException {
+ int numChar = Character.toChars(codePoint, tmpCharsForCodePointConversion, 0);
+ for (int i = 0; i < numChar; i++) {
+ appendChar(tmpCharsForCodePointConversion[i]);
+ }
+ }
+
+ public void appendString(CharSequence string) throws IOException {
for (int i = 0; i < string.length(); i++) {
appendChar(string.charAt(i));
}
diff --git a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/primitive/UTF8StringPointableTest.java b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/primitive/UTF8StringPointableTest.java
index 302e7a0..dcf9a10 100644
--- a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/primitive/UTF8StringPointableTest.java
+++ b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/primitive/UTF8StringPointableTest.java
@@ -20,17 +20,25 @@
package org.apache.hyracks.data.std.primitive;
import static org.apache.hyracks.data.std.primitive.UTF8StringPointable.generateUTF8Pointable;
+import static org.apache.hyracks.util.string.UTF8StringSample.EMOJI_BASKETBALL;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_EMOJI_FAMILY_OF_2;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_EMOJI_FAMILY_OF_4;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import org.apache.commons.lang3.CharSet;
+import java.io.IOException;
+import java.util.Arrays;
+
import org.apache.hyracks.data.std.util.GrowableArray;
import org.apache.hyracks.data.std.util.UTF8StringBuilder;
import org.apache.hyracks.util.string.UTF8StringSample;
import org.apache.hyracks.util.string.UTF8StringUtil;
import org.junit.Test;
+import it.unimi.dsi.fastutil.ints.IntArraySet;
+import it.unimi.dsi.fastutil.ints.IntCollection;
+
public class UTF8StringPointableTest {
public static UTF8StringPointable STRING_EMPTY = generateUTF8Pointable(UTF8StringSample.EMPTY_STRING);
public static UTF8StringPointable STRING_UTF8_MIX = generateUTF8Pointable(UTF8StringSample.STRING_UTF8_MIX);
@@ -40,8 +48,13 @@
public static UTF8StringPointable STRING_LEN_127 = generateUTF8Pointable(UTF8StringSample.STRING_LEN_127);
public static UTF8StringPointable STRING_LEN_128 = generateUTF8Pointable(UTF8StringSample.STRING_LEN_128);
+ public static UTF8StringPointable STRING_POINTABLE_EMOJI_FAMILY_OF_4 =
+ generateUTF8Pointable(STRING_EMOJI_FAMILY_OF_4);
+ public static UTF8StringPointable STRING_POINTABLE_EMOJI_FAMILY_OF_2 =
+ generateUTF8Pointable(STRING_EMOJI_FAMILY_OF_2);
+
@Test
- public void testGetStringLength() throws Exception {
+ public void testGetStringUTF8Length() throws Exception {
UTF8StringPointable utf8Ptr = generateUTF8Pointable(UTF8StringSample.STRING_LEN_127);
assertEquals(127, utf8Ptr.getUTF8Length());
assertEquals(1, utf8Ptr.getMetaDataLength());
@@ -55,6 +68,16 @@
}
@Test
+ public void testFindInCodePoint() {
+ UTF8StringPointable strp = generateUTF8Pointable(STRING_EMOJI_FAMILY_OF_4 + EMOJI_BASKETBALL);
+ UTF8StringPointable pattern = generateUTF8Pointable(EMOJI_BASKETBALL);
+
+ assertEquals(7, UTF8StringPointable.findInCodePoint(strp, pattern, false));
+
+ assertEquals(7, UTF8StringPointable.findInCodePoint(strp, pattern, true));
+ }
+
+ @Test
public void testContains() throws Exception {
assertTrue(STRING_UTF8_MIX.contains(STRING_UTF8_MIX, false));
assertTrue(STRING_UTF8_MIX.contains(STRING_UTF8_MIX, true));
@@ -119,6 +142,19 @@
}
@Test
+ public void testSubstrWithMultiCodePointCharacter() throws IOException {
+ GrowableArray storage = new GrowableArray();
+ UTF8StringBuilder builder = new UTF8StringBuilder();
+
+ // The middle 2 people of the 4-people-family is a 2-people-family
+ STRING_POINTABLE_EMOJI_FAMILY_OF_4.substr(2, 3, builder, storage);
+ UTF8StringPointable result = new UTF8StringPointable();
+ result.set(storage.getByteArray(), 0, storage.getLength());
+
+ assertEquals(0, STRING_POINTABLE_EMOJI_FAMILY_OF_2.compareTo(result));
+ }
+
+ @Test
public void testSubstrBefore() throws Exception {
UTF8StringBuilder builder = new UTF8StringBuilder();
GrowableArray storage = new GrowableArray();
@@ -207,26 +243,35 @@
GrowableArray storage = new GrowableArray();
UTF8StringPointable result = new UTF8StringPointable();
UTF8StringPointable input = generateUTF8Pointable(" this is it.i am;here. ");
+ IntCollection spaceCodePointSet = new IntArraySet(Arrays.asList((int) ' '));
// Trims both sides.
- input.trim(builder, storage, true, true, CharSet.getInstance(" "));
+ input.trim(builder, storage, true, true, spaceCodePointSet);
result.set(storage.getByteArray(), 0, storage.getLength());
UTF8StringPointable expected = generateUTF8Pointable("this is it.i am;here.");
assertEquals(0, expected.compareTo(result));
// Only trims the right side.
storage.reset();
- input.trim(builder, storage, false, true, CharSet.getInstance(" "));
+ input.trim(builder, storage, false, true, spaceCodePointSet);
result.set(storage.getByteArray(), 0, storage.getLength());
expected = generateUTF8Pointable(" this is it.i am;here.");
assertEquals(0, expected.compareTo(result));
// Only trims the left side.
storage.reset();
- input.trim(builder, storage, true, false, CharSet.getInstance(" "));
+ input.trim(builder, storage, true, false, spaceCodePointSet);
result.set(storage.getByteArray(), 0, storage.getLength());
expected = generateUTF8Pointable("this is it.i am;here. ");
assertEquals(0, expected.compareTo(result));
+
+ // Only trims the left side in case of emoji
+ input = STRING_POINTABLE_EMOJI_FAMILY_OF_4;
+ storage.reset();
+ input.trim(builder, storage, true, false, spaceCodePointSet);
+ result.set(storage.getByteArray(), 0, storage.getLength());
+ expected = STRING_POINTABLE_EMOJI_FAMILY_OF_4;
+ assertEquals(0, expected.compareTo(result));
}
@Test
@@ -236,25 +281,85 @@
UTF8StringPointable result = new UTF8StringPointable();
UTF8StringPointable input = generateUTF8Pointable(" this is it.i am;here. ");
+ String pattern = " hert.";
+ UTF8StringPointable patternPointable = generateUTF8Pointable(pattern);
+ IntCollection codePointSet = new IntArraySet();
+ codePointSet.clear();
+ patternPointable.getCodePoints(codePointSet);
+
// Trims both sides.
- input.trim(builder, storage, true, true, CharSet.getInstance(" hert."));
+ input.trim(builder, storage, true, true, codePointSet);
result.set(storage.getByteArray(), 0, storage.getLength());
UTF8StringPointable expected = generateUTF8Pointable("is is it.i am;");
assertEquals(0, expected.compareTo(result));
// Only trims the right side.
storage.reset();
- input.trim(builder, storage, false, true, CharSet.getInstance(" hert."));
+ input.trim(builder, storage, false, true, codePointSet);
result.set(storage.getByteArray(), 0, storage.getLength());
expected = generateUTF8Pointable(" this is it.i am;");
assertEquals(0, expected.compareTo(result));
// Only trims the left side.
storage.reset();
- input.trim(builder, storage, true, false, CharSet.getInstance(" hert."));
+ input.trim(builder, storage, true, false, codePointSet);
result.set(storage.getByteArray(), 0, storage.getLength());
expected = generateUTF8Pointable("is is it.i am;here. ");
assertEquals(0, expected.compareTo(result));
+
+ // Test Emoji trim
+ input = STRING_POINTABLE_EMOJI_FAMILY_OF_4;
+ pattern = "đ¨đŚ";
+ patternPointable = generateUTF8Pointable(pattern);
+ codePointSet.clear();
+ patternPointable.getCodePoints(codePointSet);
+
+ // Trim left
+ storage.reset();
+ input.trim(builder, storage, true, false, codePointSet);
+ result.set(storage.getByteArray(), 0, storage.getLength());
+ expected = generateUTF8Pointable("\u200D" + "đ¨đŚđŚ");
+ assertEquals(0, expected.compareTo(result));
+
+ // Trim right
+ storage.reset();
+ input.trim(builder, storage, false, true, codePointSet);
+ result.set(storage.getByteArray(), 0, storage.getLength());
+ expected = generateUTF8Pointable("đ¨đ¨đŚ" + "\u200D");
+ assertEquals(0, expected.compareTo(result));
+
+ // Trim left and right
+ storage.reset();
+ input.trim(builder, storage, true, true, codePointSet);
+ result.set(storage.getByteArray(), 0, storage.getLength());
+ expected = generateUTF8Pointable("\u200D" + "đ¨đŚ" + "\u200D");
+ assertEquals(0, expected.compareTo(result));
+ }
+
+ @Test
+ public void testReverse() throws Exception {
+ UTF8StringBuilder builder = new UTF8StringBuilder();
+ GrowableArray storage = new GrowableArray();
+ UTF8StringPointable result = new UTF8StringPointable();
+ UTF8StringPointable input = generateUTF8Pointable(" I'd like to reverse ");
+ UTF8StringPointable expected = generateUTF8Pointable(" esrever ot ekil d'I ");
+
+ UTF8StringPointable.reverse(input, builder, storage);
+ result.set(storage.getByteArray(), 0, storage.getLength());
+ assertEquals(0, expected.compareTo(result));
+ }
+
+ @Test
+ public void testReverseWithEmoji() throws IOException {
+ UTF8StringBuilder builder = new UTF8StringBuilder();
+ GrowableArray storage = new GrowableArray();
+ UTF8StringPointable result = new UTF8StringPointable();
+ UTF8StringPointable input = generateUTF8Pointable("\uD83C\uDDE8\uD83C\uDDF3"); // CN flag
+ UTF8StringPointable expected = generateUTF8Pointable("\uD83C\uDDF3\uD83C\uDDE8"); // NC flag
+
+ UTF8StringPointable.reverse(input, builder, storage);
+ result.set(storage.getByteArray(), 0, storage.getLength());
+ assertEquals(0, expected.compareTo(result));
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java
index a9371e9..59ab2f4 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java
@@ -110,14 +110,6 @@
return false;
}
- @Override
- public void flush(IFrameWriter writer) throws HyracksDataException {
- if (tupleCount > 0) {
- write(writer, true);
- }
- writer.flush();
- }
-
public void flush(IFrameWriter writer, ITracer tracer, String name, long traceCategory, String args)
throws HyracksDataException {
final long tid = tracer.durationB(name, traceCategory, args);
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/SingleFrameBufferManager.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/SingleFrameBufferManager.java
new file mode 100644
index 0000000..2b4ffc8
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/SingleFrameBufferManager.java
@@ -0,0 +1,62 @@
+
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+// This SingleFrameBufferManager is used for **scan** purpose.
+// When scanning an inverted index, we will load the pages from disk to memory one by one,
+// and this single frame buffer manager will allocate only one frame at the same time.
+//
+// Note: this buffer manager is NOT thread-safe
+public class SingleFrameBufferManager implements ISimpleFrameBufferManager {
+ boolean isAcquired = false;
+ ByteBuffer buffer = null;
+
+ @Override
+ public ByteBuffer acquireFrame(int frameSize) throws HyracksDataException {
+ if (buffer == null) {
+ buffer = ByteBuffer.allocate(frameSize);
+ }
+
+ if (isAcquired) {
+ return null;
+ } else {
+ if (buffer.capacity() >= frameSize) {
+ isAcquired = true;
+ buffer.clear();
+ Arrays.fill(buffer.array(), (byte) 0);
+ return buffer;
+ } else {
+ throw new HyracksDataException("Frame size changed");
+ }
+ }
+ }
+
+ @Override
+ public void releaseFrame(ByteBuffer frame) {
+ buffer.clear();
+ isAcquired = false;
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableDeletableTupleMemoryManager.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableDeletableTupleMemoryManager.java
index 33d0fda..b053cac 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableDeletableTupleMemoryManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableDeletableTupleMemoryManager.java
@@ -42,8 +42,8 @@
private final IFramePool pool;
private final IFrameFreeSlotPolicy policy;
private final IAppendDeletableFrameTupleAccessor accessor;
- private final ArrayList<ByteBuffer> frames;
- private final RecordDescriptor recordDescriptor;
+ protected final ArrayList<ByteBuffer> frames;
+ protected final RecordDescriptor recordDescriptor;
private int numTuples;
private int statsReOrg;
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupBuildOperatorNodePushable.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupBuildOperatorNodePushable.java
index 43f57af..20d223e 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupBuildOperatorNodePushable.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupBuildOperatorNodePushable.java
@@ -38,6 +38,11 @@
public class ExternalGroupBuildOperatorNodePushable extends AbstractUnaryInputSinkOperatorNodePushable
implements IRunFileWriterGenerator {
+ /**
+ * Use a random seed to avoid hash collision with the hash exchange operator.
+ * See https://issues.apache.org/jira/browse/ASTERIXDB-2783 for more details.
+ */
+ private static final int INIT_SEED = 573275022;
private static final Logger LOGGER = LogManager.getLogger();
private final IHyracksTaskContext ctx;
@@ -85,7 +90,7 @@
state = new ExternalGroupState(ctx.getJobletContext().getJobId(), stateId);
ISpillableTable table = spillableTableFactory.buildSpillableTable(ctx, tableSize, fileSize, keyFields,
comparators, firstNormalizerComputer, aggregatorFactory, inRecordDescriptor, outRecordDescriptor,
- framesLimit, 0);
+ framesLimit, INIT_SEED);
RunFileWriter[] runFileWriters = new RunFileWriter[table.getNumPartitions()];
this.externalGroupBy = new ExternalHashGroupBy(this, table, runFileWriters, inRecordDescriptor);
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoin.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoin.java
index fb2d4e9..4b1e4aa 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoin.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoin.java
@@ -112,10 +112,13 @@
}
public void build(ByteBuffer buffer) throws HyracksDataException {
- buffers.add(buffer);
- int bIndex = buffers.size() - 1;
accessorBuild.reset(buffer);
int tCount = accessorBuild.getTupleCount();
+ if (tCount <= 0) {
+ return;
+ }
+ buffers.add(buffer);
+ int bIndex = buffers.size() - 1;
for (int i = 0; i < tCount; ++i) {
int entry = tpcBuild.partition(accessorBuild, i, table.getTableSize());
storedTuplePointer.reset(bIndex, i);
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoin.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoin.java
index 361d1ee..b7693c7 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoin.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoin.java
@@ -96,7 +96,10 @@
}
public void cache(ByteBuffer buffer) throws HyracksDataException {
- runFileWriter.nextFrame(buffer);
+ accessorInner.reset(buffer);
+ if (accessorInner.getTupleCount() > 0) {
+ runFileWriter.nextFrame(buffer);
+ }
}
/**
@@ -109,6 +112,10 @@
}
public void join(ByteBuffer outerBuffer, IFrameWriter writer) throws HyracksDataException {
+ accessorOuter.reset(outerBuffer);
+ if (accessorOuter.getTupleCount() <= 0) {
+ return;
+ }
if (outerBufferMngr.insertFrame(outerBuffer) < 0) {
RunFileReader runFileReader = runFileWriter.createReader();
try {
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
index 97f9c24..c142113 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
@@ -107,6 +107,12 @@
*/
public class OptimizedHybridHashJoinOperatorDescriptor extends AbstractOperatorDescriptor {
+ /**
+ * Use a random seed to avoid hash collision with the hash exchange operator.
+ * See https://issues.apache.org/jira/browse/ASTERIXDB-2783 for more details.
+ */
+ private static final int INIT_SEED = 982028031;
+
private static final int BUILD_AND_PARTITION_ACTIVITY_ID = 0;
private static final int PARTITION_AND_JOIN_ACTIVITY_ID = 1;
@@ -269,10 +275,11 @@
ctx.getJobletContext().getJobId(), new TaskId(getActivityId(), partition));
ITuplePartitionComputer probeHpc =
- new FieldHashPartitionComputerFamily(probeKeys, propHashFunctionFactories).createPartitioner(0);
+ new FieldHashPartitionComputerFamily(probeKeys, propHashFunctionFactories)
+ .createPartitioner(INIT_SEED);
ITuplePartitionComputer buildHpc =
new FieldHashPartitionComputerFamily(buildKeys, buildHashFunctionFactories)
- .createPartitioner(0);
+ .createPartitioner(INIT_SEED);
boolean failed = false;
@Override
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractFrameSorter.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractFrameSorter.java
index 74223d8..b121fbb 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractFrameSorter.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractFrameSorter.java
@@ -139,6 +139,9 @@
@Override
public boolean insertFrame(ByteBuffer inputBuffer) throws HyracksDataException {
inputTupleAccessor.reset(inputBuffer);
+ if (inputTupleAccessor.getTupleCount() <= 0) {
+ return true;
+ }
long requiredMemory = getRequiredMemory(inputTupleAccessor);
if (totalMemoryUsed + requiredMemory <= maxSortMemory && bufferManager.insertFrame(inputBuffer) >= 0) {
// we have enough memory
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/union/UnionAllOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/union/UnionAllOperatorDescriptor.java
index a03d8d7..a1ea25b 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/union/UnionAllOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/union/UnionAllOperatorDescriptor.java
@@ -92,7 +92,9 @@
@Override
public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
synchronized (UnionOperator.this) {
- writer.nextFrame(buffer);
+ if (!failed) {
+ writer.nextFrame(buffer);
+ }
}
}
@@ -100,9 +102,9 @@
public void fail() throws HyracksDataException {
synchronized (UnionOperator.this) {
if (!failed) {
+ failed = true;
writer.fail();
}
- failed = true;
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServletRequest.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServletRequest.java
index ce1734a..a8996e3 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServletRequest.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServletRequest.java
@@ -96,4 +96,11 @@
* Indicates which scheme the client used making this request
*/
HttpScheme getScheme();
+
+ /**
+ * Gets the local address of this request
+ *
+ * @return the remote address
+ */
+ InetSocketAddress getLocalAddress();
}
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/BaseRequest.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/BaseRequest.java
index bd56eb3..f5749b1 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/BaseRequest.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/BaseRequest.java
@@ -38,17 +38,20 @@
protected final Map<String, List<String>> parameters;
protected final InetSocketAddress remoteAddress;
protected final HttpScheme scheme;
+ protected final InetSocketAddress localAddress;
public static IServletRequest create(ChannelHandlerContext ctx, FullHttpRequest request, HttpScheme scheme) {
QueryStringDecoder decoder = new QueryStringDecoder(request.uri());
Map<String, List<String>> param = decoder.parameters();
InetSocketAddress remoteAddress = (InetSocketAddress) ctx.channel().remoteAddress();
- return new BaseRequest(request, remoteAddress, param, scheme);
+ InetSocketAddress localAddress = (InetSocketAddress) ctx.channel().localAddress();
+ return new BaseRequest(request, localAddress, remoteAddress, param, scheme);
}
- protected BaseRequest(FullHttpRequest request, InetSocketAddress remoteAddress,
+ protected BaseRequest(FullHttpRequest request, InetSocketAddress localAddress, InetSocketAddress remoteAddress,
Map<String, List<String>> parameters, HttpScheme scheme) {
this.request = request;
+ this.localAddress = localAddress;
this.remoteAddress = remoteAddress;
this.parameters = parameters;
this.scheme = scheme;
@@ -99,4 +102,9 @@
public HttpScheme getScheme() {
return scheme;
}
+
+ @Override
+ public InetSocketAddress getLocalAddress() {
+ return localAddress;
+ }
}
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/FormUrlEncodedRequest.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/FormUrlEncodedRequest.java
index 0e57d8d..de6ed72 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/FormUrlEncodedRequest.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/FormUrlEncodedRequest.java
@@ -44,11 +44,12 @@
new QueryStringDecoder(request.uri()).parameters()
.forEach((name, value) -> parameters.computeIfAbsent(name, a -> new ArrayList<>()).addAll(value));
InetSocketAddress remoteAddress = (InetSocketAddress) ctx.channel().remoteAddress();
- return new FormUrlEncodedRequest(request, remoteAddress, parameters, scheme);
+ InetSocketAddress localAddress = (InetSocketAddress) ctx.channel().localAddress();
+ return new FormUrlEncodedRequest(request, localAddress, remoteAddress, parameters, scheme);
}
- private FormUrlEncodedRequest(FullHttpRequest request, InetSocketAddress remoteAddress,
- Map<String, List<String>> parameters, HttpScheme scheme) {
- super(request, remoteAddress, parameters, scheme);
+ private FormUrlEncodedRequest(FullHttpRequest request, InetSocketAddress localAddress,
+ InetSocketAddress remoteAddress, Map<String, List<String>> parameters, HttpScheme scheme) {
+ super(request, localAddress, remoteAddress, parameters, scheme);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCHandle.java b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCHandle.java
index d66f233..6920cfb 100644
--- a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCHandle.java
+++ b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCHandle.java
@@ -31,5 +31,7 @@
public Object getAttachment();
+ public int getAttachmentLen();
+
public boolean isConnected();
}
diff --git a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IPayloadSerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IPayloadSerializerDeserializer.java
index 1d2c754..2b69513 100644
--- a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IPayloadSerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IPayloadSerializerDeserializer.java
@@ -21,7 +21,7 @@
import java.nio.ByteBuffer;
public interface IPayloadSerializerDeserializer {
- public Object deserializeObject(ByteBuffer buffer, int length) throws Exception;
+ public Object deserializeObject(ByteBuffer buffer, int length, byte flag) throws Exception;
public Exception deserializeException(ByteBuffer buffer, int length) throws Exception;
diff --git a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCHandle.java b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCHandle.java
index ddcc677..cc0a852 100644
--- a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCHandle.java
+++ b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCHandle.java
@@ -39,6 +39,8 @@
private Object attachment;
+ private int attachmentLen;
+
private ByteBuffer inBuffer;
private ByteBuffer outBuffer;
@@ -95,6 +97,11 @@
return attachment;
}
+ @Override
+ public int getAttachmentLen() {
+ return attachmentLen;
+ }
+
SelectionKey getKey() {
return key;
}
@@ -178,6 +185,7 @@
throw new IllegalStateException();
}
} else {
+ attachmentLen = message.getPayloadLen();
system.deliverIncomingMessage(message);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/JavaSerializationBasedPayloadSerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/JavaSerializationBasedPayloadSerializerDeserializer.java
index 439f230..64befde 100644
--- a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/JavaSerializationBasedPayloadSerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/JavaSerializationBasedPayloadSerializerDeserializer.java
@@ -33,7 +33,7 @@
public class JavaSerializationBasedPayloadSerializerDeserializer implements IPayloadSerializerDeserializer {
@Override
- public Object deserializeObject(ByteBuffer buffer, int length) throws Exception {
+ public Object deserializeObject(ByteBuffer buffer, int length, byte flag) throws Exception {
return deserialize(buffer, length);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/Message.java b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/Message.java
index 550ce45..5f73890 100644
--- a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/Message.java
+++ b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/Message.java
@@ -22,18 +22,18 @@
import org.apache.hyracks.ipc.api.IPayloadSerializerDeserializer;
-class Message {
+public class Message {
private static final int MSG_SIZE_SIZE = 4;
- private static final int HEADER_SIZE = 17;
+ public static final int HEADER_SIZE = 17;
- static final byte INITIAL_REQ = 1;
+ public static final byte INITIAL_REQ = 1;
- static final byte INITIAL_ACK = 2;
+ public static final byte INITIAL_ACK = 2;
- static final byte ERROR = 3;
+ public static final byte ERROR = 3;
- static final byte NORMAL = 0;
+ public static final byte NORMAL = 0;
private IPCHandle ipcHandle;
@@ -45,7 +45,9 @@
private Object payload;
- Message(IPCHandle ipcHandle) {
+ private int payloadLen;
+
+ public Message(IPCHandle ipcHandle) {
this.ipcHandle = ipcHandle;
}
@@ -53,31 +55,31 @@
return ipcHandle;
}
- void setMessageId(long messageId) {
+ public void setMessageId(long messageId) {
this.messageId = messageId;
}
- long getMessageId() {
+ public long getMessageId() {
return messageId;
}
- void setRequestMessageId(long requestMessageId) {
+ public void setRequestMessageId(long requestMessageId) {
this.requestMessageId = requestMessageId;
}
- long getRequestMessageId() {
+ public long getRequestMessageId() {
return requestMessageId;
}
- void setFlag(byte flag) {
+ public void setFlag(byte flag) {
this.flag = flag;
}
- byte getFlag() {
+ public byte getFlag() {
return flag;
}
- void setPayload(Object payload) {
+ public void setPayload(Object payload) {
this.payload = payload;
}
@@ -85,15 +87,19 @@
return payload;
}
- static boolean hasMessage(ByteBuffer buffer) {
+ int getPayloadLen() {
+ return payloadLen;
+ }
+
+ public static boolean hasMessage(ByteBuffer buffer) {
if (buffer.remaining() < MSG_SIZE_SIZE) {
return false;
}
int msgSize = buffer.getInt(buffer.position());
- return buffer.remaining() >= msgSize + MSG_SIZE_SIZE;
+ return msgSize > 0 && buffer.remaining() >= msgSize + MSG_SIZE_SIZE;
}
- void read(ByteBuffer buffer) throws Exception {
+ public void read(ByteBuffer buffer) throws Exception {
assert hasMessage(buffer);
int msgSize = buffer.getInt();
messageId = buffer.getLong();
@@ -101,29 +107,49 @@
flag = buffer.get();
int finalPosition = buffer.position() + msgSize - HEADER_SIZE;
int length = msgSize - HEADER_SIZE;
+ payloadLen = length;
try {
IPayloadSerializerDeserializer serde = ipcHandle.getIPCSystem().getSerializerDeserializer();
- payload = flag == ERROR ? serde.deserializeException(buffer, length)
- : serde.deserializeObject(buffer, length);
+ switch (flag) {
+ case NORMAL:
+ case INITIAL_ACK:
+ case INITIAL_REQ:
+ payload = serde.deserializeObject(buffer, length, flag);
+ break;
+ case ERROR:
+ payload = serde.deserializeException(buffer, length);
+ break;
+ default:
+ throw new UnsupportedOperationException("Unknown message flag");
+ }
+
} finally {
buffer.position(finalPosition);
}
}
- boolean write(ByteBuffer buffer) throws Exception {
+ public boolean write(ByteBuffer buffer) throws Exception {
IPayloadSerializerDeserializer serde = ipcHandle.getIPCSystem().getSerializerDeserializer();
+ return write(buffer, serde);
+ }
+
+ public boolean write(ByteBuffer buffer, IPayloadSerializerDeserializer serde) throws Exception {
byte[] bytes = flag == ERROR ? serde.serializeException((Exception) payload) : serde.serializeObject(payload);
if (buffer.remaining() >= MSG_SIZE_SIZE + HEADER_SIZE + bytes.length) {
- buffer.putInt(HEADER_SIZE + bytes.length);
- buffer.putLong(messageId);
- buffer.putLong(requestMessageId);
- buffer.put(flag);
+ writeHeader(buffer, bytes.length, messageId, requestMessageId, flag);
buffer.put(bytes);
return true;
}
return false;
}
+ public static void writeHeader(ByteBuffer buffer, int dlen, long messageId, long requestMessageId, byte flag) {
+ buffer.putInt(HEADER_SIZE + dlen);
+ buffer.putLong(messageId);
+ buffer.putLong(requestMessageId);
+ buffer.put(flag);
+ }
+
@Override
public String toString() {
return "MSG[" + messageId + ":" + requestMessageId + ":" + flag + ":" + payload + "]";
diff --git a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/ReconnectingIPCHandle.java b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/ReconnectingIPCHandle.java
index a3578ad..ff048a4 100644
--- a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/ReconnectingIPCHandle.java
+++ b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/ReconnectingIPCHandle.java
@@ -65,6 +65,11 @@
}
@Override
+ public int getAttachmentLen() {
+ return delegate.getAttachmentLen();
+ }
+
+ @Override
public boolean isConnected() {
return delegate.isConnected();
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/build/IndexBuilder.java b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/build/IndexBuilder.java
index f62860a..45bfed1 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/build/IndexBuilder.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/build/IndexBuilder.java
@@ -47,6 +47,7 @@
protected final IResourceFactory localResourceFactory;
protected final boolean durable;
private final IResourceIdFactory resourceIdFactory;
+ private final String resourceRelPath;
/*
* Ideally, we should not pass resource id factory to the constructor since we can obtain it through
@@ -62,6 +63,7 @@
this.localResourceFactory = localResourceFactory;
this.durable = durable;
this.resourceRef = resourceRef;
+ resourceRelPath = resourceRef.getRelativePath();
}
@Override
@@ -72,35 +74,34 @@
// physical artifact that the LocalResourceRepository is managing (e.g. a file containing the resource Id).
// Once the index has been created, a new resource Id can be generated.
ILocalResourceRepository localResourceRepository = storageManager.getLocalResourceRepository(ctx);
- LocalResource lr = localResourceRepository.get(resourceRef.getRelativePath());
+ LocalResource lr = localResourceRepository.get(resourceRelPath);
long resourceId = lr == null ? -1 : lr.getId();
if (resourceId != -1) {
- localResourceRepository.delete(resourceRef.getRelativePath());
+ localResourceRepository.delete(resourceRelPath);
}
resourceId = resourceIdFactory.createId();
IResource resource = localResourceFactory.createResource(resourceRef);
lr = new LocalResource(resourceId, ITreeIndexFrame.Constants.VERSION, durable, resource);
- IIndex index = lcManager.get(resourceRef.getRelativePath());
+ IIndex index = lcManager.get(resourceRelPath);
if (index != null) {
//how is this right?????????? <needs to be fixed>
//The reason for this is to handle many cases such as:
//1. Crash while delete index is running (we don't do global cleanup on restart)
//2. Node leaves and then join with old data
- LOGGER.log(Level.WARN,
- "Removing existing index on index create for the index: " + resourceRef.getRelativePath());
- lcManager.unregister(resourceRef.getRelativePath());
+ LOGGER.log(Level.WARN, "Removing existing index on index create for the index: " + resourceRelPath);
+ lcManager.unregister(resourceRelPath);
index.destroy();
} else {
- if (resourceRef.getFile().exists()) {
+ final FileReference resolvedResourceRef = ctx.getIoManager().resolve(resourceRelPath);
+ if (resolvedResourceRef.getFile().exists()) {
// Index is not registered but the index file exists
// This is another big problem that we need to disallow soon
// We can only disallow this if we have a global cleanup after crash
// on reboot
- LOGGER.log(Level.WARN,
- "Deleting " + resourceRef.getRelativePath()
- + " on index create. The index is not registered"
- + " but the file exists in the filesystem");
- IoUtil.delete(resourceRef);
+ LOGGER.warn(
+ "Deleting {} on index create. The index is not registered but the file exists in the filesystem",
+ resolvedResourceRef);
+ IoUtil.delete(resolvedResourceRef);
}
index = resource.createInstance(ctx);
}
@@ -110,7 +111,7 @@
} catch (IOException e) {
throw HyracksDataException.create(e);
}
- lcManager.register(resourceRef.getRelativePath(), index);
+ lcManager.register(resourceRelPath, index);
}
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperation.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperation.java
index 8084c81..753d27a 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperation.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperation.java
@@ -37,7 +37,8 @@
FLUSH,
MERGE,
LOAD,
- NOOP
+ NOOP,
+ REPLICATE
}
/**
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInPlaceInvertedIndex.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInPlaceInvertedIndex.java
index ed4287d..099eda5 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInPlaceInvertedIndex.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInPlaceInvertedIndex.java
@@ -30,7 +30,7 @@
*
* @throws HyracksDataException
*/
- InvertedListCursor createInvertedListCursor(IHyracksTaskContext ctx) throws HyracksDataException;
+ IInvertedListCursor createInvertedListCursor(IHyracksTaskContext ctx) throws HyracksDataException;
/**
* Creates an inverted-list-range-search cursor. This cursor is mainly used to conduct
@@ -38,7 +38,7 @@
*
* @throws HyracksDataException
*/
- InvertedListCursor createInvertedListRangeSearchCursor(IIndexCursorStats stats) throws HyracksDataException;
+ IInvertedListCursor createInvertedListRangeSearchCursor(IIndexCursorStats stats) throws HyracksDataException;
/**
* Opens an inverted list cursor
@@ -51,6 +51,6 @@
* the operation context under which the cursor is to be open
* @throws HyracksDataException
*/
- void openInvertedListCursor(InvertedListCursor listCursor, ITupleReference searchKey, IIndexOperationContext ictx)
+ void openInvertedListCursor(IInvertedListCursor listCursor, ITupleReference searchKey, IIndexOperationContext ictx)
throws HyracksDataException;
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexAccessor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexAccessor.java
index fe29c5f..f0ff2bb 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexAccessor.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexAccessor.java
@@ -26,9 +26,9 @@
import org.apache.hyracks.storage.common.ISearchPredicate;
public interface IInvertedIndexAccessor extends IIndexAccessor {
- public InvertedListCursor createInvertedListCursor() throws HyracksDataException;
+ public IInvertedListCursor createInvertedListCursor() throws HyracksDataException;
- public void openInvertedListCursor(InvertedListCursor listCursor, ITupleReference searchKey)
+ public void openInvertedListCursor(IInvertedListCursor listCursor, ITupleReference searchKey)
throws HyracksDataException;
public IIndexCursor createRangeSearchCursor() throws HyracksDataException;
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListBuilder.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListBuilder.java
index ce2af37..f157213 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListBuilder.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListBuilder.java
@@ -30,6 +30,8 @@
public void setTargetBuffer(byte[] targetBuf, int startPos);
+ public boolean isFixedSize();
+
public int getListSize();
public int getPos();
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListBuilderFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListBuilderFactory.java
index 6aed487..defd8a1 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListBuilderFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListBuilderFactory.java
@@ -19,6 +19,8 @@
package org.apache.hyracks.storage.am.lsm.invertedindex.api;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
public interface IInvertedListBuilderFactory {
- public IInvertedListBuilder create();
+ public IInvertedListBuilder create() throws HyracksDataException;
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListCursor.java
new file mode 100644
index 0000000..77f68b4
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListCursor.java
@@ -0,0 +1,73 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.api;
+
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.storage.common.IIndexCursor;
+import org.apache.hyracks.storage.common.MultiComparator;
+
+/**
+ * A cursor that reads an inverted list.
+ */
+public interface IInvertedListCursor extends IIndexCursor, Comparable<IInvertedListCursor> {
+
+ /**
+ * Conducts any operation that is required before loading pages.
+ */
+ void prepareLoadPages() throws HyracksDataException;
+
+ /**
+ * Loads one or more pages to memory.
+ */
+ void loadPages() throws HyracksDataException;
+
+ /**
+ * Unloads currently loaded pages in the memory.
+ */
+ void unloadPages() throws HyracksDataException;
+
+ /**
+ * Gets the cardinality of elements in the cursor.
+ */
+ int size() throws HyracksDataException;
+
+ /**
+ * Checks whether the given tuple is contained in the cursor.
+ *
+ * Note that this method is used when merging two sorted list, that means we can move the internal cursor of a list
+ * in one-direction: the cursor won't go back.
+ * A better name of this method might be moveCursorForwardToCheckContainsKey()
+ */
+ boolean containsKey(ITupleReference searchTuple, MultiComparator invListCmp) throws HyracksDataException;
+
+ /**
+ * Prints all elements in the cursor (debug method).
+ */
+ @SuppressWarnings("rawtypes")
+ String printInvList(ISerializerDeserializer[] serdes) throws HyracksDataException;
+
+ /**
+ * Prints the current element in the cursor (debug method).
+ */
+ @SuppressWarnings("rawtypes")
+ String printCurrentElement(ISerializerDeserializer[] serdes) throws HyracksDataException;
+}
\ No newline at end of file
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListSearchResultFrameTupleAppender.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListSearchResultFrameTupleAppender.java
new file mode 100644
index 0000000..562d4b2
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListSearchResultFrameTupleAppender.java
@@ -0,0 +1,49 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.api;
+
+import java.nio.ByteBuffer;
+
+public interface IInvertedListSearchResultFrameTupleAppender {
+
+ public void reset(ByteBuffer buffer);
+
+ public void reset(ByteBuffer buffer, boolean clear, int tupleCount, int tupleDataEndOffset);
+
+ public boolean append(byte[] bytes, int offset, int length);
+
+ public boolean append(int fieldValue);
+
+ public boolean append(long fieldValue);
+
+ public boolean append(char fieldValue);
+
+ public boolean append(byte fieldValue);
+
+ // returns true if a tuple of the given length fits, returns false otherwise
+ public boolean hasSpace(int length);
+
+ public void incrementTupleCount(int count);
+
+ public int getTupleCount();
+
+ public ByteBuffer getBuffer();
+
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListTupleReference.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListTupleReference.java
new file mode 100644
index 0000000..2c109a5
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListTupleReference.java
@@ -0,0 +1,26 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.api;
+
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+
+public interface IInvertedListTupleReference extends ITupleReference {
+ void reset(byte[] data, int startOff);
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/InvertedListCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/InvertedListCursor.java
deleted file mode 100644
index b6d5902..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/InvertedListCursor.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.hyracks.storage.am.lsm.invertedindex.api;
-
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.storage.am.lsm.invertedindex.impls.LSMInvertedIndexSearchCursorInitialState;
-import org.apache.hyracks.storage.common.EnforcedIndexCursor;
-import org.apache.hyracks.storage.common.ICursorInitialState;
-import org.apache.hyracks.storage.common.ISearchPredicate;
-import org.apache.hyracks.storage.common.MultiComparator;
-
-/**
- * A cursor that reads an inverted list.
- */
-public abstract class InvertedListCursor extends EnforcedIndexCursor implements Comparable<InvertedListCursor> {
-
- /**
- * Opens an inverted list cursor.
- */
- protected void doOpen(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException {
- // If the given cursor state has page ids and the number of elements for the given inverted list,
- // this should be set. Otherwise (for in-memory cursor), doesn't need to do anything.
- int invListStartPageId = LSMInvertedIndexSearchCursorInitialState.INVALID_VALUE;
- int invListEndPageId = LSMInvertedIndexSearchCursorInitialState.INVALID_VALUE;
- int invListStartOffset = LSMInvertedIndexSearchCursorInitialState.INVALID_VALUE;
- int invListNumElements = LSMInvertedIndexSearchCursorInitialState.INVALID_VALUE;
- if (initialState instanceof LSMInvertedIndexSearchCursorInitialState) {
- LSMInvertedIndexSearchCursorInitialState invIndexInitialState =
- (LSMInvertedIndexSearchCursorInitialState) initialState;
- invListStartPageId = invIndexInitialState.getInvListStartPageId();
- invListEndPageId = invIndexInitialState.getInvListEndPageId();
- invListStartOffset = invIndexInitialState.getInvListStartOffset();
- invListNumElements = invIndexInitialState.getInvListNumElements();
- }
- if (invListNumElements != LSMInvertedIndexSearchCursorInitialState.INVALID_VALUE) {
- setInvListInfo(invListStartPageId, invListEndPageId, invListStartOffset, invListNumElements);
- }
- }
-
- /**
- * Sets the disk-based inverted list information such as page ids and the number of elements
- * for the given inverted list.
- */
- protected abstract void setInvListInfo(int startPageId, int endPageId, int startOff, int numElements)
- throws HyracksDataException;
-
- /**
- * Conducts any operation that is required before loading pages.
- */
- public abstract void prepareLoadPages() throws HyracksDataException;
-
- /**
- * Loads one or more pages to memory.
- */
- public abstract void loadPages() throws HyracksDataException;
-
- /**
- * Unloads currently loaded pages in the memory.
- */
- public abstract void unloadPages() throws HyracksDataException;
-
- /**
- * Gets the cardinality of elements in the cursor.
- */
- public abstract int size() throws HyracksDataException;
-
- /**
- * Checks whether the given tuple is contained in the cursor.
- */
- public abstract boolean containsKey(ITupleReference searchTuple, MultiComparator invListCmp)
- throws HyracksDataException;
-
- /**
- * Prints all elements in the cursor (debug method).
- */
- @SuppressWarnings("rawtypes")
- public abstract String printInvList(ISerializerDeserializer[] serdes) throws HyracksDataException;
-
- /**
- * Prints the current element in the cursor (debug method).
- */
- @SuppressWarnings("rawtypes")
- public abstract String printCurrentElement(ISerializerDeserializer[] serdes) throws HyracksDataException;
-}
\ No newline at end of file
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/AbstractInvertedListCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/AbstractInvertedListCursor.java
new file mode 100644
index 0000000..295d942
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/AbstractInvertedListCursor.java
@@ -0,0 +1,58 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.impls;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
+import org.apache.hyracks.storage.common.EnforcedIndexCursor;
+import org.apache.hyracks.storage.common.ICursorInitialState;
+import org.apache.hyracks.storage.common.ISearchPredicate;
+
+/**
+ * A cursor that reads an inverted list.
+ */
+public abstract class AbstractInvertedListCursor extends EnforcedIndexCursor implements IInvertedListCursor {
+
+ /**
+ * Opens an inverted list cursor.
+ */
+ protected void doOpen(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException {
+ // If the given cursor state has page ids and the number of elements for the given inverted list,
+ // this should be set. Otherwise (for in-memory cursor), doesn't need to do anything.
+ int invListStartPageId = LSMInvertedIndexSearchCursorInitialState.INVALID_VALUE;
+ int invListEndPageId = LSMInvertedIndexSearchCursorInitialState.INVALID_VALUE;
+ int invListStartOffset = LSMInvertedIndexSearchCursorInitialState.INVALID_VALUE;
+ int invListNumElements = LSMInvertedIndexSearchCursorInitialState.INVALID_VALUE;
+ if (initialState instanceof LSMInvertedIndexSearchCursorInitialState) {
+ LSMInvertedIndexSearchCursorInitialState invIndexInitialState =
+ (LSMInvertedIndexSearchCursorInitialState) initialState;
+ invListStartPageId = invIndexInitialState.getInvListStartPageId();
+ invListEndPageId = invIndexInitialState.getInvListEndPageId();
+ invListStartOffset = invIndexInitialState.getInvListStartOffset();
+ invListNumElements = invIndexInitialState.getInvListNumElements();
+ }
+ if (invListNumElements != LSMInvertedIndexSearchCursorInitialState.INVALID_VALUE) {
+ setInvListInfo(invListStartPageId, invListEndPageId, invListStartOffset, invListNumElements);
+ }
+ }
+
+ protected abstract void setInvListInfo(int startPageId, int endPageId, int startOff, int numElements)
+ throws HyracksDataException;
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/AbstractOnDiskInvertedListCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/AbstractOnDiskInvertedListCursor.java
new file mode 100644
index 0000000..7ec6ce2
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/AbstractOnDiskInvertedListCursor.java
@@ -0,0 +1,337 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.impls;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInput;
+import java.io.DataInputStream;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.ErrorCode;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.util.HyracksConstants;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.dataflow.common.utils.TaskUtil;
+import org.apache.hyracks.dataflow.std.buffermanager.ISimpleFrameBufferManager;
+import org.apache.hyracks.dataflow.std.buffermanager.SingleFrameBufferManager;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListTupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
+import org.apache.hyracks.storage.common.IIndexCursorStats;
+import org.apache.hyracks.storage.common.buffercache.IBufferCache;
+import org.apache.hyracks.storage.common.buffercache.ICachedPage;
+import org.apache.hyracks.storage.common.file.BufferedFileHandle;
+
+/**
+ * A cursor that reads an inverted list.
+ */
+public abstract class AbstractOnDiskInvertedListCursor extends AbstractInvertedListCursor {
+
+ protected final IBufferCache bufferCache;
+ protected final int fileId;
+ // for sequential scan
+ public int currentElementIxForScan;
+ protected int currentOffsetForScan;
+ protected int currentPageIxForScan;
+ // the whole range of the given inverted list
+ protected int startPageId;
+ protected int endPageId;
+ protected int startOff;
+ protected int numElements;
+ protected int numPages;
+ // the current range of the loaded pages in memory
+ protected int bufferStartPageId;
+ protected int bufferEndPageId;
+ protected int bufferStartElementIx;
+ protected int bufferNumLoadedPages;
+
+ protected final IInvertedListTupleReference tuple;
+ protected final ITypeTraits[] invListFields;
+ protected ICachedPage page;
+ // buffer manager to conform to the memory budget
+ protected final ISimpleFrameBufferManager bufferManagerForSearch;
+ protected ArrayList<ByteBuffer> buffers;
+ protected boolean moreBlocksToRead = true;
+ // The last searched element index (used for random traversal for containsKey())
+ protected int lastRandomSearchedElementIx;
+ protected final IIndexCursorStats stats;
+
+ protected AbstractOnDiskInvertedListCursor(IBufferCache bufferCache, int fileId, ITypeTraits[] invListFields,
+ IHyracksTaskContext ctx, IIndexCursorStats stats) throws HyracksDataException {
+ this(bufferCache, fileId, invListFields, ctx, stats, false);
+ }
+
+ protected AbstractOnDiskInvertedListCursor(IBufferCache bufferCache, int fileId, ITypeTraits[] invListFields,
+ IIndexCursorStats stats) throws HyracksDataException {
+ this(bufferCache, fileId, invListFields, null, stats, true);
+ }
+
+ // If isScan, use the SingleFrameBufferManager to minimize memory cost by allocating only one memory frame,
+ // elsewhere use a regular buffer manager
+ protected AbstractOnDiskInvertedListCursor(IBufferCache bufferCache, int fileId, ITypeTraits[] invListFields,
+ IHyracksTaskContext ctx, IIndexCursorStats stats, boolean isScan) throws HyracksDataException {
+ this.bufferCache = bufferCache;
+ this.fileId = fileId;
+
+ this.currentElementIxForScan = 0;
+ this.currentPageIxForScan = 0;
+ this.bufferStartPageId = 0;
+ this.bufferEndPageId = 0;
+ this.bufferStartElementIx = 0;
+ this.bufferNumLoadedPages = 0;
+ this.lastRandomSearchedElementIx = 0;
+ this.moreBlocksToRead = true;
+ this.invListFields = invListFields;
+ this.tuple = InvertedIndexUtils.createInvertedListTupleReference(invListFields);
+ this.buffers = new ArrayList<ByteBuffer>();
+ if (ctx == null && !isScan) {
+ throw HyracksDataException.create(ErrorCode.CANNOT_CONTINUE_TEXT_SEARCH_HYRACKS_TASK_IS_NULL);
+ }
+ if (!isScan) {
+ this.bufferManagerForSearch = TaskUtil.get(HyracksConstants.INVERTED_INDEX_SEARCH_FRAME_MANAGER, ctx);
+ if (bufferManagerForSearch == null) {
+ throw HyracksDataException.create(ErrorCode.CANNOT_CONTINUE_TEXT_SEARCH_BUFFER_MANAGER_IS_NULL);
+ }
+ } else {
+ this.bufferManagerForSearch = new SingleFrameBufferManager();
+ }
+ this.stats = stats;
+ }
+
+ /**
+ * Tries to allocate enough buffers to read the inverted list at once. If memory budget is not enough, this method
+ * stops allocating buffers. */
+ protected void allocateBuffers() throws HyracksDataException {
+ do {
+ ByteBuffer tmpBuffer = bufferManagerForSearch.acquireFrame(bufferCache.getPageSize());
+ if (tmpBuffer == null) {
+ // Budget exhausted
+ break;
+ }
+ Arrays.fill(tmpBuffer.array(), (byte) 0);
+ buffers.add(tmpBuffer);
+ } while (buffers.size() < numPages);
+ // At least there should be one frame to load a page from disk.
+ if (buffers.isEmpty()) {
+ throw HyracksDataException.create(ErrorCode.NOT_ENOUGH_BUDGET_FOR_TEXTSEARCH,
+ AbstractOnDiskInvertedListCursor.class.getName());
+ }
+ }
+
+ /**
+ * Deallocates all buffers. i.e. releases all buffers to the buffer manager.
+ */
+ protected void deallocateBuffers() throws HyracksDataException {
+ for (int i = 0; i < buffers.size(); i++) {
+ bufferManagerForSearch.releaseFrame(buffers.get(i));
+ buffers.set(i, null);
+ }
+ buffers.clear();
+ }
+
+ /**
+ * Clears the contents of the buffers.
+ */
+ protected void clearBuffers() throws HyracksDataException {
+ for (int i = 0; i < buffers.size(); i++) {
+ Arrays.fill(buffers.get(i).array(), (byte) 0);
+ buffers.get(i).clear();
+ }
+ }
+
+ /**
+ * Checks whether there are more elements to return. This is usually used for a sequential scan.
+ */
+ @Override
+ public boolean doHasNext() {
+ return currentElementIxForScan < numElements;
+ }
+
+ /**
+ * Prepares buffers to load pages. This method should not be called during the open()
+ * since it tries to allocate all available frames. If there are multiple concurrently opened
+ * cursors (e.g., a partitioned inverted index), this will cause an issue. An assumption of this cursor is
+ * that no two cursors are accessed at the same time even though they can be opened together.
+ */
+ @Override
+ public void prepareLoadPages() throws HyracksDataException {
+ // Resets the buffers if there is any.
+ clearBuffers();
+ if (numPages > buffers.size()) {
+ allocateBuffers();
+ }
+ }
+
+ /**
+ * Reads a part of the inverted list into the working memory via the buffer cache.
+ * This method reads the inverted list until it fills the current buffers.
+ */
+ @Override
+ public void loadPages() throws HyracksDataException {
+ // Conducts a load. Based on the size of the buffers, it may be possible to read the entire list.
+ // Resets the start page ID to load. At this moment, the variable bufferEndPageId holds
+ // the last page ID where the previous loadPages() stopped.
+ bufferStartPageId = bufferEndPageId + 1;
+ int currentBufferIdx = 0;
+ ByteBuffer tmpBuffer;
+ for (int i = bufferStartPageId; i <= endPageId; i++) {
+ page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, i), false);
+ stats.getPageCounter().update(1);
+ // Copies the content to the buffer (working memory).
+ // Assumption: processing inverted list takes time; so, we don't want to keep them on the buffer cache.
+ // Rather, we utilize the assigned working memory (buffers).
+ tmpBuffer = page.getBuffer();
+
+ // Copies the entire content of the page to the current buffer in the working memory.
+ System.arraycopy(tmpBuffer.array(), 0, buffers.get(currentBufferIdx).array(), 0,
+ buffers.get(currentBufferIdx).capacity());
+ buffers.get(currentBufferIdx).position(buffers.get(currentBufferIdx).capacity());
+
+ currentBufferIdx++;
+ bufferCache.unpin(page);
+ bufferEndPageId = i;
+
+ // Buffer full?
+ if (currentBufferIdx >= buffers.size()) {
+ break;
+ }
+ }
+
+ setBlockInfo();
+ }
+
+ /**
+ * Unloads the pages from the buffers (working memory). This will release all buffers.
+ */
+ @Override
+ public void unloadPages() throws HyracksDataException {
+ // Deallocates the buffer pages
+ deallocateBuffers();
+ }
+
+ /**
+ * Sets the disk-based inverted list information such as page ids and the number of elements
+ * for the given inverted list.
+ */
+ @Override
+ protected void setInvListInfo(int startPageId, int endPageId, int startOff, int numElements)
+ throws HyracksDataException {
+ this.startPageId = startPageId;
+ this.endPageId = endPageId;
+ this.startOff = startOff;
+ this.numElements = numElements;
+ this.currentElementIxForScan = 0;
+ this.currentPageIxForScan = 0;
+ this.bufferStartPageId = startPageId;
+ // Deducts 1 since the startPage would be set to bufferEndPageId + 1 in loadPages().
+ this.bufferEndPageId = startPageId - 1;
+ this.moreBlocksToRead = true;
+ this.numPages = endPageId - startPageId + 1;
+
+ for (ByteBuffer buffer : buffers) {
+ buffer.clear();
+ }
+ }
+
+ /**
+ * Updates the information about this block.
+ */
+ protected void setBlockInfo() {
+ bufferNumLoadedPages = bufferEndPageId - bufferStartPageId + 1;
+ lastRandomSearchedElementIx = bufferStartElementIx;
+ currentPageIxForScan = 0;
+ if (bufferEndPageId == endPageId) {
+ moreBlocksToRead = false;
+ }
+ }
+
+ /**
+ * Prints the current element (a debugging method).
+ */
+ @Override
+ @SuppressWarnings("rawtypes")
+ public String printCurrentElement(ISerializerDeserializer[] serdes) throws HyracksDataException {
+ StringBuilder strBuilder = new StringBuilder();
+ for (int i = 0; i < tuple.getFieldCount(); i++) {
+ ByteArrayInputStream inStream =
+ new ByteArrayInputStream(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i));
+ DataInput dataIn = new DataInputStream(inStream);
+ Object o = serdes[i].deserialize(dataIn);
+ strBuilder.append(o.toString());
+ if (i + 1 < tuple.getFieldCount()) {
+ strBuilder.append(",");
+ }
+ }
+ return strBuilder.toString();
+ }
+
+ /**
+ * A compare function that is used to sort inverted list cursors
+ */
+ @Override
+ public int compareTo(IInvertedListCursor invListCursor) {
+ try {
+ return numElements - invListCursor.size();
+ } catch (HyracksDataException hde) {
+ throw new IllegalStateException(hde);
+ }
+ }
+
+ /**
+ * Gets the cardinality of the current inverted list.
+ */
+ @Override
+ public int size() throws HyracksDataException {
+ return numElements;
+ }
+
+ /**
+ * Gets the current tuple.
+ */
+ @Override
+ public ITupleReference doGetTuple() {
+ return tuple;
+ }
+
+ /**
+ * Closes the cursor.
+ */
+ @Override
+ public void doClose() throws HyracksDataException {
+ if (!buffers.isEmpty()) {
+ unloadPages();
+ }
+ }
+
+ /**
+ * Destroys the cursor.
+ */
+ @Override
+ public void doDestroy() throws HyracksDataException {
+ if (!buffers.isEmpty()) {
+ unloadPages();
+ }
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexAccessor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexAccessor.java
index 8e39b62..67312ce 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexAccessor.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexAccessor.java
@@ -34,7 +34,7 @@
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexAccessor;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
import org.apache.hyracks.storage.common.IIndexCursor;
import org.apache.hyracks.storage.common.ISearchPredicate;
@@ -176,12 +176,12 @@
}
@Override
- public InvertedListCursor createInvertedListCursor() {
+ public IInvertedListCursor createInvertedListCursor() {
throw new UnsupportedOperationException("Cannot create inverted list cursor on lsm inverted index.");
}
@Override
- public void openInvertedListCursor(InvertedListCursor listCursor, ITupleReference searchKey)
+ public void openInvertedListCursor(IInvertedListCursor listCursor, ITupleReference searchKey)
throws HyracksDataException {
throw new UnsupportedOperationException("Cannot open inverted list cursor on lsm inverted index.");
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java
index bfbb141..914a469 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java
@@ -34,7 +34,7 @@
import org.apache.hyracks.storage.am.common.api.IPageManager;
import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInPlaceInvertedIndex;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers.IBinaryTokenizerFactory;
import org.apache.hyracks.storage.common.IIndexAccessParameters;
import org.apache.hyracks.storage.common.IIndexBulkLoader;
@@ -148,19 +148,19 @@
}
@Override
- public InvertedListCursor createInvertedListCursor(IHyracksTaskContext ctx) {
+ public IInvertedListCursor createInvertedListCursor(IHyracksTaskContext ctx) {
return new InMemoryInvertedListCursor(invListTypeTraits.length, tokenTypeTraits.length);
}
@Override
- public InvertedListCursor createInvertedListRangeSearchCursor(IIndexCursorStats stats) {
+ public IInvertedListCursor createInvertedListRangeSearchCursor(IIndexCursorStats stats) {
// An in-memory index does not have a separate inverted list.
// Therefore, a different range-search cursor for an inverted list is not required.
return createInvertedListCursor(null);
}
@Override
- public void openInvertedListCursor(InvertedListCursor listCursor, ITupleReference searchKey,
+ public void openInvertedListCursor(IInvertedListCursor listCursor, ITupleReference searchKey,
IIndexOperationContext ictx) throws HyracksDataException {
InMemoryInvertedIndexOpContext ctx = (InMemoryInvertedIndexOpContext) ictx;
ctx.setOperation(IndexOperation.SEARCH);
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexAccessor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexAccessor.java
index 0dd6b2c..5f0e1364 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexAccessor.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexAccessor.java
@@ -30,7 +30,7 @@
import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexAccessor;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexSearcher;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.OnDiskInvertedIndexSearchCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.search.InvertedIndexSearchPredicate;
import org.apache.hyracks.storage.am.lsm.invertedindex.search.TOccurrenceSearcher;
@@ -84,12 +84,12 @@
}
@Override
- public InvertedListCursor createInvertedListCursor() {
+ public IInvertedListCursor createInvertedListCursor() {
return index.createInvertedListCursor(ctx);
}
@Override
- public void openInvertedListCursor(InvertedListCursor listCursor, ITupleReference searchKey)
+ public void openInvertedListCursor(IInvertedListCursor listCursor, ITupleReference searchKey)
throws HyracksDataException {
index.openInvertedListCursor(listCursor, searchKey, opCtx);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedListCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedListCursor.java
index c31a1e0..e1f301d 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedListCursor.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedListCursor.java
@@ -33,11 +33,12 @@
import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeAccessor;
import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
import org.apache.hyracks.storage.am.common.tuples.ConcatenatingTupleReference;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.impls.AbstractInvertedListCursor;
import org.apache.hyracks.storage.common.IIndexCursor;
import org.apache.hyracks.storage.common.MultiComparator;
-public class InMemoryInvertedListCursor extends InvertedListCursor {
+public class InMemoryInvertedListCursor extends AbstractInvertedListCursor {
private RangePredicate btreePred;
private BTreeAccessor btreeAccessor;
private IIndexCursor btreeCursor;
@@ -80,7 +81,7 @@
}
@Override
- public int compareTo(InvertedListCursor cursor) {
+ public int compareTo(IInvertedListCursor cursor) {
try {
return size() - cursor.size();
} catch (HyracksDataException hde) {
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/AbstractInvertedListBuilder.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/AbstractInvertedListBuilder.java
new file mode 100644
index 0000000..4c4c3af
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/AbstractInvertedListBuilder.java
@@ -0,0 +1,49 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
+
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListBuilder;
+
+public abstract class AbstractInvertedListBuilder implements IInvertedListBuilder {
+ protected byte[] targetBuf;
+ protected int pos;
+ protected ITypeTraits[] invListFields;
+ protected int listSize = 0;
+
+ public AbstractInvertedListBuilder(ITypeTraits[] invListFields) {
+ this.invListFields = invListFields;
+ }
+
+ @Override
+ public void setTargetBuffer(byte[] targetBuf, int startPos) {
+ this.targetBuf = targetBuf;
+ this.pos = startPos;
+ }
+
+ @Override
+ public int getListSize() {
+ return listSize;
+ }
+
+ @Override
+ public int getPos() {
+ return pos;
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/AbstractInvertedListSearchResultFrameTupleAccessor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/AbstractInvertedListSearchResultFrameTupleAccessor.java
new file mode 100644
index 0000000..3b16423
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/AbstractInvertedListSearchResultFrameTupleAccessor.java
@@ -0,0 +1,93 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
+
+import java.nio.ByteBuffer;
+
+import org.apache.hyracks.api.comm.FrameHelper;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+/**
+ * This is a frame tuple accessor class for inverted list.
+ * The frame structure: [4 bytes for minimum Hyracks frame count] [tuple 1] ... [tuple n] ...
+ * [4 bytes for the tuple count in a frame]
+ *
+ * The tuples can be fixed-size or variable-size.
+ * This class is mainly used to merge two inverted lists, e.g. searching the conjunction of two keywords "abc" AND "xyz"
+ */
+public abstract class AbstractInvertedListSearchResultFrameTupleAccessor implements IFrameTupleAccessor {
+
+ protected final int frameSize;
+ protected ByteBuffer buffer;
+
+ protected final ITypeTraits[] fields;
+
+ protected abstract void verifyTypeTraits() throws HyracksDataException;
+
+ public AbstractInvertedListSearchResultFrameTupleAccessor(int frameSize, ITypeTraits[] fields)
+ throws HyracksDataException {
+ this.frameSize = frameSize;
+ this.fields = fields;
+
+ verifyTypeTraits();
+ }
+
+ @Override
+ public ByteBuffer getBuffer() {
+ return buffer;
+ }
+
+ @Override
+ public int getFieldCount() {
+ return fields.length;
+ }
+
+ @Override
+ public int getTupleLength(int tupleIndex) {
+ return getTupleEndOffset(tupleIndex) - getTupleStartOffset(tupleIndex);
+ }
+
+ @Override
+ public int getFieldSlotsLength() {
+ return 0;
+ }
+
+ @Override
+ public int getTupleCount() {
+ return buffer != null ? buffer.getInt(FrameHelper.getTupleCountOffset(frameSize)) : 0;
+ }
+
+ @Override
+ public int getTupleEndOffset(int tupleIndex) {
+ return getFieldEndOffset(tupleIndex, fields.length - 1);
+ }
+
+ @Override
+ public int getAbsoluteFieldStartOffset(int tupleIndex, int fIdx) {
+ return getTupleStartOffset(tupleIndex) + getFieldSlotsLength() + getFieldStartOffset(tupleIndex, fIdx);
+ }
+
+ @Override
+ public void reset(ByteBuffer buffer) {
+ this.buffer = buffer;
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/AbstractInvertedListTupleReference.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/AbstractInvertedListTupleReference.java
new file mode 100644
index 0000000..f5d8fa6
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/AbstractInvertedListTupleReference.java
@@ -0,0 +1,68 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
+
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListTupleReference;
+
+public abstract class AbstractInvertedListTupleReference implements IInvertedListTupleReference {
+
+ protected final ITypeTraits[] typeTraits;
+ protected final int[] fieldStartOffsets;
+ protected byte[] data;
+ protected int startOff;
+
+ // check if the type trait is fixed-size or variable-size
+ // throws an IllegalArgument exception if get unexpected traits
+ protected abstract void verifyTypeTrait() throws HyracksDataException;
+
+ public AbstractInvertedListTupleReference(ITypeTraits[] typeTraits) throws HyracksDataException {
+ this.typeTraits = typeTraits;
+ this.fieldStartOffsets = new int[typeTraits.length];
+ this.fieldStartOffsets[0] = 0;
+
+ verifyTypeTrait();
+ }
+
+ protected abstract void calculateFieldStartOffsets();
+
+ @Override
+ public void reset(byte[] data, int startOff) {
+ this.data = data;
+ this.startOff = startOff;
+ calculateFieldStartOffsets();
+ }
+
+ @Override
+ public int getFieldCount() {
+ return typeTraits.length;
+ }
+
+ @Override
+ public byte[] getFieldData(int fIdx) {
+ return data;
+ }
+
+ @Override
+ public int getFieldStart(int fIdx) {
+ return startOff + fieldStartOffsets[fIdx];
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeElementInvertedListBuilder.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeElementInvertedListBuilder.java
deleted file mode 100644
index 3889edd..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeElementInvertedListBuilder.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
-
-import org.apache.hyracks.api.dataflow.value.ITypeTraits;
-import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListBuilder;
-
-public class FixedSizeElementInvertedListBuilder implements IInvertedListBuilder {
- private final int listElementSize;
- private int listSize = 0;
-
- private byte[] targetBuf;
- private int pos;
-
- public FixedSizeElementInvertedListBuilder(ITypeTraits[] invListFields) {
- int tmp = 0;
- for (int i = 0; i < invListFields.length; i++) {
- tmp += invListFields[i].getFixedLength();
- }
- listElementSize = tmp;
- }
-
- @Override
- public boolean startNewList(ITupleReference tuple, int tokenField) {
- if (pos + listElementSize > targetBuf.length) {
- return false;
- } else {
- listSize = 0;
- return true;
- }
- }
-
- @Override
- public boolean appendElement(ITupleReference tuple, int numTokenFields, int numElementFields) {
- if (pos + listElementSize > targetBuf.length) {
- return false;
- }
-
- for (int i = 0; i < numElementFields; i++) {
- int field = numTokenFields + i;
- System.arraycopy(tuple.getFieldData(field), tuple.getFieldStart(field), targetBuf, pos,
- tuple.getFieldLength(field));
- }
-
- listSize++;
- pos += listElementSize;
-
- return true;
- }
-
- @Override
- public void setTargetBuffer(byte[] targetBuf, int startPos) {
- this.targetBuf = targetBuf;
- this.pos = startPos;
- }
-
- @Override
- public int getListSize() {
- return listSize;
- }
-
- @Override
- public int getPos() {
- return pos;
- }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeElementInvertedListBuilderFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeElementInvertedListBuilderFactory.java
deleted file mode 100644
index 4e8b4f9..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeElementInvertedListBuilderFactory.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
-
-import org.apache.hyracks.api.dataflow.value.ITypeTraits;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListBuilder;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListBuilderFactory;
-
-public class FixedSizeElementInvertedListBuilderFactory implements IInvertedListBuilderFactory {
-
- private final ITypeTraits[] invListFields;
-
- public FixedSizeElementInvertedListBuilderFactory(ITypeTraits[] invListFields) {
- this.invListFields = invListFields;
- }
-
- @Override
- public IInvertedListBuilder create() {
- return new FixedSizeElementInvertedListBuilder(invListFields);
- }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeElementInvertedListCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeElementInvertedListCursor.java
deleted file mode 100644
index 6002dc8..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeElementInvertedListCursor.java
+++ /dev/null
@@ -1,525 +0,0 @@
-/*
- * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
-
-import java.io.ByteArrayInputStream;
-import java.io.DataInput;
-import java.io.DataInputStream;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.api.dataflow.value.ITypeTraits;
-import org.apache.hyracks.api.exceptions.ErrorCode;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.api.util.HyracksConstants;
-import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.dataflow.common.utils.TaskUtil;
-import org.apache.hyracks.dataflow.std.buffermanager.ISimpleFrameBufferManager;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
-import org.apache.hyracks.storage.common.IIndexCursorStats;
-import org.apache.hyracks.storage.common.MultiComparator;
-import org.apache.hyracks.storage.common.buffercache.IBufferCache;
-import org.apache.hyracks.storage.common.buffercache.ICachedPage;
-import org.apache.hyracks.storage.common.file.BufferedFileHandle;
-
-/**
- * A cursor class that traverse an inverted list that consists of fixed-size elements on disk
- *
- */
-public class FixedSizeElementInvertedListCursor extends InvertedListCursor {
-
- private final IBufferCache bufferCache;
- private final int fileId;
- private final int elementSize;
- // for sequential scan
- private int currentElementIxForScan;
- private int currentOffsetForScan;
- private int currentPageIxForScan;
- // the whole range of the given inverted list
- private int startPageId;
- private int endPageId;
- private int startOff;
- private int numElements;
- private int numPages;
- // the current range of the loaded pages in memory
- private int bufferStartPageId;
- private int bufferEndPageId;
- private int bufferStartElementIx;
- private int bufferEndElementIx;
- private int bufferNumLoadedPages;
-
- private final FixedSizeTupleReference tuple;
- // The last element in the current range in memory
- private final FixedSizeTupleReference bufferEndElementTuple;
- private ICachedPage page;
- // The last element index per page
- private int[] elementIndexes = new int[10];
- // buffer manager to conform to the memory budget
- private final ISimpleFrameBufferManager bufferManagerForSearch;
- private ArrayList<ByteBuffer> buffers;
- private boolean moreBlocksToRead = true;
- // The last searched element index (used for random traversal)
- private int lastRandomSearchedElementIx;
- private final IIndexCursorStats stats;
-
- public FixedSizeElementInvertedListCursor(IBufferCache bufferCache, int fileId, ITypeTraits[] invListFields,
- IHyracksTaskContext ctx, IIndexCursorStats stats) throws HyracksDataException {
- this.bufferCache = bufferCache;
- this.fileId = fileId;
- int tmpSize = 0;
- for (int i = 0; i < invListFields.length; i++) {
- tmpSize += invListFields[i].getFixedLength();
- }
- elementSize = tmpSize;
- this.currentOffsetForScan = -elementSize;
- this.currentElementIxForScan = 0;
- this.currentPageIxForScan = 0;
- this.bufferStartPageId = 0;
- this.bufferEndPageId = 0;
- this.bufferStartElementIx = 0;
- this.bufferEndElementIx = 0;
- this.bufferNumLoadedPages = 0;
- this.lastRandomSearchedElementIx = 0;
- this.moreBlocksToRead = true;
- this.tuple = new FixedSizeTupleReference(invListFields);
- this.bufferEndElementTuple = new FixedSizeTupleReference(invListFields);
- this.buffers = new ArrayList<ByteBuffer>();
- if (ctx == null) {
- throw HyracksDataException.create(ErrorCode.CANNOT_CONTINUE_TEXT_SEARCH_HYRACKS_TASK_IS_NULL);
- }
- this.bufferManagerForSearch = TaskUtil.get(HyracksConstants.INVERTED_INDEX_SEARCH_FRAME_MANAGER, ctx);
- if (bufferManagerForSearch == null) {
- throw HyracksDataException.create(ErrorCode.CANNOT_CONTINUE_TEXT_SEARCH_BUFFER_MANAGER_IS_NULL);
- }
- this.stats = stats;
- }
-
- /**
- * Tries to allocate enough buffers to read the inverted list at once. If memory budget is not enough, this method
- * stops allocating buffers.
- */
- private void allocateBuffers() throws HyracksDataException {
- do {
- ByteBuffer tmpBuffer = bufferManagerForSearch.acquireFrame(bufferCache.getPageSize());
- if (tmpBuffer == null) {
- // Budget exhausted
- break;
- }
- Arrays.fill(tmpBuffer.array(), (byte) 0);
- buffers.add(tmpBuffer);
- } while (buffers.size() < numPages);
- // At least there should be one frame to load a page from disk.
- if (buffers.isEmpty()) {
- throw HyracksDataException.create(ErrorCode.NOT_ENOUGH_BUDGET_FOR_TEXTSEARCH,
- FixedSizeElementInvertedListCursor.class.getName());
- }
- }
-
- /**
- * Deallocates all buffers. i.e. releases all buffers to the buffer manager.
- */
- private void deallocateBuffers() throws HyracksDataException {
- for (int i = 0; i < buffers.size(); i++) {
- bufferManagerForSearch.releaseFrame(buffers.get(i));
- buffers.set(i, null);
- }
- buffers.clear();
- }
-
- /**
- * Clears the contents of the buffers.
- */
- private void clearBuffers() throws HyracksDataException {
- for (int i = 0; i < buffers.size(); i++) {
- Arrays.fill(buffers.get(i).array(), (byte) 0);
- buffers.get(i).clear();
- }
- }
-
- /**
- * Checks whether there are more elements to return. This is usually used for a sequential scan.
- */
- @Override
- public boolean doHasNext() {
- return currentElementIxForScan < numElements;
- }
-
- /**
- * Returns the next element.
- */
- @Override
- public void doNext() throws HyracksDataException {
- if (currentOffsetForScan + 2 * elementSize > bufferCache.getPageSize()) {
- currentPageIxForScan++;
- currentOffsetForScan = 0;
- } else {
- currentOffsetForScan += elementSize;
- }
-
- // Needs to read the next block?
- if (currentElementIxForScan > bufferEndElementIx && endPageId > bufferEndPageId) {
- loadPages();
- currentOffsetForScan = 0;
- }
-
- currentElementIxForScan++;
-
- tuple.reset(buffers.get(currentPageIxForScan).array(), currentOffsetForScan);
- }
-
- /**
- * Prepares buffers to load pages. This method should not be called during the open()
- * since it tries to allocate all available frames. If there are multiple concurrently opened
- * cursors (e.g., a partitioned inverted index), this will cause an issue. An assumption of this cursor is
- * that no two cursors are accessed at the same time even though they can be opened together.
- */
- @Override
- public void prepareLoadPages() throws HyracksDataException {
- // Resets the buffers if there is any.
- clearBuffers();
- if (numPages > buffers.size()) {
- allocateBuffers();
- }
- }
-
- /**
- * Reads a part of the inverted list into the working memory via the buffer cache.
- * This method reads the inverted list until it fills the current buffers.
- */
- @Override
- public void loadPages() throws HyracksDataException {
- // Conducts a load. Based on the size of the buffers, it may be possible to read the entire list.
- // Resets the start page ID to load. At this moment, the variable bufferEndPageId holds
- // the last page ID where the previous loadPages() stopped.
- bufferStartPageId = bufferEndPageId + 1;
- if (bufferStartPageId > endPageId) {
- return;
- }
- int currentBufferIdx = 0;
- ByteBuffer tmpBuffer;
- for (int i = bufferStartPageId; i <= endPageId; i++) {
- page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, i), false);
- stats.getPageCounter().update(1);
- // Copies the content to the buffer (working memory).
- // Assumption: processing inverted list takes time; so, we don't want to keep them on the buffer cache.
- // Rather, we utilize the assigned working memory (buffers).
- tmpBuffer = page.getBuffer();
-
- // Copies the entire content of the page to the current buffer in the working memory.
- System.arraycopy(tmpBuffer.array(), 0, buffers.get(currentBufferIdx).array(), 0,
- buffers.get(currentBufferIdx).capacity());
- buffers.get(currentBufferIdx).position(buffers.get(currentBufferIdx).capacity());
-
- currentBufferIdx++;
- bufferCache.unpin(page);
- bufferEndPageId = i;
-
- // Buffer full?
- if (currentBufferIdx >= buffers.size()) {
- break;
- }
- }
- setBlockInfo();
- }
-
- /**
- * Updates the information about this block.
- */
- private void setBlockInfo() {
- bufferNumLoadedPages = bufferEndPageId - bufferStartPageId + 1;
- bufferStartElementIx =
- bufferStartPageId == startPageId ? 0 : elementIndexes[bufferStartPageId - startPageId - 1] + 1;
- lastRandomSearchedElementIx = bufferStartElementIx;
- bufferEndElementIx = elementIndexes[bufferEndPageId - startPageId];
- // Gets the final element tuple in this block.
- getElementAtIndex(bufferEndElementIx, bufferEndElementTuple);
- currentPageIxForScan = 0;
- currentOffsetForScan = bufferStartElementIx == 0 ? startOff - elementSize : -elementSize;
- if (bufferEndPageId == endPageId) {
- moreBlocksToRead = false;
- }
- }
-
- /**
- * Unloads the pages from the buffers (working memory). This will release all buffers.
- */
- @Override
- public void unloadPages() throws HyracksDataException {
- // Deallocates the buffer pages
- deallocateBuffers();
- }
-
- /**
- * Checks whether the search tuple is greater than the last element in the current block of the cursor.
- * If so, the cursor needs to load next block of the inverted list.
- *
- * @param searchTuple
- * @param invListCmp
- * @return true if the search tuple is greater than the last element in the current block of the cursor
- * false if the search tuple is equal to or less than the last element in the current block of the cursor
- * @throws HyracksDataException
- */
- private boolean needToReadNextBlock(ITupleReference searchTuple, MultiComparator invListCmp)
- throws HyracksDataException {
- if (moreBlocksToRead && invListCmp.compare(searchTuple, bufferEndElementTuple) > 0) {
- return true;
- }
- return false;
- }
-
- /**
- * Gets the tuple for the given element index.
- */
- private void getElementAtIndex(int elementIx, FixedSizeTupleReference tuple) {
- int currentPageIx =
- binarySearch(elementIndexes, bufferStartPageId - startPageId, bufferNumLoadedPages, elementIx);
- if (currentPageIx < 0) {
- throw new IndexOutOfBoundsException(
- "Requested index: " + elementIx + " from array with numElements: " + numElements);
- }
-
- int currentOff;
- if (currentPageIx == 0) {
- currentOff = startOff + elementIx * elementSize;
- } else {
- int relativeElementIx = elementIx - elementIndexes[currentPageIx - 1] - 1;
- currentOff = relativeElementIx * elementSize;
- }
- // Gets the actual index in the buffers since buffers.size() can be smaller than the total number of pages.
- int bufferIdx = currentPageIx % buffers.size();
- tuple.reset(buffers.get(bufferIdx).array(), currentOff);
- }
-
- /**
- * Checks whether the given tuple exists on this inverted list. This method is used when doing a random traversal.
- */
- @Override
- public boolean containsKey(ITupleReference searchTuple, MultiComparator invListCmp) throws HyracksDataException {
- // If the given element is greater than the last element in the current buffer, reads the next block.
- if (needToReadNextBlock(searchTuple, invListCmp)) {
- loadPages();
- }
- int mid = -1;
- int begin = lastRandomSearchedElementIx;
- int end = bufferEndElementIx;
-
- while (begin <= end) {
- mid = (begin + end) / 2;
- getElementAtIndex(mid, tuple);
- int cmp = invListCmp.compare(searchTuple, tuple);
- if (cmp < 0) {
- end = mid - 1;
- } else if (cmp > 0) {
- begin = mid + 1;
- } else {
- lastRandomSearchedElementIx = mid;
- return true;
- }
- }
-
- lastRandomSearchedElementIx = mid;
- return false;
- }
-
- /**
- * Opens the cursor for the given inverted list. After this open() call, prepreLoadPages() should be called
- * before loadPages() are called. For more details, check prepapreLoadPages().
- */
- @Override
- protected void setInvListInfo(int startPageId, int endPageId, int startOff, int numElements)
- throws HyracksDataException {
- this.startPageId = startPageId;
- this.endPageId = endPageId;
- this.startOff = startOff;
- this.numElements = numElements;
- this.currentElementIxForScan = 0;
- this.currentPageIxForScan = 0;
- this.currentOffsetForScan = startOff - elementSize;
- this.bufferStartPageId = startPageId;
- // Deducts 1 since the startPage would be set to bufferEndPageId + 1 in loadPages().
- this.bufferEndPageId = startPageId - 1;
- this.moreBlocksToRead = true;
- this.numPages = endPageId - startPageId + 1;
-
- if (numPages > elementIndexes.length) {
- elementIndexes = new int[numPages];
- }
-
- for (ByteBuffer buffer : buffers) {
- buffer.clear();
- }
-
- // Fills the last element index per page.
- // first page
- int cumulElements = (bufferCache.getPageSize() - startOff) / elementSize;
- // Deducts 1 because this is the index, not the number of elements.
- elementIndexes[0] = cumulElements - 1;
-
- // middle, full pages
- for (int i = 1; i < numPages - 1; i++) {
- elementIndexes[i] = elementIndexes[i - 1] + (bufferCache.getPageSize() / elementSize);
- }
-
- // last page
- // Deducts 1 because this is the index, not the number of elements.
- elementIndexes[numPages - 1] = numElements - 1;
- }
-
- /**
- * Prints the contents of the current inverted list (a debugging method).
- */
- @SuppressWarnings("rawtypes")
- @Override
- public String printInvList(ISerializerDeserializer[] serdes) throws HyracksDataException {
- int oldCurrentOff = currentOffsetForScan;
- int oldCurrentPageId = currentPageIxForScan;
- int oldCurrentElementIx = currentElementIxForScan;
-
- currentOffsetForScan = startOff - elementSize;
- currentPageIxForScan = 0;
- currentElementIxForScan = 0;
-
- StringBuilder strBuilder = new StringBuilder();
-
- while (hasNext()) {
- next();
- for (int i = 0; i < tuple.getFieldCount(); i++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(tuple.getFieldData(i), tuple.getFieldStart(i),
- tuple.getFieldLength(i));
- DataInput dataIn = new DataInputStream(inStream);
- Object o = serdes[i].deserialize(dataIn);
- strBuilder.append(o.toString());
- if (i + 1 < tuple.getFieldCount()) {
- strBuilder.append(",");
- }
- }
- strBuilder.append(" ");
- }
-
- // reset previous state
- currentOffsetForScan = oldCurrentOff;
- currentPageIxForScan = oldCurrentPageId;
- currentElementIxForScan = oldCurrentElementIx;
-
- return strBuilder.toString();
- }
-
- /**
- * Prints the current element (a debugging method).
- */
- @Override
- @SuppressWarnings("rawtypes")
- public String printCurrentElement(ISerializerDeserializer[] serdes) throws HyracksDataException {
- StringBuilder strBuilder = new StringBuilder();
- for (int i = 0; i < tuple.getFieldCount(); i++) {
- ByteArrayInputStream inStream =
- new ByteArrayInputStream(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i));
- DataInput dataIn = new DataInputStream(inStream);
- Object o = serdes[i].deserialize(dataIn);
- strBuilder.append(o.toString());
- if (i + 1 < tuple.getFieldCount()) {
- strBuilder.append(",");
- }
- }
- return strBuilder.toString();
- }
-
- /**
- * Conducts a binary search to get the index of the given key.
- */
- private int binarySearch(int[] arr, int arrStart, int arrLength, int key) {
- int mid;
- int begin = arrStart;
- int end = arrStart + arrLength - 1;
-
- while (begin <= end) {
- mid = (begin + end) / 2;
- int cmp = (key - arr[mid]);
- if (cmp < 0) {
- end = mid - 1;
- } else if (cmp > 0) {
- begin = mid + 1;
- } else {
- return mid;
- }
- }
-
- if (begin > arr.length - 1) {
- return -1;
- }
- if (key < arr[begin]) {
- return begin;
- } else {
- return -1;
- }
- }
-
- /**
- * A compare function that is used to sort inverted list cursors
- */
- @Override
- public int compareTo(InvertedListCursor invListCursor) {
- try {
- return numElements - invListCursor.size();
- } catch (HyracksDataException hde) {
- throw new IllegalStateException(hde);
- }
- }
-
- /**
- * Gets the cardinality of the current inverted list.
- */
- @Override
- public int size() {
- return numElements;
- }
-
- /**
- * Gets the current tuple.
- */
- @Override
- public ITupleReference doGetTuple() {
- return tuple;
- }
-
- /**
- * Closes the cursor.
- */
- @Override
- public void doClose() throws HyracksDataException {
- if (!buffers.isEmpty()) {
- unloadPages();
- }
- }
-
- /**
- * Destroys the cursor.
- */
- @Override
- public void doDestroy() throws HyracksDataException {
- if (!buffers.isEmpty()) {
- unloadPages();
- }
- }
-
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeElementInvertedListScanCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeElementInvertedListScanCursor.java
deleted file mode 100644
index 583fb90..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeElementInvertedListScanCursor.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
-
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.api.dataflow.value.ITypeTraits;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
-import org.apache.hyracks.storage.common.IIndexCursorStats;
-import org.apache.hyracks.storage.common.MultiComparator;
-import org.apache.hyracks.storage.common.buffercache.IBufferCache;
-import org.apache.hyracks.storage.common.buffercache.ICachedPage;
-import org.apache.hyracks.storage.common.file.BufferedFileHandle;
-
-/**
- * A simple scan cursor that only reads a frame by frame from the inverted list on disk. This cursor does not
- * conduct a binary search. It only supports the scan operation. The main purpose of this cursor is
- * doing a full-scan of an inverted list during a storage-component-merge process.
- */
-public class FixedSizeElementInvertedListScanCursor extends InvertedListCursor {
-
- protected final IBufferCache bufferCache;
- protected final int fileId;
- protected final int elementSize;
- protected int currentElementIxForScan;
- protected int currentOffsetForScan;
- protected int currentPageId;
-
- protected int startPageId;
- protected int endPageId;
- protected int startOff;
- protected int numElements;
- protected int numPages;
-
- protected final FixedSizeTupleReference tuple;
- protected ICachedPage page;
-
- protected boolean pinned;
- protected int pinnedPageId = -1;
- protected final IIndexCursorStats stats;
-
- public FixedSizeElementInvertedListScanCursor(IBufferCache bufferCache, int fileId, ITypeTraits[] invListFields,
- IIndexCursorStats stats) throws HyracksDataException {
- this.bufferCache = bufferCache;
- this.fileId = fileId;
- int tmpSize = 0;
- for (int i = 0; i < invListFields.length; i++) {
- tmpSize += invListFields[i].getFixedLength();
- }
- elementSize = tmpSize;
- this.currentElementIxForScan = 0;
- this.currentOffsetForScan = -elementSize;
- this.currentPageId = 0;
- this.startPageId = 0;
- this.endPageId = 0;
- this.startOff = 0;
- this.numElements = 0;
- this.numPages = 0;
- this.tuple = new FixedSizeTupleReference(invListFields);
- this.pinned = false;
- this.stats = stats;
- }
-
- @Override
- public boolean doHasNext() {
- return currentElementIxForScan < numElements;
- }
-
- @Override
- public void doNext() throws HyracksDataException {
- if (currentOffsetForScan + 2 * elementSize > bufferCache.getPageSize()) {
- // Read the next page.
- currentOffsetForScan = 0;
- loadPages();
- } else {
- currentOffsetForScan += elementSize;
- }
- currentElementIxForScan++;
- tuple.reset(page.getBuffer().array(), currentOffsetForScan);
- }
-
- @Override
- public void prepareLoadPages() throws HyracksDataException {
- // No-op for this cursor since it only loads one page to the buffer cache at a time.
- }
-
- /**
- * Loads one page from the inverted list into the buffer cache.
- */
- @Override
- public void loadPages() throws HyracksDataException {
- if (currentPageId == endPageId) {
- // inverted list exhausted, return
- return;
- }
- currentPageId++;
- if (pinned && pinnedPageId == currentPageId) {
- // already pinned, return
- return;
- }
- unloadPages();
- page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, currentPageId), false);
- pinnedPageId = currentPageId;
- pinned = true;
- stats.getPageCounter().update(1);
-
- }
-
- @Override
- public void unloadPages() throws HyracksDataException {
- if (pinned) {
- bufferCache.unpin(page);
- pinned = false;
- }
- }
-
- @Override
- protected void setInvListInfo(int startPageId, int endPageId, int startOff, int numElements)
- throws HyracksDataException {
- this.startPageId = startPageId;
- this.endPageId = endPageId;
- this.startOff = startOff;
- this.numElements = numElements;
- this.currentElementIxForScan = 0;
- this.currentOffsetForScan = startOff - elementSize;
- // Deducts 1 since the startPage would be set to bufferCurrentPageId + 1 in loadPages().
- this.currentPageId = startPageId - 1;
- this.numPages = endPageId - startPageId + 1;
- }
-
- @Override
- public int compareTo(InvertedListCursor invListCursor) {
- try {
- return numElements - invListCursor.size();
- } catch (HyracksDataException hde) {
- throw new IllegalStateException(hde);
- }
- }
-
- @Override
- public int size() {
- return numElements;
- }
-
- @Override
- public ITupleReference doGetTuple() {
- return tuple;
- }
-
- @Override
- public void doClose() throws HyracksDataException {
- // No op
- // We allow the inverted list cursor to hold at most one page to avoid
- // unnecessary pins
- }
-
- @Override
- public void doDestroy() throws HyracksDataException {
- unloadPages();
- }
-
- @Override
- public boolean containsKey(ITupleReference searchTuple, MultiComparator invListCmp) throws HyracksDataException {
- // This method is designed for a random search.
- return false;
- }
-
- @Override
- public String printInvList(ISerializerDeserializer[] serdes) throws HyracksDataException {
- return null;
- }
-
- @Override
- public String printCurrentElement(ISerializerDeserializer[] serdes) throws HyracksDataException {
- return null;
- }
-
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleAccessor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleAccessor.java
deleted file mode 100644
index 23854f9..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleAccessor.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
-
-import java.nio.ByteBuffer;
-
-import org.apache.hyracks.api.comm.FrameHelper;
-import org.apache.hyracks.api.comm.IFrameTupleAccessor;
-import org.apache.hyracks.api.dataflow.value.ITypeTraits;
-
-/**
- * This is a fixed-size tuple accessor class.
- * The frame structure: [4 bytes for minimum Hyracks frame count] [fixed-size tuple 1] ... [fixed-size tuple n] ...
- * [4 bytes for the tuple count in a frame]
- */
-public class FixedSizeFrameTupleAccessor implements IFrameTupleAccessor {
-
- private final int frameSize;
- private ByteBuffer buffer;
-
- private final ITypeTraits[] fields;
- private final int[] fieldStartOffsets;
- private final int tupleSize;
-
- public FixedSizeFrameTupleAccessor(int frameSize, ITypeTraits[] fields) {
- this.frameSize = frameSize;
- this.fields = fields;
- this.fieldStartOffsets = new int[fields.length];
- this.fieldStartOffsets[0] = 0;
- for (int i = 1; i < fields.length; i++) {
- fieldStartOffsets[i] = fieldStartOffsets[i - 1] + fields[i - 1].getFixedLength();
- }
-
- int tmp = 0;
- for (int i = 0; i < fields.length; i++) {
- tmp += fields[i].getFixedLength();
- }
- tupleSize = tmp;
- }
-
- @Override
- public ByteBuffer getBuffer() {
- return buffer;
- }
-
- @Override
- public int getFieldCount() {
- return fields.length;
- }
-
- @Override
- public int getFieldEndOffset(int tupleIndex, int fIdx) {
- return getTupleStartOffset(tupleIndex) + fieldStartOffsets[fIdx] + fields[fIdx].getFixedLength();
- }
-
- @Override
- public int getFieldLength(int tupleIndex, int fIdx) {
- return fields[fIdx].getFixedLength();
- }
-
- @Override
- public int getTupleLength(int tupleIndex) {
- return getTupleEndOffset(tupleIndex) - getTupleStartOffset(tupleIndex);
- }
-
- @Override
- public int getFieldSlotsLength() {
- return 0;
- }
-
- @Override
- public int getFieldStartOffset(int tupleIndex, int fIdx) {
- return getTupleStartOffset(tupleIndex) + fieldStartOffsets[fIdx];
- }
-
- @Override
- public int getTupleCount() {
- return buffer != null ? buffer.getInt(FrameHelper.getTupleCountOffset(frameSize)) : 0;
- }
-
- @Override
- public int getTupleEndOffset(int tupleIndex) {
- return getFieldEndOffset(tupleIndex, fields.length - 1);
- }
-
- @Override
- public int getTupleStartOffset(int tupleIndex) {
- return FixedSizeFrameTupleAppender.MINFRAME_COUNT_SIZE + tupleIndex * tupleSize;
- }
-
- @Override
- public int getAbsoluteFieldStartOffset(int tupleIndex, int fIdx) {
- return getTupleStartOffset(tupleIndex) + getFieldSlotsLength() + getFieldStartOffset(tupleIndex, fIdx);
- }
-
- @Override
- public void reset(ByteBuffer buffer) {
- this.buffer = buffer;
- }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleAppender.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleAppender.java
deleted file mode 100644
index 85d8576..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleAppender.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
-
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-
-import org.apache.hyracks.api.comm.FrameHelper;
-import org.apache.hyracks.api.dataflow.value.ITypeTraits;
-
-/**
- * An appender class for an inverted list. Each frame has two integer values at the beginning and at the end.
- * The first represents the number of minimum Hyracks frames in a frame. Currently, we use 1 for this value.
- * The latter represents the number of tuples in a frame. This design is required since we may need to use
- * RunFileWriter and RunFileReader class during the inverted-index-search operation.
- */
-public class FixedSizeFrameTupleAppender {
-
- // At the end of a frame, an integer value is written to keep the tuple count in this frame.
- public static final int TUPLE_COUNT_SIZE = 4;
- // At the beginning of a frame, an integer value is written to keep the number of minimum frames in this frame.
- // For this class, the frame size is equal to the minimum frame size in Hyracks.
- public static final int MINFRAME_COUNT_SIZE = 4;
-
- private final int frameSize;
- private final int tupleSize;
- private ByteBuffer buffer;
- private int tupleCount;
- private int tupleDataEndOffset;
-
- public FixedSizeFrameTupleAppender(int frameSize, ITypeTraits[] fields) {
- this.frameSize = frameSize;
- int tmp = 0;
- for (int i = 0; i < fields.length; i++) {
- tmp += fields[i].getFixedLength();
- }
- tupleSize = tmp;
- }
-
- public void reset(ByteBuffer buffer) {
- reset(buffer, true, 0, MINFRAME_COUNT_SIZE);
- }
-
- public void reset(ByteBuffer buffer, boolean clear, int tupleCount, int tupleDataEndOffset) {
- this.buffer = buffer;
- if (clear) {
- Arrays.fill(this.buffer.array(), (byte) 0);
- this.buffer.clear();
- // the number of minimum frames in a frame - it's one.
- FrameHelper.serializeFrameSize(this.buffer, 1);
- }
- // tuple count
- this.buffer.putInt(FrameHelper.getTupleCountOffset(frameSize), tupleCount);
- this.tupleCount = tupleCount;
- this.tupleDataEndOffset = tupleDataEndOffset;
- }
-
- public boolean append(byte[] bytes, int offset) {
- if (tupleDataEndOffset + tupleSize + TUPLE_COUNT_SIZE <= frameSize) {
- System.arraycopy(bytes, offset, buffer.array(), tupleDataEndOffset, tupleSize);
- tupleDataEndOffset += tupleSize;
- tupleCount++;
- return true;
- }
- return false;
- }
-
- public boolean append(byte[] bytes, int offset, int length) {
- if (tupleDataEndOffset + length + TUPLE_COUNT_SIZE <= frameSize) {
- System.arraycopy(bytes, offset, buffer.array(), tupleDataEndOffset, length);
- tupleDataEndOffset += length;
- return true;
- }
- return false;
- }
-
- public boolean append(int fieldValue) {
- if (tupleDataEndOffset + 4 + TUPLE_COUNT_SIZE <= frameSize) {
- buffer.putInt(tupleDataEndOffset, fieldValue);
- tupleDataEndOffset += 4;
- tupleCount++;
- return true;
- }
- return false;
- }
-
- public boolean append(long fieldValue) {
- if (tupleDataEndOffset + 8 + TUPLE_COUNT_SIZE <= frameSize) {
- buffer.putLong(tupleDataEndOffset, fieldValue);
- tupleDataEndOffset += 8;
- tupleCount++;
- return true;
- }
- return false;
- }
-
- public boolean append(char fieldValue) {
- if (tupleDataEndOffset + 2 + TUPLE_COUNT_SIZE <= frameSize) {
- buffer.putLong(tupleDataEndOffset, fieldValue);
- tupleDataEndOffset += 2;
- tupleCount++;
- return true;
- }
- return false;
- }
-
- public boolean append(byte fieldValue) {
- if (tupleDataEndOffset + 1 + TUPLE_COUNT_SIZE <= frameSize) {
- buffer.put(tupleDataEndOffset, fieldValue);
- tupleDataEndOffset += 1;
- tupleCount++;
- return true;
- }
- return false;
- }
-
- // returns true if an entire tuple fits
- // returns false otherwise
- public boolean hasSpace() {
- return tupleDataEndOffset + tupleSize + TUPLE_COUNT_SIZE <= frameSize;
- }
-
- public void incrementTupleCount(int count) {
- buffer.putInt(FrameHelper.getTupleCountOffset(frameSize),
- buffer.getInt(FrameHelper.getTupleCountOffset(frameSize)) + count);
- }
-
- public int getTupleCount() {
- return tupleCount;
- }
-
- public ByteBuffer getBuffer() {
- return buffer;
- }
-
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeTupleReference.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeTupleReference.java
deleted file mode 100644
index 5908b5c..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeTupleReference.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
-
-import org.apache.hyracks.api.dataflow.value.ITypeTraits;
-import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-
-public class FixedSizeTupleReference implements ITupleReference {
-
- private final ITypeTraits[] typeTraits;
- private final int[] fieldStartOffsets;
- private byte[] data;
- private int startOff;
-
- public FixedSizeTupleReference(ITypeTraits[] typeTraits) {
- this.typeTraits = typeTraits;
- this.fieldStartOffsets = new int[typeTraits.length];
- this.fieldStartOffsets[0] = 0;
- for (int i = 1; i < typeTraits.length; i++) {
- fieldStartOffsets[i] = fieldStartOffsets[i - 1] + typeTraits[i - 1].getFixedLength();
- }
- }
-
- public void reset(byte[] data, int startOff) {
- this.data = data;
- this.startOff = startOff;
- }
-
- @Override
- public int getFieldCount() {
- return typeTraits.length;
- }
-
- @Override
- public byte[] getFieldData(int fIdx) {
- return data;
- }
-
- @Override
- public int getFieldLength(int fIdx) {
- return typeTraits[fIdx].getFixedLength();
- }
-
- @Override
- public int getFieldStart(int fIdx) {
- return startOff + fieldStartOffsets[fIdx];
- }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/InvertedListBuilderFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/InvertedListBuilderFactory.java
new file mode 100644
index 0000000..0d00ed3
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/InvertedListBuilderFactory.java
@@ -0,0 +1,50 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
+
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListBuilder;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListBuilderFactory;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize.FixedSizeElementInvertedListBuilder;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.variablesize.VariableSizeElementInvertedListBuilder;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
+
+public class InvertedListBuilderFactory implements IInvertedListBuilderFactory {
+
+ protected final ITypeTraits[] invListFields;
+ protected final ITypeTraits[] tokenTypeTraits;
+ private final boolean isFixedSize;
+
+ public InvertedListBuilderFactory(ITypeTraits[] tokenTypeTraits, ITypeTraits[] invListFields) {
+ this.tokenTypeTraits = tokenTypeTraits;
+ this.invListFields = invListFields;
+
+ isFixedSize = InvertedIndexUtils.checkTypeTraitsAllFixed(invListFields);
+ }
+
+ @Override
+ public IInvertedListBuilder create() throws HyracksDataException {
+ if (isFixedSize) {
+ return new FixedSizeElementInvertedListBuilder(invListFields);
+ } else {
+ return new VariableSizeElementInvertedListBuilder(tokenTypeTraits, invListFields);
+ }
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/InvertedListSearchResultFrameTupleAppender.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/InvertedListSearchResultFrameTupleAppender.java
new file mode 100644
index 0000000..26c3f9c
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/InvertedListSearchResultFrameTupleAppender.java
@@ -0,0 +1,142 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
+
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+
+import org.apache.hyracks.api.comm.FrameHelper;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListSearchResultFrameTupleAppender;
+
+/**
+ * This class is mainly to write the intermediate results in the inverted-index **search** operation.
+ * For the inverted list building phrase, please refer to IInvertedListBuilder.
+ *
+ * An appender class for an inverted list. Each frame has two integer values at the beginning and at the end.
+ * The first represents the number of minimum Hyracks frames in a frame. Currently, we use 1 for this value.
+ * The latter represents the number of tuples in a frame. This design is required since we may need to use
+ * RunFileWriter and RunFileReader class during the inverted-index-search operation.
+ *
+ * Note that this appender is not aware of the tuple element type, and the length of the tuple is given by the caller
+ * at run time.
+ */
+public class InvertedListSearchResultFrameTupleAppender implements IInvertedListSearchResultFrameTupleAppender {
+
+ // At the end of a frame, an integer value is written to keep the tuple count in this frame.
+ public static final int TUPLE_COUNT_SIZE = 4;
+ // At the beginning of a frame, an integer value is written to keep the number of minimum frames in this frame.
+ // For this class, the frame size is equal to the minimum frame size in Hyracks.
+ public static final int MINFRAME_COUNT_SIZE = 4;
+
+ private final int frameSize;
+ private ByteBuffer buffer;
+ private int tupleCount;
+ private int tupleDataEndOffset;
+
+ public InvertedListSearchResultFrameTupleAppender(int frameSize) {
+ this.frameSize = frameSize;
+ }
+
+ public void reset(ByteBuffer buffer) {
+ reset(buffer, true, 0, MINFRAME_COUNT_SIZE);
+ }
+
+ public void reset(ByteBuffer buffer, boolean clear, int tupleCount, int tupleDataEndOffset) {
+ this.buffer = buffer;
+ if (clear) {
+ Arrays.fill(this.buffer.array(), (byte) 0);
+ this.buffer.clear();
+ // the number of minimum frames in a frame - it's one.
+ FrameHelper.serializeFrameSize(this.buffer, 1);
+ }
+ // tuple count
+ this.buffer.putInt(FrameHelper.getTupleCountOffset(frameSize), tupleCount);
+ this.tupleCount = tupleCount;
+ this.tupleDataEndOffset = tupleDataEndOffset;
+ }
+
+ public boolean append(byte[] bytes, int offset, int length) {
+ if (tupleDataEndOffset + length + TUPLE_COUNT_SIZE <= frameSize) {
+ System.arraycopy(bytes, offset, buffer.array(), tupleDataEndOffset, length);
+ tupleDataEndOffset += length;
+ return true;
+ }
+ return false;
+ }
+
+ public boolean append(int fieldValue) {
+ if (tupleDataEndOffset + 4 + TUPLE_COUNT_SIZE <= frameSize) {
+ buffer.putInt(tupleDataEndOffset, fieldValue);
+ tupleDataEndOffset += 4;
+ return true;
+ }
+ return false;
+ }
+
+ public boolean append(long fieldValue) {
+ if (tupleDataEndOffset + 8 + TUPLE_COUNT_SIZE <= frameSize) {
+ buffer.putLong(tupleDataEndOffset, fieldValue);
+ tupleDataEndOffset += 8;
+ return true;
+ }
+ return false;
+ }
+
+ public boolean append(char fieldValue) {
+ if (tupleDataEndOffset + 2 + TUPLE_COUNT_SIZE <= frameSize) {
+ buffer.putLong(tupleDataEndOffset, fieldValue);
+ tupleDataEndOffset += 2;
+ return true;
+ }
+ return false;
+ }
+
+ public boolean append(byte fieldValue) {
+ if (tupleDataEndOffset + 1 + TUPLE_COUNT_SIZE <= frameSize) {
+ buffer.put(tupleDataEndOffset, fieldValue);
+ tupleDataEndOffset += 1;
+ return true;
+ }
+ return false;
+ }
+
+ public boolean hasSpace(int length) {
+ return tupleDataEndOffset + length + TUPLE_COUNT_SIZE <= frameSize;
+ }
+
+ public void incrementTupleCount(int count) {
+ int tupleCountOffset = FrameHelper.getTupleCountOffset(frameSize);
+ int currentCount = buffer.getInt(tupleCountOffset);
+ int newCount = currentCount + count;
+ buffer.putInt(tupleCountOffset, newCount);
+
+ tupleCount += count;
+ assert tupleCount == newCount;
+ }
+
+ public int getTupleCount() {
+ return tupleCount;
+ }
+
+ public ByteBuffer getBuffer() {
+ return buffer;
+ }
+
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
index ec1f143..0f26435 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
@@ -47,11 +47,15 @@
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexAccessor;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexSearcher;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListBuilder;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.impls.LSMInvertedIndexSearchCursorInitialState;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize.FixedSizeElementInvertedListScanCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize.FixedSizeElementOnDiskInvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.variablesize.VariableSizeElementOnDiskInvertedListCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.search.InvertedIndexSearchPredicate;
import org.apache.hyracks.storage.am.lsm.invertedindex.search.TOccurrenceSearcher;
import org.apache.hyracks.storage.am.lsm.invertedindex.tuples.TokenKeyPairTuple;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
import org.apache.hyracks.storage.common.IIndexAccessParameters;
import org.apache.hyracks.storage.common.IIndexAccessor;
import org.apache.hyracks.storage.common.IIndexBulkLoader;
@@ -189,18 +193,28 @@
}
@Override
- public InvertedListCursor createInvertedListCursor(IHyracksTaskContext ctx) throws HyracksDataException {
- return new FixedSizeElementInvertedListCursor(bufferCache, fileId, invListTypeTraits, ctx,
- NoOpIndexCursorStats.INSTANCE);
+ public IInvertedListCursor createInvertedListCursor(IHyracksTaskContext ctx) throws HyracksDataException {
+ if (InvertedIndexUtils.checkTypeTraitsAllFixed(invListTypeTraits)) {
+ return new FixedSizeElementOnDiskInvertedListCursor(bufferCache, fileId, invListTypeTraits, ctx,
+ NoOpIndexCursorStats.INSTANCE);
+ } else {
+ return new VariableSizeElementOnDiskInvertedListCursor(bufferCache, fileId, invListTypeTraits, ctx,
+ NoOpIndexCursorStats.INSTANCE);
+ }
}
@Override
- public InvertedListCursor createInvertedListRangeSearchCursor(IIndexCursorStats stats) throws HyracksDataException {
- return new FixedSizeElementInvertedListScanCursor(bufferCache, fileId, invListTypeTraits, stats);
+ public IInvertedListCursor createInvertedListRangeSearchCursor(IIndexCursorStats stats)
+ throws HyracksDataException {
+ if (InvertedIndexUtils.checkTypeTraitsAllFixed(invListTypeTraits)) {
+ return new FixedSizeElementInvertedListScanCursor(bufferCache, fileId, invListTypeTraits, stats);
+ } else {
+ return new VariableSizeElementOnDiskInvertedListCursor(bufferCache, fileId, invListTypeTraits, stats);
+ }
}
@Override
- public void openInvertedListCursor(InvertedListCursor listCursor, ITupleReference searchKey,
+ public void openInvertedListCursor(IInvertedListCursor listCursor, ITupleReference searchKey,
IIndexOperationContext ictx) throws HyracksDataException {
OnDiskInvertedIndexOpContext ctx = (OnDiskInvertedIndexOpContext) ictx;
ctx.getBtreePred().setLowKeyComparator(ctx.getSearchCmp());
@@ -222,7 +236,7 @@
}
}
- public void openInvertedListCursor(ITupleReference btreeTuple, InvertedListCursor listCursor,
+ public void openInvertedListCursor(ITupleReference btreeTuple, IInvertedListCursor listCursor,
OnDiskInvertedIndexOpContext opCtx) throws HyracksDataException {
int startPageId = IntegerPointable.getInteger(btreeTuple.getFieldData(invListStartPageIdField),
btreeTuple.getFieldStart(invListStartPageIdField));
@@ -512,12 +526,12 @@
}
@Override
- public InvertedListCursor createInvertedListCursor() throws HyracksDataException {
+ public IInvertedListCursor createInvertedListCursor() throws HyracksDataException {
return index.createInvertedListCursor(ctx);
}
@Override
- public void openInvertedListCursor(InvertedListCursor listCursor, ITupleReference searchKey)
+ public void openInvertedListCursor(IInvertedListCursor listCursor, ITupleReference searchKey)
throws HyracksDataException {
index.openInvertedListCursor(listCursor, searchKey, opCtx);
}
@@ -618,7 +632,7 @@
ArrayTupleReference prevTuple = new ArrayTupleReference();
IInvertedIndexAccessor invIndexAccessor = createAccessor(NoOpIndexAccessParameters.INSTANCE);
try {
- InvertedListCursor invListCursor = createInvertedListRangeSearchCursor(NoOpIndexCursorStats.INSTANCE);
+ IInvertedListCursor invListCursor = createInvertedListRangeSearchCursor(NoOpIndexCursorStats.INSTANCE);
MultiComparator invListCmp = MultiComparator.create(invListCmpFactories);
while (btreeCursor.hasNext()) {
btreeCursor.next();
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java
index 8ec9876..1d90180 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java
@@ -25,7 +25,7 @@
import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
import org.apache.hyracks.storage.am.common.api.IIndexOperationContext;
import org.apache.hyracks.storage.am.common.impls.IndexAccessParameters;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.tuples.TokenKeyPairTuple;
import org.apache.hyracks.storage.common.EnforcedIndexCursor;
import org.apache.hyracks.storage.common.ICursorInitialState;
@@ -44,7 +44,7 @@
private final IIndexAccessor btreeAccessor;
private final OnDiskInvertedIndex invIndex;
private final IIndexOperationContext opCtx;
- private final InvertedListCursor invListRangeSearchCursor;
+ private final IInvertedListCursor invListRangeSearchCursor;
private boolean isInvListCursorOpen;
private final IIndexCursor btreeCursor;
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/PartitionedOnDiskInvertedIndex.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/PartitionedOnDiskInvertedIndex.java
index 1521887..fa5c365 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/PartitionedOnDiskInvertedIndex.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/PartitionedOnDiskInvertedIndex.java
@@ -29,8 +29,8 @@
import org.apache.hyracks.storage.am.common.api.IPageManagerFactory;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexSearcher;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListBuilder;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IPartitionedInvertedIndex;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.search.InvertedIndexSearchPredicate;
import org.apache.hyracks.storage.am.lsm.invertedindex.search.InvertedListPartitions;
import org.apache.hyracks.storage.am.lsm.invertedindex.search.PartitionedTOccurrenceSearcher;
@@ -113,7 +113,7 @@
ITupleReference btreeTuple = ctx.getBtreeCursor().getTuple();
short numTokens = ShortPointable.getShort(btreeTuple.getFieldData(PARTITIONING_NUM_TOKENS_FIELD),
btreeTuple.getFieldStart(PARTITIONING_NUM_TOKENS_FIELD));
- InvertedListCursor invListCursor = partSearcher.getCachedInvertedListCursor();
+ IInvertedListCursor invListCursor = partSearcher.getCachedInvertedListCursor();
openInvertedListCursor(btreeTuple, invListCursor, ctx);
invListPartitions.addInvertedListCursor(invListCursor, numTokens);
tokenExists = true;
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeElementInvertedListBuilder.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeElementInvertedListBuilder.java
new file mode 100644
index 0000000..de6b4c9
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeElementInvertedListBuilder.java
@@ -0,0 +1,74 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize;
+
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.AbstractInvertedListBuilder;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
+
+public class FixedSizeElementInvertedListBuilder extends AbstractInvertedListBuilder {
+ private final int listElementSize;
+
+ public FixedSizeElementInvertedListBuilder(ITypeTraits[] invListFields) throws HyracksDataException {
+ super(invListFields);
+ InvertedIndexUtils.verifyAllFixedSizeTypeTrait(invListFields);
+
+ int tmp = 0;
+ for (int i = 0; i < invListFields.length; i++) {
+ tmp += invListFields[i].getFixedLength();
+ }
+ listElementSize = tmp;
+ }
+
+ @Override
+ public boolean startNewList(ITupleReference tuple, int numTokenFields) {
+ if (pos + listElementSize > targetBuf.length) {
+ return false;
+ } else {
+ listSize = 0;
+ return true;
+ }
+ }
+
+ @Override
+ public boolean appendElement(ITupleReference tuple, int numTokenFields, int numElementFields) {
+ if (pos + listElementSize > targetBuf.length) {
+ return false;
+ }
+
+ for (int i = 0; i < numElementFields; i++) {
+ int field = numTokenFields + i;
+ System.arraycopy(tuple.getFieldData(field), tuple.getFieldStart(field), targetBuf, pos,
+ tuple.getFieldLength(field));
+ }
+
+ listSize++;
+ pos += listElementSize;
+
+ return true;
+ }
+
+ @Override
+ public boolean isFixedSize() {
+ return true;
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeElementInvertedListScanCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeElementInvertedListScanCursor.java
new file mode 100644
index 0000000..c084e45
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeElementInvertedListScanCursor.java
@@ -0,0 +1,198 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize;
+
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListTupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.impls.AbstractInvertedListCursor;
+import org.apache.hyracks.storage.common.IIndexCursorStats;
+import org.apache.hyracks.storage.common.MultiComparator;
+import org.apache.hyracks.storage.common.buffercache.IBufferCache;
+import org.apache.hyracks.storage.common.buffercache.ICachedPage;
+import org.apache.hyracks.storage.common.file.BufferedFileHandle;
+
+/**
+ * A simple scan cursor that only reads a frame by frame from the inverted list on disk. This cursor does not
+ * conduct a binary search. It only supports the scan operation. The main purpose of this cursor is
+ * doing a full-scan of an inverted list during a storage-component-merge process.
+ */
+public class FixedSizeElementInvertedListScanCursor extends AbstractInvertedListCursor {
+
+ protected final IBufferCache bufferCache;
+ protected final int fileId;
+ protected final int elementSize;
+ protected int currentElementIxForScan;
+ protected int currentOffsetForScan;
+ protected int currentPageId;
+
+ protected int startPageId;
+ protected int endPageId;
+ protected int startOff;
+ protected int numElements;
+ protected int numPages;
+
+ protected final IInvertedListTupleReference tuple;
+ protected ICachedPage page;
+
+ protected boolean pinned;
+ protected int pinnedPageId = -1;
+ protected final IIndexCursorStats stats;
+
+ public FixedSizeElementInvertedListScanCursor(IBufferCache bufferCache, int fileId, ITypeTraits[] invListFields,
+ IIndexCursorStats stats) throws HyracksDataException {
+ this.bufferCache = bufferCache;
+ this.fileId = fileId;
+ int tmpSize = 0;
+ for (int i = 0; i < invListFields.length; i++) {
+ tmpSize += invListFields[i].getFixedLength();
+ }
+ elementSize = tmpSize;
+ this.currentElementIxForScan = 0;
+ this.currentOffsetForScan = -elementSize;
+ this.currentPageId = 0;
+ this.startPageId = 0;
+ this.endPageId = 0;
+ this.startOff = 0;
+ this.numElements = 0;
+ this.numPages = 0;
+ this.tuple = new FixedSizeInvertedListTupleReference(invListFields);
+ this.pinned = false;
+ this.stats = stats;
+ }
+
+ @Override
+ public boolean doHasNext() {
+ return currentElementIxForScan < numElements;
+ }
+
+ @Override
+ public void doNext() throws HyracksDataException {
+ if (currentOffsetForScan + 2 * elementSize > bufferCache.getPageSize()) {
+ // Read the next page.
+ currentOffsetForScan = 0;
+ loadPages();
+ } else {
+ currentOffsetForScan += elementSize;
+ }
+ currentElementIxForScan++;
+ tuple.reset(page.getBuffer().array(), currentOffsetForScan);
+ }
+
+ @Override
+ public void prepareLoadPages() throws HyracksDataException {
+ // No-op for this cursor since it only loads one page to the buffer cache at a time.
+ }
+
+ /**
+ * Loads one page from the inverted list into the buffer cache.
+ */
+ @Override
+ public void loadPages() throws HyracksDataException {
+ if (currentPageId == endPageId) {
+ // inverted list exhausted, return
+ return;
+ }
+ currentPageId++;
+ if (pinned && pinnedPageId == currentPageId) {
+ // already pinned, return
+ return;
+ }
+ unloadPages();
+ page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, currentPageId), false);
+ pinnedPageId = currentPageId;
+ pinned = true;
+ stats.getPageCounter().update(1);
+
+ }
+
+ @Override
+ public void unloadPages() throws HyracksDataException {
+ if (pinned) {
+ bufferCache.unpin(page);
+ pinned = false;
+ }
+ }
+
+ @Override
+ protected void setInvListInfo(int startPageId, int endPageId, int startOff, int numElements)
+ throws HyracksDataException {
+ this.startPageId = startPageId;
+ this.endPageId = endPageId;
+ this.startOff = startOff;
+ this.numElements = numElements;
+ this.currentElementIxForScan = 0;
+ this.currentOffsetForScan = startOff - elementSize;
+ // Deducts 1 since the startPage would be set to bufferCurrentPageId + 1 in loadPages().
+ this.currentPageId = startPageId - 1;
+ this.numPages = endPageId - startPageId + 1;
+ }
+
+ @Override
+ public int compareTo(IInvertedListCursor invListCursor) {
+ try {
+ return numElements - invListCursor.size();
+ } catch (HyracksDataException hde) {
+ throw new IllegalStateException(hde);
+ }
+ }
+
+ @Override
+ public int size() {
+ return numElements;
+ }
+
+ @Override
+ public ITupleReference doGetTuple() {
+ return tuple;
+ }
+
+ @Override
+ public void doClose() throws HyracksDataException {
+ // No op
+ // We allow the inverted list cursor to hold at most one page to avoid
+ // unnecessary pins
+ }
+
+ @Override
+ public void doDestroy() throws HyracksDataException {
+ unloadPages();
+ }
+
+ @Override
+ public boolean containsKey(ITupleReference searchTuple, MultiComparator invListCmp) throws HyracksDataException {
+ // This method is designed for a random search.
+ return false;
+ }
+
+ @Override
+ public String printInvList(ISerializerDeserializer[] serdes) throws HyracksDataException {
+ return null;
+ }
+
+ @Override
+ public String printCurrentElement(ISerializerDeserializer[] serdes) throws HyracksDataException {
+ return null;
+ }
+
+}
\ No newline at end of file
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeElementOnDiskInvertedListCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeElementOnDiskInvertedListCursor.java
new file mode 100644
index 0000000..11c0901
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeElementOnDiskInvertedListCursor.java
@@ -0,0 +1,272 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInput;
+import java.io.DataInputStream;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListTupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.impls.AbstractOnDiskInvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
+import org.apache.hyracks.storage.common.IIndexCursorStats;
+import org.apache.hyracks.storage.common.MultiComparator;
+import org.apache.hyracks.storage.common.buffercache.IBufferCache;
+
+/**
+ * A cursor class that traverse an inverted list that consists of fixed-size elements on disk
+ *
+ */
+public class FixedSizeElementOnDiskInvertedListCursor extends AbstractOnDiskInvertedListCursor {
+
+ private final int elementSize;
+ private int bufferEndElementIx;
+ // The last element in the current range in memory
+ protected final IInvertedListTupleReference bufferEndElementTuple;
+ // The last element index per page
+ private int[] elementIndexes = new int[10];
+
+ public FixedSizeElementOnDiskInvertedListCursor(IBufferCache bufferCache, int fileId, ITypeTraits[] invListFields,
+ IHyracksTaskContext ctx, IIndexCursorStats stats) throws HyracksDataException {
+ super(bufferCache, fileId, invListFields, ctx, stats);
+
+ this.bufferEndElementIx = 0;
+ this.bufferEndElementTuple = InvertedIndexUtils.createInvertedListTupleReference(invListFields);
+
+ int tmpSize = 0;
+ for (int i = 0; i < invListFields.length; i++) {
+ tmpSize += invListFields[i].getFixedLength();
+ }
+ elementSize = tmpSize;
+ this.currentOffsetForScan = -elementSize;
+ }
+
+ /**
+ * Returns the next element.
+ */
+ @Override
+ public void doNext() throws HyracksDataException {
+ if (currentOffsetForScan + 2 * elementSize > bufferCache.getPageSize()) {
+ currentPageIxForScan++;
+ currentOffsetForScan = 0;
+ } else {
+ currentOffsetForScan += elementSize;
+ }
+
+ // Needs to read the next block?
+ if (currentElementIxForScan > bufferEndElementIx && endPageId > bufferEndPageId) {
+ loadPages();
+ currentOffsetForScan = 0;
+ }
+
+ currentElementIxForScan++;
+
+ tuple.reset(buffers.get(currentPageIxForScan).array(), currentOffsetForScan);
+ }
+
+ /**
+ * Updates the information about this block.
+ */
+ @Override
+ protected void setBlockInfo() {
+ super.setBlockInfo();
+
+ bufferStartElementIx =
+ bufferStartPageId == startPageId ? 0 : elementIndexes[bufferStartPageId - startPageId - 1] + 1;
+ bufferEndElementIx = elementIndexes[bufferEndPageId - startPageId];
+ // Gets the final element tuple in this block.
+ getElementAtIndex(bufferEndElementIx, bufferEndElementTuple);
+ }
+
+ /**
+ * Gets the tuple for the given element index.
+ */
+ private void getElementAtIndex(int elementIx, IInvertedListTupleReference tuple) {
+ int currentPageIx =
+ binarySearch(elementIndexes, bufferStartPageId - startPageId, bufferNumLoadedPages, elementIx);
+ if (currentPageIx < 0) {
+ throw new IndexOutOfBoundsException(
+ "Requested index: " + elementIx + " from array with numElements: " + numElements);
+ }
+
+ int currentOff;
+ if (currentPageIx == 0) {
+ currentOff = startOff + elementIx * elementSize;
+ } else {
+ int relativeElementIx = elementIx - elementIndexes[currentPageIx - 1] - 1;
+ currentOff = relativeElementIx * elementSize;
+ }
+ // Gets the actual index in the buffers since buffers.size() can be smaller than the total number of pages.
+ int bufferIdx = currentPageIx % buffers.size();
+ tuple.reset(buffers.get(bufferIdx).array(), currentOff);
+ }
+
+ /**
+ * Checks whether the given tuple exists on this inverted list. This method is used when doing a random traversal.
+ */
+ @Override
+ public boolean containsKey(ITupleReference searchTuple, MultiComparator invListCmp) throws HyracksDataException {
+ // If the given element is greater than the last element in the current buffer, reads the next block.
+ if (needToReadNextBlock(searchTuple, invListCmp)) {
+ loadPages();
+ }
+ int mid = -1;
+ int begin = lastRandomSearchedElementIx;
+ int end = bufferEndElementIx;
+
+ while (begin <= end) {
+ mid = (begin + end) / 2;
+ getElementAtIndex(mid, tuple);
+ int cmp = invListCmp.compare(searchTuple, tuple);
+ if (cmp < 0) {
+ end = mid - 1;
+ } else if (cmp > 0) {
+ begin = mid + 1;
+ } else {
+ lastRandomSearchedElementIx = mid;
+ return true;
+ }
+ }
+
+ lastRandomSearchedElementIx = mid;
+ return false;
+ }
+
+ /**
+ * Checks whether the search tuple is greater than the last element in the current block of the cursor.
+ * If so, the cursor needs to load next block of the inverted list.
+ *
+ * @param searchTuple
+ * @param invListCmp
+ * @return true if the search tuple is greater than the last element in the current block of the cursor
+ * false if the search tuple is equal to or less than the last element in the current block of the cursor
+ * @throws HyracksDataException
+ */
+ private boolean needToReadNextBlock(ITupleReference searchTuple, MultiComparator invListCmp)
+ throws HyracksDataException {
+ if (moreBlocksToRead && invListCmp.compare(searchTuple, bufferEndElementTuple) > 0) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Opens the cursor for the given inverted list. After this open() call, prepreLoadPages() should be called
+ * before loadPages() are called. For more details, check prepapreLoadPages().
+ */
+ @Override
+ protected void setInvListInfo(int startPageId, int endPageId, int startOff, int numElements)
+ throws HyracksDataException {
+ super.setInvListInfo(startPageId, endPageId, startOff, numElements);
+
+ if (numPages > elementIndexes.length) {
+ elementIndexes = new int[numPages];
+ }
+ this.currentOffsetForScan = startOff - elementSize;
+ // Fills the last element index per page.
+ // first page
+ int cumulElements = (bufferCache.getPageSize() - startOff) / elementSize;
+ // Deducts 1 because this is the index, not the number of elements.
+ elementIndexes[0] = cumulElements - 1;
+
+ // middle, full pages
+ for (int i = 1; i < numPages - 1; i++) {
+ elementIndexes[i] = elementIndexes[i - 1] + (bufferCache.getPageSize() / elementSize);
+ }
+
+ // last page
+ // Deducts 1 because this is the index, not the number of elements.
+ elementIndexes[numPages - 1] = numElements - 1;
+ }
+
+ /**
+ * Prints the contents of the current inverted list (a debugging method).
+ */
+ @SuppressWarnings("rawtypes")
+ @Override
+ public String printInvList(ISerializerDeserializer[] serdes) throws HyracksDataException {
+ int oldCurrentOff = currentOffsetForScan;
+ int oldCurrentPageId = currentPageIxForScan;
+ int oldCurrentElementIx = currentElementIxForScan;
+
+ currentOffsetForScan = startOff - elementSize;
+ currentPageIxForScan = 0;
+ currentElementIxForScan = 0;
+
+ StringBuilder strBuilder = new StringBuilder();
+
+ while (hasNext()) {
+ next();
+ for (int i = 0; i < tuple.getFieldCount(); i++) {
+ ByteArrayInputStream inStream = new ByteArrayInputStream(tuple.getFieldData(i), tuple.getFieldStart(i),
+ tuple.getFieldLength(i));
+ DataInput dataIn = new DataInputStream(inStream);
+ Object o = serdes[i].deserialize(dataIn);
+ strBuilder.append(o.toString());
+ if (i + 1 < tuple.getFieldCount()) {
+ strBuilder.append(",");
+ }
+ }
+ strBuilder.append(" ");
+ }
+
+ // reset previous state
+ currentOffsetForScan = oldCurrentOff;
+ currentPageIxForScan = oldCurrentPageId;
+ currentElementIxForScan = oldCurrentElementIx;
+
+ return strBuilder.toString();
+ }
+
+ /**
+ * Conducts a binary search to get the index of the given key.
+ */
+ private int binarySearch(int[] arr, int arrStart, int arrLength, int key) {
+ int mid;
+ int begin = arrStart;
+ int end = arrStart + arrLength - 1;
+
+ while (begin <= end) {
+ mid = (begin + end) / 2;
+ int cmp = (key - arr[mid]);
+ if (cmp < 0) {
+ end = mid - 1;
+ } else if (cmp > 0) {
+ begin = mid + 1;
+ } else {
+ return mid;
+ }
+ }
+
+ if (begin > arr.length - 1) {
+ return -1;
+ }
+ if (key < arr[begin]) {
+ return begin;
+ } else {
+ return -1;
+ }
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeInvertedListSearchResultFrameTupleAccessor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeInvertedListSearchResultFrameTupleAccessor.java
new file mode 100644
index 0000000..e7a3f5d
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeInvertedListSearchResultFrameTupleAccessor.java
@@ -0,0 +1,106 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize;
+
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.ErrorCode;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.AbstractInvertedListSearchResultFrameTupleAccessor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.InvertedListSearchResultFrameTupleAppender;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
+
+/**
+ * This is a fixed-size tuple accessor class to get one inverted list.
+ * The frame structure: [4 bytes for minimum Hyracks frame count] [fixed-size tuple 1] ... [fixed-size tuple n] ...
+ * [4 bytes for the tuple count in a frame]
+ */
+public class FixedSizeInvertedListSearchResultFrameTupleAccessor
+ extends AbstractInvertedListSearchResultFrameTupleAccessor {
+
+ private final int tupleSize;
+ private final int[] fieldStartOffsets;
+
+ public FixedSizeInvertedListSearchResultFrameTupleAccessor(int frameSize, ITypeTraits[] fields)
+ throws HyracksDataException {
+ super(frameSize, fields);
+
+ this.fieldStartOffsets = new int[fields.length];
+ this.fieldStartOffsets[0] = 0;
+ for (int i = 1; i < fields.length; i++) {
+ fieldStartOffsets[i] = fieldStartOffsets[i - 1] + fields[i - 1].getFixedLength();
+ }
+
+ int tmp = 0;
+ for (int i = 0; i < fields.length; i++) {
+ tmp += fields[i].getFixedLength();
+ }
+ tupleSize = tmp;
+ }
+
+ @Override
+ protected void verifyTypeTraits() throws HyracksDataException {
+ InvertedIndexUtils.verifyAllFixedSizeTypeTrait(fields);
+
+ if (InvertedIndexUtils.checkTypeTraitsAllFixed(fields) == false) {
+ throw HyracksDataException.create(ErrorCode.INVALID_INVERTED_LIST_TYPE_TRAITS,
+ InvertedIndexUtils.EXPECT_ALL_FIX_GET_VAR_SIZE);
+ }
+ }
+
+ @Override
+ public int getFieldEndOffset(int tupleIndex, int fIdx) {
+ return getTupleStartOffset(tupleIndex) + fieldStartOffsets[fIdx] + fields[fIdx].getFixedLength();
+ }
+
+ @Override
+ public int getFieldLength(int tupleIndex, int fIdx) {
+ return fields[fIdx].getFixedLength();
+ }
+
+ @Override
+ public int getTupleLength(int tupleIndex) {
+ return getTupleEndOffset(tupleIndex) - getTupleStartOffset(tupleIndex);
+ }
+
+ @Override
+ public int getFieldSlotsLength() {
+ return 0;
+ }
+
+ @Override
+ public int getFieldStartOffset(int tupleIndex, int fIdx) {
+ return getTupleStartOffset(tupleIndex) + fieldStartOffsets[fIdx];
+ }
+
+ @Override
+ public int getTupleEndOffset(int tupleIndex) {
+ return getFieldEndOffset(tupleIndex, fields.length - 1);
+ }
+
+ @Override
+ public int getTupleStartOffset(int tupleIndex) {
+ return InvertedListSearchResultFrameTupleAppender.MINFRAME_COUNT_SIZE + tupleIndex * tupleSize;
+ }
+
+ @Override
+ public int getAbsoluteFieldStartOffset(int tupleIndex, int fIdx) {
+ return getTupleStartOffset(tupleIndex) + getFieldSlotsLength() + getFieldStartOffset(tupleIndex, fIdx);
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeInvertedListTupleReference.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeInvertedListTupleReference.java
new file mode 100644
index 0000000..9abedbb
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/fixedsize/FixedSizeInvertedListTupleReference.java
@@ -0,0 +1,49 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize;
+
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.AbstractInvertedListTupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
+
+public class FixedSizeInvertedListTupleReference extends AbstractInvertedListTupleReference {
+
+ public FixedSizeInvertedListTupleReference(ITypeTraits[] typeTraits) throws HyracksDataException {
+ super(typeTraits);
+ }
+
+ @Override
+ protected void verifyTypeTrait() throws HyracksDataException {
+ InvertedIndexUtils.verifyAllFixedSizeTypeTrait(typeTraits);
+ }
+
+ @Override
+ protected void calculateFieldStartOffsets() {
+ for (int i = 1; i < typeTraits.length; i++) {
+ fieldStartOffsets[i] = fieldStartOffsets[i - 1] + typeTraits[i - 1].getFixedLength();
+ }
+ }
+
+ @Override
+ public int getFieldLength(int fIdx) {
+ return typeTraits[fIdx].getFixedLength();
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/variablesize/VariableSizeElementInvertedListBuilder.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/variablesize/VariableSizeElementInvertedListBuilder.java
new file mode 100644
index 0000000..cfbb779
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/variablesize/VariableSizeElementInvertedListBuilder.java
@@ -0,0 +1,97 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk.variablesize;
+
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriter;
+import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriter;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.AbstractInvertedListBuilder;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
+
+// The last 4 bytes in the frame is reserved for the end offset (exclusive) of the last record in the current frame
+// i.e. the trailing space after the last record and before the last 4 bytes will be treated as empty
+public class VariableSizeElementInvertedListBuilder extends AbstractInvertedListBuilder {
+ private ITreeIndexTupleWriter writer;
+ protected final ITypeTraits[] allFields;
+
+ // The tokenTypeTraits is necessary because the underlying TypeAwareTupleWriter requires all the type traits of the tuple
+ // even if the first a few fields in the tuple are never accessed by the writer
+ public VariableSizeElementInvertedListBuilder(ITypeTraits[] tokenTypeTraits, ITypeTraits[] invListFields)
+ throws HyracksDataException {
+ super(invListFields);
+
+ this.allFields = new ITypeTraits[invListFields.length + tokenTypeTraits.length];
+ for (int i = 0; i < tokenTypeTraits.length; i++) {
+ allFields[i] = tokenTypeTraits[i];
+ }
+ for (int i = 0; i < invListFields.length; i++) {
+ allFields[i + tokenTypeTraits.length] = invListFields[i];
+ }
+ this.writer = new TypeAwareTupleWriter(allFields);
+
+ InvertedIndexUtils.verifyHasVarSizeTypeTrait(invListFields);
+ }
+
+ @Override
+ public boolean startNewList(ITupleReference tuple, int numTokenFields) {
+ if (!checkEnoughSpace(tuple, numTokenFields, tuple.getFieldCount() - numTokenFields)) {
+ return false;
+ } else {
+ listSize = 0;
+ return true;
+ }
+ }
+
+ private boolean checkEnoughSpace(ITupleReference tuple, int numTokenFields, int numElementFields) {
+ int numBytesRequired = writer.bytesRequired(tuple, numTokenFields, numElementFields);
+ return checkEnoughSpace(numBytesRequired);
+ }
+
+ private boolean checkEnoughSpace(int numBytesRequired) {
+ // The last 4 bytes are reserved for the end offset of the last record in the current page
+ if (pos + numBytesRequired + 4 > targetBuf.length) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public boolean appendElement(ITupleReference tuple, int numTokenFields, int numElementFields) {
+ int numBytesRequired = writer.bytesRequired(tuple, numTokenFields, numElementFields);
+
+ if (!checkEnoughSpace(numBytesRequired)) {
+ return false;
+ }
+
+ pos += writer.writeTupleFields(tuple, numTokenFields, numElementFields, targetBuf, pos);
+ listSize++;
+
+ InvertedIndexUtils.setInvertedListFrameEndOffset(targetBuf, pos);
+ return true;
+ }
+
+ @Override
+ public boolean isFixedSize() {
+ return false;
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/variablesize/VariableSizeElementOnDiskInvertedListCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/variablesize/VariableSizeElementOnDiskInvertedListCursor.java
new file mode 100644
index 0000000..ee2bc58
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/variablesize/VariableSizeElementOnDiskInvertedListCursor.java
@@ -0,0 +1,173 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk.variablesize;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriter;
+import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriter;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListTupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.impls.AbstractOnDiskInvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
+import org.apache.hyracks.storage.common.ICursorInitialState;
+import org.apache.hyracks.storage.common.IIndexCursorStats;
+import org.apache.hyracks.storage.common.ISearchPredicate;
+import org.apache.hyracks.storage.common.MultiComparator;
+import org.apache.hyracks.storage.common.buffercache.IBufferCache;
+
+/**
+ * A cursor class that traverse an inverted list that consists of variable-size elements on disk
+ *
+ */
+
+public class VariableSizeElementOnDiskInvertedListCursor extends AbstractOnDiskInvertedListCursor {
+
+ // The scan offset is set to 0 when initialized, and we need such an isInit flag
+ // to avoid increasing the offset for the first element in the list when calling next()
+ private boolean isInit;
+ private IInvertedListTupleReference tupleReference;
+ private ITreeIndexTupleWriter tupleWriter;
+
+ public VariableSizeElementOnDiskInvertedListCursor(IBufferCache bufferCache, int fileId,
+ ITypeTraits[] invListFields, IIndexCursorStats stats) throws HyracksDataException {
+ super(bufferCache, fileId, invListFields, stats);
+ this.isInit = true;
+ this.tupleReference = new VariableSizeInvertedListTupleReference(invListFields);
+ this.tupleWriter = new TypeAwareTupleWriter(invListFields);
+ }
+
+ public VariableSizeElementOnDiskInvertedListCursor(IBufferCache bufferCache, int fileId,
+ ITypeTraits[] invListFields, IHyracksTaskContext ctx, IIndexCursorStats stats) throws HyracksDataException {
+ super(bufferCache, fileId, invListFields, ctx, stats);
+ isInit = true;
+ }
+
+ @Override
+ protected void doOpen(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException {
+ super.doOpen(initialState, searchPred);
+
+ // Note that the cursors can be re-used in the upper-layer callers so we need to reset the state variables when open()
+ currentElementIxForScan = 0;
+ isInit = true;
+ this.tupleReference = new VariableSizeInvertedListTupleReference(invListFields);
+ this.tupleWriter = new TypeAwareTupleWriter(invListFields);
+ }
+
+ /**
+ * Returns the next element.
+ */
+ @Override
+ public void doNext() throws HyracksDataException {
+ // init state for the first element: keep the currentOffsetForScan at 0
+ if (isInit) {
+ isInit = false;
+ } else {
+ tupleReference.reset(buffers.get(currentPageIxForScan).array(), currentOffsetForScan);
+ currentOffsetForScan += tupleWriter.bytesRequired(tupleReference);
+ }
+
+ int currentPageEndOffset =
+ InvertedIndexUtils.getInvertedListFrameEndOffset(buffers.get(currentPageIxForScan).array());
+ assert currentOffsetForScan <= currentPageEndOffset;
+ // We reach the end of the current frame, turn to the next frame
+ if (currentOffsetForScan >= currentPageEndOffset) {
+ currentPageIxForScan++;
+ currentOffsetForScan = 0;
+ }
+
+ // Needs to read the next block?
+ if (currentPageIxForScan >= buffers.size() && endPageId > bufferEndPageId) {
+ loadPages();
+ currentOffsetForScan = 0;
+ }
+
+ currentElementIxForScan++;
+ tuple.reset(buffers.get(currentPageIxForScan).array(), currentOffsetForScan);
+ }
+
+ /**
+ * Updates the information about this block.
+ */
+ @Override
+ protected void setBlockInfo() {
+ super.setBlockInfo();
+ currentOffsetForScan = bufferStartElementIx == 0 ? startOff : 0;
+ }
+
+ /**
+ * Checks whether the given tuple exists on this inverted list. This method is used when doing a random traversal.
+ */
+ @Override
+ public boolean containsKey(ITupleReference searchTuple, MultiComparator invListCmp) throws HyracksDataException {
+ if (isInit) {
+ // when isInit, the tuple is null, call next to fetch one tuple
+ next();
+ }
+ while (hasNext()) {
+ int cmp = invListCmp.compare(searchTuple, tuple);
+ if (cmp < 0) {
+ return false;
+ } else if (cmp == 0) {
+ return true;
+ }
+ // ToDo: here we get the tuple first and then call next() later because the upper-layer caller in InvertedListMerger already called next()
+ // However, this is not consistent with other use cases of next() in AsterixDB
+ // Maybe we need to fix the upper layer InvertedListMerger part to call next() first then getTuple()
+ // to follow the convention to use cursor
+ next();
+ }
+
+ if (tuple != null) {
+ int cmp = invListCmp.compare(searchTuple, tuple);
+ if (cmp < 0) {
+ return false;
+ } else if (cmp == 0) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Opens the cursor for the given inverted list. After this open() call, prepreLoadPages() should be called
+ * before loadPages() are called. For more details, check prepapreLoadPages().
+ */
+ @Override
+ protected void setInvListInfo(int startPageId, int endPageId, int startOff, int numElements)
+ throws HyracksDataException {
+ super.setInvListInfo(startPageId, endPageId, startOff, numElements);
+
+ this.currentOffsetForScan = startOff;
+ }
+
+ /**
+ * Prints the contents of the current inverted list (a debugging method).
+ */
+ @SuppressWarnings("rawtypes")
+ @Override
+ public String printInvList(ISerializerDeserializer[] serdes) throws HyracksDataException {
+ // Will implement later if necessary
+ return "";
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/variablesize/VariableSizeInvertedListSearchResultFrameTupleAccessor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/variablesize/VariableSizeInvertedListSearchResultFrameTupleAccessor.java
new file mode 100644
index 0000000..ab71c0a
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/variablesize/VariableSizeInvertedListSearchResultFrameTupleAccessor.java
@@ -0,0 +1,148 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk.variablesize;
+
+import java.nio.ByteBuffer;
+
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriter;
+import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriter;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListTupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.AbstractInvertedListSearchResultFrameTupleAccessor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.InvertedListSearchResultFrameTupleAppender;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
+
+/**
+ * This is a variable-size tuple accessor class.
+ * The frame structure: [4 bytes for minimum Hyracks frame count] [variable-size tuple 1] ... [variable-size tuple n] ...
+ * [4 bytes for the tuple count in a frame]
+ *
+ * This frame accessor is mainly used to merge two inverted lists, e.g. when searching the conjunction of two keywords ("abc" AND "xyz")
+ *
+ * For such a variable-size tuple accessor, for now it supports to get the position of the next tuple only,
+ * i.e. supports iteration instead of random access to the tuples
+ * because the in-page tuple offsets are not available (not stored on disk) until we scan the tuples one by one
+ */
+public class VariableSizeInvertedListSearchResultFrameTupleAccessor
+ extends AbstractInvertedListSearchResultFrameTupleAccessor {
+ // ToDo: use a scanner model to read tuples one by one.
+ // It is not necessary to support random access because it is used only when merging lists
+ // In fact, now we need to scan the frame twice to get the tupleStartOffsets
+ // and then use this offsets for a scan purpose (no random access needed in the upper layer) only
+
+ private int[] tupleStartOffsets;
+ private int tupleCount;
+ private int lastTupleLen;
+ private IInvertedListTupleReference tupleReference;
+ private ITreeIndexTupleWriter tupleWriter;
+
+ public VariableSizeInvertedListSearchResultFrameTupleAccessor(int frameSize, ITypeTraits[] fields)
+ throws HyracksDataException {
+ super(frameSize, fields);
+
+ this.tupleWriter = new TypeAwareTupleWriter(fields);
+ this.tupleReference = new VariableSizeInvertedListTupleReference(fields);
+ }
+
+ @Override
+ protected void verifyTypeTraits() throws HyracksDataException {
+ InvertedIndexUtils.verifyHasVarSizeTypeTrait(fields);
+ }
+
+ private int getTupleLengthAtPos(int startPos) {
+ tupleReference.reset(buffer.array(), startPos);
+ return tupleWriter.bytesRequired(tupleReference);
+ }
+
+ @Override
+ public void reset(ByteBuffer buffer) {
+ super.reset(buffer);
+
+ tupleCount = getTupleCount();
+ tupleStartOffsets = new int[tupleCount];
+
+ if (tupleCount > 0) {
+ int startOff = InvertedListSearchResultFrameTupleAppender.MINFRAME_COUNT_SIZE;
+ int pos = startOff;
+ tupleStartOffsets[0] = 0;
+ int firstTupleLen = getTupleLengthAtPos(pos);
+ lastTupleLen = firstTupleLen;
+
+ for (int i = 1; i < tupleCount; i++) {
+ int len = getTupleLengthAtPos(pos);
+ tupleStartOffsets[i] = tupleStartOffsets[i - 1] + len;
+ if (i == tupleCount - 1) {
+ lastTupleLen = len;
+ }
+
+ pos += len;
+ }
+ }
+ }
+
+ @Override
+ public int getTupleStartOffset(int tupleIndex) {
+ return InvertedListSearchResultFrameTupleAppender.MINFRAME_COUNT_SIZE + tupleStartOffsets[tupleIndex];
+ }
+
+ @Override
+ public int getTupleEndOffset(int tupleIndex) {
+ if (tupleIndex == fields.length - 1) {
+ return InvertedListSearchResultFrameTupleAppender.MINFRAME_COUNT_SIZE + tupleStartOffsets[tupleIndex]
+ + lastTupleLen;
+ } else if (tupleIndex < 0) {
+ return InvertedListSearchResultFrameTupleAppender.MINFRAME_COUNT_SIZE;
+ }
+ return InvertedListSearchResultFrameTupleAppender.MINFRAME_COUNT_SIZE + tupleStartOffsets[tupleIndex + 1];
+ }
+
+ @Override
+ public int getTupleLength(int tupleIndex) {
+ return getTupleEndOffset(tupleIndex) - getTupleStartOffset(tupleIndex);
+ }
+
+ @Override
+ public int getFieldSlotsLength() {
+ return 0;
+ }
+
+ @Override
+ public int getFieldStartOffset(int tupleIndex, int fIdx) {
+ tupleReference.reset(buffer.array(), getTupleStartOffset(tupleIndex));
+ return tupleReference.getFieldStart(fIdx);
+ }
+
+ @Override
+ public int getFieldEndOffset(int tupleIndex, int fIdx) {
+ tupleReference.reset(buffer.array(), getTupleStartOffset(tupleIndex));
+ return tupleReference.getFieldStart(fIdx) + tupleReference.getFieldLength(fIdx);
+ }
+
+ @Override
+ public int getFieldLength(int tupleIndex, int fIdx) {
+ return getFieldEndOffset(tupleIndex, fIdx) - getFieldStartOffset(tupleIndex, fIdx);
+ }
+
+ @Override
+ public int getAbsoluteFieldStartOffset(int tupleIndex, int fIdx) {
+ return getTupleStartOffset(tupleIndex) + getFieldSlotsLength() + getFieldStartOffset(tupleIndex, fIdx);
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/variablesize/VariableSizeInvertedListTupleReference.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/variablesize/VariableSizeInvertedListTupleReference.java
new file mode 100644
index 0000000..8e1db66
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/variablesize/VariableSizeInvertedListTupleReference.java
@@ -0,0 +1,68 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk.variablesize;
+
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference;
+import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.AbstractInvertedListTupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
+
+public class VariableSizeInvertedListTupleReference extends AbstractInvertedListTupleReference {
+
+ private ITreeIndexTupleReference tupleReference;
+
+ @Override
+ protected void verifyTypeTrait() throws HyracksDataException {
+ InvertedIndexUtils.verifyHasVarSizeTypeTrait(typeTraits);
+ }
+
+ public VariableSizeInvertedListTupleReference(ITypeTraits[] typeTraits) throws HyracksDataException {
+ super(typeTraits);
+
+ this.tupleReference = new TypeAwareTupleReference(typeTraits);
+ }
+
+ @Override
+ protected void calculateFieldStartOffsets() {
+ tupleReference.resetByTupleOffset(data, startOff);
+ }
+
+ @Override
+ public int getFieldCount() {
+ return typeTraits.length;
+ }
+
+ @Override
+ public byte[] getFieldData(int fIdx) {
+ return data;
+ }
+
+ @Override
+ public int getFieldLength(int fIdx) {
+ return tupleReference.getFieldLength(fIdx);
+ }
+
+ @Override
+ public int getFieldStart(int fIdx) {
+ return tupleReference.getFieldStart(fIdx);
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/AbstractTOccurrenceSearcher.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/AbstractTOccurrenceSearcher.java
index 06ea4eb..1a08fd0 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/AbstractTOccurrenceSearcher.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/AbstractTOccurrenceSearcher.java
@@ -42,14 +42,14 @@
import org.apache.hyracks.dataflow.std.buffermanager.ISimpleFrameBufferManager;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInPlaceInvertedIndex;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexSearcher;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListTupleReference;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IObjectFactory;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
-import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.FixedSizeFrameTupleAccessor;
-import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.FixedSizeTupleReference;
import org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers.DelimitedUTF8StringBinaryTokenizer;
import org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers.IBinaryTokenizer;
import org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers.IToken;
import org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers.TokenizerInfo.TokenizerType;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
import org.apache.hyracks.storage.am.lsm.invertedindex.util.ObjectCache;
import org.apache.hyracks.storage.common.MultiComparator;
@@ -76,21 +76,21 @@
protected int occurrenceThreshold;
- protected final IObjectFactory<InvertedListCursor> invListCursorFactory;
- protected final ObjectCache<InvertedListCursor> invListCursorCache;
+ protected final IObjectFactory<IInvertedListCursor> invListCursorFactory;
+ protected final ObjectCache<IInvertedListCursor> invListCursorCache;
protected final ISimpleFrameBufferManager bufferManager;
protected boolean isFinishedSearch;
// For a single inverted list case
- protected InvertedListCursor singleInvListCursor;
+ protected IInvertedListCursor singleInvListCursor;
protected boolean isSingleInvertedList;
// To read the final search result
protected ByteBuffer searchResultBuffer;
protected int searchResultTupleIndex = 0;
protected final IFrameTupleAccessor searchResultFta;
- protected FixedSizeTupleReference searchResultTuple;
+ protected IInvertedListTupleReference searchResultTuple;
public AbstractTOccurrenceSearcher(IInPlaceInvertedIndex invIndex, IHyracksTaskContext ctx)
throws HyracksDataException {
@@ -118,9 +118,9 @@
this.queryTokenAppender = new FrameTupleAppenderAccessor(QUERY_TOKEN_REC_DESC);
this.queryTokenAppender.reset(queryTokenFrame, true);
this.isSingleInvertedList = false;
- this.searchResultTuple = new FixedSizeTupleReference(invIndex.getInvListTypeTraits());
- this.searchResultFta =
- new FixedSizeFrameTupleAccessor(ctx.getInitialFrameSize(), invIndex.getInvListTypeTraits());
+ this.searchResultTuple = InvertedIndexUtils.createInvertedListTupleReference(invIndex.getInvListTypeTraits());
+ this.searchResultFta = InvertedIndexUtils.createInvertedListFrameTupleAccessor(ctx.getInitialFrameSize(),
+ invIndex.getInvListTypeTraits());
}
protected void tokenizeQuery(InvertedIndexSearchPredicate searchPred) throws HyracksDataException {
@@ -178,7 +178,7 @@
public void printNewResults(int maxResultBufIdx, List<ByteBuffer> buffer) {
StringBuffer strBuffer = new StringBuffer();
- FixedSizeFrameTupleAccessor resultFrameTupleAcc = finalSearchResult.getAccessor();
+ IFrameTupleAccessor resultFrameTupleAcc = finalSearchResult.getAccessor();
for (int i = 0; i <= maxResultBufIdx; i++) {
ByteBuffer testBuf = buffer.get(i);
resultFrameTupleAcc.reset(testBuf);
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedIndexFinalSearchResult.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedIndexFinalSearchResult.java
index 55acb33..e5f4622 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedIndexFinalSearchResult.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedIndexFinalSearchResult.java
@@ -23,7 +23,6 @@
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.dataflow.value.ITypeTraits;
-import org.apache.hyracks.api.exceptions.ErrorCode;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
import org.apache.hyracks.dataflow.std.buffermanager.ISimpleFrameBufferManager;
@@ -45,12 +44,9 @@
@Override
protected void initTypeTraits(ITypeTraits[] invListFields) {
typeTraits = new ITypeTraits[invListFields.length];
- int tmp = 0;
for (int i = 0; i < invListFields.length; i++) {
typeTraits[i] = invListFields[i];
- tmp += invListFields[i].getFixedLength();
}
- invListElementSize = tmp;
}
/**
@@ -76,13 +72,13 @@
*/
@Override
public boolean append(ITupleReference invListElement, int count) throws HyracksDataException {
- // Pauses the addition of this tuple if the current page is full.
- if (!appender.hasSpace()) {
+ int numBytesRequired = getNumBytesRequired(invListElement);
+ if (!appender.hasSpace(numBytesRequired)) {
return false;
}
- // Appends the given inverted-list element.
- if (!appender.append(invListElement.getFieldData(0), invListElement.getFieldStart(0), invListElementSize)) {
- throw HyracksDataException.create(ErrorCode.CANNOT_ADD_ELEMENT_TO_INVERTED_INDEX_SEARCH_RESULT);
+
+ if (!appendInvertedListElement(invListElement)) {
+ return false;
}
appender.incrementTupleCount(1);
numResults++;
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedIndexSearchResult.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedIndexSearchResult.java
index 527d624..707d85d 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedIndexSearchResult.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedIndexSearchResult.java
@@ -25,6 +25,7 @@
import java.util.ListIterator;
import org.apache.hyracks.api.comm.IFrame;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.dataflow.value.ITypeTraits;
import org.apache.hyracks.api.exceptions.ErrorCode;
@@ -36,9 +37,12 @@
import org.apache.hyracks.dataflow.common.io.RunFileWriter;
import org.apache.hyracks.dataflow.std.buffermanager.BufferManagerBackedVSizeFrame;
import org.apache.hyracks.dataflow.std.buffermanager.ISimpleFrameBufferManager;
-import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.FixedSizeFrameTupleAccessor;
-import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.FixedSizeFrameTupleAppender;
-import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.FixedSizeTupleReference;
+import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriter;
+import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriter;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListSearchResultFrameTupleAppender;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListTupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.InvertedListSearchResultFrameTupleAppender;
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
/**
* Disk-based or in-memory based storage for intermediate and final results of inverted-index
@@ -50,18 +54,18 @@
// I/O buffer's index in the buffers
protected static final int IO_BUFFER_IDX = 0;
protected static final String FILE_PREFIX = "InvertedIndexSearchResult";
+
protected final IHyracksTaskContext ctx;
- protected final FixedSizeFrameTupleAppender appender;
- protected final FixedSizeFrameTupleAccessor accessor;
- protected final FixedSizeTupleReference tuple;
+ protected final IInvertedListSearchResultFrameTupleAppender appender;
+ protected final IFrameTupleAccessor accessor;
+ protected final IInvertedListTupleReference tuple;
protected final ISimpleFrameBufferManager bufferManager;
protected ITypeTraits[] typeTraits;
- protected int invListElementSize;
+ protected ITypeTraits[] invListFields;
protected int currentWriterBufIdx;
protected int currentReaderBufIdx;
protected int numResults;
- protected int numPossibleElementPerPage;
// Read and Write I/O buffer
protected IFrame ioBufferFrame = null;
protected ByteBuffer ioBuffer = null;
@@ -75,14 +79,19 @@
protected boolean isInReadMode;
protected boolean isWriteFinished;
protected boolean isFileOpened;
+ // Used for variable-size element in the inverted list
+ protected ITreeIndexTupleWriter tupleWriter;
+ protected byte[] tempBytes;
public InvertedIndexSearchResult(ITypeTraits[] invListFields, IHyracksTaskContext ctx,
ISimpleFrameBufferManager bufferManager) throws HyracksDataException {
+ this.invListFields = invListFields;
+ this.tupleWriter = new TypeAwareTupleWriter(invListFields);
initTypeTraits(invListFields);
this.ctx = ctx;
- appender = new FixedSizeFrameTupleAppender(ctx.getInitialFrameSize(), typeTraits);
- accessor = new FixedSizeFrameTupleAccessor(ctx.getInitialFrameSize(), typeTraits);
- tuple = new FixedSizeTupleReference(typeTraits);
+ appender = new InvertedListSearchResultFrameTupleAppender(ctx.getInitialFrameSize());
+ accessor = InvertedIndexUtils.createInvertedListFrameTupleAccessor(ctx.getInitialFrameSize(), typeTraits);
+ tuple = InvertedIndexUtils.createInvertedListTupleReference(typeTraits);
this.bufferManager = bufferManager;
this.isInReadMode = false;
this.isWriteFinished = false;
@@ -94,7 +103,7 @@
this.currentWriterBufIdx = 0;
this.currentReaderBufIdx = 0;
this.numResults = 0;
- calculateNumElementPerPage();
+ this.tempBytes = new byte[ctx.getInitialFrameSize()];
// Allocates one frame for read/write operation.
prepareIOBuffer();
}
@@ -105,16 +114,33 @@
*/
protected void initTypeTraits(ITypeTraits[] invListFields) {
typeTraits = new ITypeTraits[invListFields.length + 1];
- int tmp = 0;
for (int i = 0; i < invListFields.length; i++) {
typeTraits[i] = invListFields[i];
- tmp += invListFields[i].getFixedLength();
}
- invListElementSize = tmp;
// Integer for counting occurrences.
typeTraits[invListFields.length] = IntegerPointable.TYPE_TRAITS;
}
+ // If all the inverted list fileds are fixed-size, then return the number of expected pages
+ // Otherwise, return -1
+ public int getExpectedNumPages(int numExpectedElements) {
+ if (InvertedIndexUtils.checkTypeTraitsAllFixed(invListFields)) {
+ int sizeElement = 0;
+ for (int i = 0; i < invListFields.length; i++) {
+ sizeElement += invListFields[i].getFixedLength();
+ }
+
+ int frameSize = ctx.getInitialFrameSize();
+ // The count of Minframe, and the count of tuples in a frame should be deducted.
+ frameSize = frameSize - InvertedListSearchResultFrameTupleAppender.MINFRAME_COUNT_SIZE
+ - InvertedListSearchResultFrameTupleAppender.TUPLE_COUNT_SIZE;
+ int numPossibleElementPerPage = (int) Math.floor((double) frameSize / (sizeElement + ELEMENT_COUNT_SIZE));
+ return (int) Math.ceil((double) numExpectedElements / numPossibleElementPerPage);
+ } else {
+ return -1;
+ }
+ }
+
/**
* Prepares the write operation. Tries to allocate buffers for the expected number of pages.
* If that is possible, all operations will be executed in memory.
@@ -127,7 +153,15 @@
}
// Intermediate results? disk or in-memory based
// Allocates more buffers.
- isInMemoryOpMode = tryAllocateBuffers(numExpectedPages);
+ if (InvertedIndexUtils.checkTypeTraitsAllFixed(typeTraits)) {
+ isInMemoryOpMode = tryAllocateBuffers(numExpectedPages);
+ } else {
+ // When one of the type traits is variable length, disable the in memory mode
+ // because the length of the inverted list is unknown, and thus may exceed the memory budget
+ // A better way to do so might be to flush to disk when out-of-memory on the fly
+ // instead of deciding the in memory mode or not before we merge the results
+ isInMemoryOpMode = false;
+ }
if (!isInMemoryOpMode) {
// Not enough number of buffers. Switch to the file I/O mode.
createAndOpenFile();
@@ -136,14 +170,47 @@
isWriteFinished = false;
}
+ protected int getNumBytesRequired(ITupleReference invListElement) {
+ if (invListFields[0].isFixedLength()) {
+ return invListElement.getFieldLength(0);
+ } else {
+ return tupleWriter.bytesRequired(invListElement, 0, 1);
+ }
+ }
+
+ protected boolean appendInvertedListElement(ITupleReference invListElement) throws HyracksDataException {
+ int numBytesRequired = getNumBytesRequired(invListElement);
+
+ // Appends inverted-list element.
+ if (invListFields[0].isFixedLength()) {
+ if (!appender.append(invListElement.getFieldData(0), invListElement.getFieldStart(0),
+ invListElement.getFieldLength(0))) {
+ throw HyracksDataException.create(ErrorCode.CANNOT_ADD_ELEMENT_TO_INVERTED_INDEX_SEARCH_RESULT);
+ }
+ } else {
+ tupleWriter.writeTupleFields(invListElement, 0, 1, tempBytes, 0);
+ if (!appender.append(tempBytes, 0, numBytesRequired)) {
+ throw HyracksDataException.create(ErrorCode.CANNOT_ADD_ELEMENT_TO_INVERTED_INDEX_SEARCH_RESULT);
+ }
+ }
+
+ return true;
+ }
+
/**
* Appends an element and its count to the current frame of this result. The boolean value is necessary for
- * the final search result case since the append() of that class is overriding this method.
+ * the final search result case since the append() of that class is **overriding** this method.
+ *
+ * Note that if the the buffer is run out, then this method will automatically write to the next buffer.
+ * This is different from the append() method in the final search result which will simply return false.
*/
public boolean append(ITupleReference invListElement, int count) throws HyracksDataException {
+
+ int numBytesRequired = getNumBytesRequired(invListElement);
ByteBuffer currentBuffer;
// Moves to the next page if the current page is full.
- if (!appender.hasSpace()) {
+ // + 4 for the count
+ if (!appender.hasSpace(numBytesRequired + 4)) {
currentWriterBufIdx++;
if (isInMemoryOpMode) {
currentBuffer = buffers.get(currentWriterBufIdx);
@@ -153,10 +220,9 @@
}
appender.reset(currentBuffer);
}
- // Appends inverted-list element.
- if (!appender.append(invListElement.getFieldData(0), invListElement.getFieldStart(0), invListElementSize)) {
- throw HyracksDataException.create(ErrorCode.CANNOT_ADD_ELEMENT_TO_INVERTED_INDEX_SEARCH_RESULT);
- }
+
+ appendInvertedListElement(invListElement);
+
// Appends count.
if (!appender.append(count)) {
throw HyracksDataException.create(ErrorCode.CANNOT_ADD_ELEMENT_TO_INVERTED_INDEX_SEARCH_RESULT);
@@ -292,23 +358,6 @@
}
/**
- * Gets the expected number of pages if all elements are created as a result.
- * An assumption is that there are no common elements between the previous result and the cursor.
- */
- public int getExpectedNumPages(int numExpectedElements) {
- return (int) Math.ceil((double) numExpectedElements / numPossibleElementPerPage);
- }
-
- // Gets the number of possible elements per page based on the inverted list element size.
- protected void calculateNumElementPerPage() {
- int frameSize = ctx.getInitialFrameSize();
- // The count of Minframe, and the count of tuples in a frame should be deducted.
- frameSize = frameSize - FixedSizeFrameTupleAppender.MINFRAME_COUNT_SIZE
- - FixedSizeFrameTupleAppender.TUPLE_COUNT_SIZE;
- numPossibleElementPerPage = (int) Math.floor((double) frameSize / (invListElementSize + ELEMENT_COUNT_SIZE));
- }
-
- /**
* Allocates the buffer for read/write operation and initializes the buffers array that will be used keep a result.
*/
protected void prepareIOBuffer() throws HyracksDataException {
@@ -334,12 +383,28 @@
* Tries to allocate buffers to accommodate the results in memory.
*/
protected boolean tryAllocateBuffers(int numExpectedPages) throws HyracksDataException {
+ assert numExpectedPages >= 0;
+
boolean allBufferAllocated = true;
while (buffers.size() < numExpectedPages) {
+ // Currently, the buffers (optional, needs multiple pages, for in-memory mode)
+ // and the ioBuffer (must-have, needs one page only, for disk IO, related code is in the above prepareIOBuffer())
+ // are both acquired from the same bufferManager.
+ // It may be possible that one search result acquires all the frame for its in-memory usage,
+ // and then the next search result cannot even get one frame for its disk IO usage.
+ // In this case, the second search result will exit with an out-of-memory error.
+ //
+ // To avoid the above issue, maybe we need to create **two** buffer managers, one to manage in-memory frame usage,
+ // and the other to manage on-disk frame usage to guarantee that every search result has at least one disk IO frame.
+ // Or, to make things simpler, we can let the search result manage its own disk IO frame,
+ // i.e. create the frame on its own rather than acquire from the buffer manager.
+ // In this case, we cannot reuse frames, but each search result needs only one IO frame,
+ // and the number of search result is pretty limited (e.g. one result per query keyword).
ByteBuffer tmpBuffer = bufferManager.acquireFrame(ctx.getInitialFrameSize());
if (tmpBuffer == null) {
// Budget exhausted
allBufferAllocated = false;
+ deallocateBuffers();
break;
} else {
clearBuffer(tmpBuffer);
@@ -390,15 +455,15 @@
}
}
- public FixedSizeFrameTupleAccessor getAccessor() {
+ public IFrameTupleAccessor getAccessor() {
return accessor;
}
- public FixedSizeFrameTupleAppender getAppender() {
+ public IInvertedListSearchResultFrameTupleAppender getAppender() {
return appender;
}
- public FixedSizeTupleReference getTuple() {
+ public IInvertedListTupleReference getTuple() {
return tuple;
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListCursorFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListCursorFactory.java
index 6d61f32..4f53d41 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListCursorFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListCursorFactory.java
@@ -22,10 +22,10 @@
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInPlaceInvertedIndex;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IObjectFactory;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
-public class InvertedListCursorFactory implements IObjectFactory<InvertedListCursor> {
+public class InvertedListCursorFactory implements IObjectFactory<IInvertedListCursor> {
private final IInPlaceInvertedIndex invIndex;
private final IHyracksTaskContext ctx;
@@ -36,7 +36,7 @@
}
@Override
- public InvertedListCursor create() throws HyracksDataException {
+ public IInvertedListCursor create() throws HyracksDataException {
return invIndex.createInvertedListCursor(ctx);
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListMerger.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListMerger.java
index f3ca8b0..deea12a 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListMerger.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListMerger.java
@@ -23,6 +23,7 @@
import java.util.Collections;
import java.util.List;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.exceptions.ErrorCode;
import org.apache.hyracks.api.exceptions.HyracksDataException;
@@ -30,9 +31,8 @@
import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
import org.apache.hyracks.dataflow.std.buffermanager.ISimpleFrameBufferManager;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndex;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
-import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.FixedSizeFrameTupleAccessor;
-import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.FixedSizeTupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListTupleReference;
import org.apache.hyracks.storage.common.MultiComparator;
/**
@@ -54,7 +54,7 @@
protected InvertedIndexFinalSearchResult finalSearchResult;
// To Keep the status of this merge process since we only calculate one frame at a time in case of the final result
- protected InvertedListCursor finalInvListCursor;
+ protected IInvertedListCursor finalInvListCursor;
protected int occurrenceThreshold;
protected int numInvertedLists;
protected int invListIdx;
@@ -63,12 +63,18 @@
protected int maxPrevBufIdx;
protected int numExpectedPages;
protected ByteBuffer prevCurrentBuffer;
- protected FixedSizeFrameTupleAccessor resultFrameTupleAcc;
- protected FixedSizeTupleReference resultTuple;
+ protected IFrameTupleAccessor resultFrameTupleAcc;
+ protected IInvertedListTupleReference resultTuple;
protected boolean advanceCursor;
protected boolean advancePrevResult;
- protected int resultTidx;
- protected int invListTidx;
+ // ToDo: we need those tuple indexes because when generating the intermediate result,
+ // the resultFrameTupleAcc API needs tuple index.
+ // In fact, the elements in resultFrameTupleAcc are retrieved sequentially one by one instead of accessed randomly.
+ // Maybe we can wrap the tuple index and the resultFrameTupleAcc into a new class so that we can iterate the elements
+ // in resultFrameTupleAcc and avoid having the tuple indexes here.
+ // We need to be very careful when handling those tuple indexes here.
+ protected int resultTupleIdx;
+ protected int invListTupleIdx;
protected int invListTupleCount;
protected ITupleReference invListTuple;
protected int prevResultFrameTupleCount;
@@ -98,8 +104,9 @@
* false otherwise.
* @throws HyracksDataException
*/
- public boolean merge(List<InvertedListCursor> invListCursors, int occurrenceThreshold, int numPrefixLists,
+ public boolean merge(List<IInvertedListCursor> invListCursors, int occurrenceThreshold, int numPrefixLists,
InvertedIndexFinalSearchResult finalSearchResult) throws HyracksDataException {
+
Collections.sort(invListCursors);
int numInvLists = invListCursors.size();
InvertedIndexSearchResult result = null;
@@ -125,7 +132,7 @@
result = finalSearchResult;
isFinalList = true;
}
- InvertedListCursor invListCursor = invListCursors.get(i);
+ IInvertedListCursor invListCursor = invListCursors.get(i);
// Track whether an exception is occurred.
boolean finishedTryBlock = false;
try {
@@ -219,9 +226,9 @@
* @return true only if all processing for the final list for a partition is done.
* false otherwise.
*/
- protected boolean mergeSuffixListProbe(InvertedListCursor invListCursor, InvertedIndexSearchResult prevSearchResult,
- InvertedIndexSearchResult newSearchResult, int invListIx, int numInvLists, int occurrenceThreshold,
- boolean isFinalList) throws HyracksDataException {
+ protected boolean mergeSuffixListProbe(IInvertedListCursor invListCursor,
+ InvertedIndexSearchResult prevSearchResult, InvertedIndexSearchResult newSearchResult, int invListIx,
+ int numInvLists, int occurrenceThreshold, boolean isFinalList) throws HyracksDataException {
if (isProcessingFinished) {
return true;
}
@@ -229,8 +236,8 @@
initMergingOneList(invListCursor, prevSearchResult, newSearchResult, isFinalList, invListIx, numInvLists,
occurrenceThreshold, processType.SUFFIX_LIST_PROBE);
- while (resultTidx < prevResultFrameTupleCount) {
- resultTuple.reset(prevCurrentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(resultTidx));
+ while (resultTupleIdx < prevResultFrameTupleCount) {
+ resultTuple.reset(prevCurrentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(resultTupleIdx));
int count = getCount(resultTuple);
if (invListCursor.containsKey(resultTuple, invListCmp)) {
// Found the same tuple again on the current list. Increases the count by one.
@@ -249,7 +256,7 @@
return false;
}
}
- resultTidx++;
+ resultTupleIdx++;
checkPrevResultAndFetchNextFrame(prevSearchResult);
}
@@ -263,7 +270,7 @@
* @return true only if all processing for the final list for a partition is done.
* false otherwise.
*/
- protected boolean mergeSuffixListScan(InvertedListCursor invListCursor, InvertedIndexSearchResult prevSearchResult,
+ protected boolean mergeSuffixListScan(IInvertedListCursor invListCursor, InvertedIndexSearchResult prevSearchResult,
InvertedIndexSearchResult newSearchResult, int invListIx, int numInvLists, int occurrenceThreshold,
boolean isFinalList) throws HyracksDataException {
if (isProcessingFinished) {
@@ -276,9 +283,9 @@
int cmp;
int count;
- while (invListTidx < invListTupleCount && resultTidx < prevResultFrameTupleCount) {
+ while (invListTupleIdx < invListTupleCount && resultTupleIdx < prevResultFrameTupleCount) {
invListTuple = invListCursor.getTuple();
- resultTuple.reset(prevCurrentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(resultTidx));
+ resultTuple.reset(prevCurrentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(resultTupleIdx));
cmp = invListCmp.compare(invListTuple, resultTuple);
if (cmp == 0) {
// Found the same tuple again on the current list. Increases the count by one.
@@ -316,8 +323,8 @@
// append remaining elements from previous result set
// These remaining elements can be a part of the answer if they will be found again in the remaining lists.
- while (resultTidx < prevResultFrameTupleCount) {
- resultTuple.reset(prevCurrentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(resultTidx));
+ while (resultTupleIdx < prevResultFrameTupleCount) {
+ resultTuple.reset(prevCurrentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(resultTupleIdx));
count = getCount(resultTuple);
if (count + numInvLists - invListIx > occurrenceThreshold) {
if (!newSearchResult.append(resultTuple, count)) {
@@ -326,7 +333,7 @@
return false;
}
}
- resultTidx++;
+ resultTupleIdx++;
checkPrevResultAndFetchNextFrame(prevSearchResult);
}
@@ -338,7 +345,7 @@
* then generates a new result by applying UNIONALL operation on these two. This method returns true
* only if all processing for the given final list is done. Otherwise, it returns false.
*/
- protected boolean mergePrefixList(InvertedListCursor invListCursor, InvertedIndexSearchResult prevSearchResult,
+ protected boolean mergePrefixList(IInvertedListCursor invListCursor, InvertedIndexSearchResult prevSearchResult,
InvertedIndexSearchResult newSearchResult, boolean isFinalList) throws HyracksDataException {
if (isProcessingFinished) {
return true;
@@ -350,9 +357,9 @@
int cmp;
int count;
// Traverses the inverted list and the previous result at the same time.
- while (invListTidx < invListTupleCount && resultTidx < prevResultFrameTupleCount) {
+ while (invListTupleIdx < invListTupleCount && resultTupleIdx < prevResultFrameTupleCount) {
invListTuple = invListCursor.getTuple();
- resultTuple.reset(prevCurrentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(resultTidx));
+ resultTuple.reset(prevCurrentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(resultTupleIdx));
cmp = invListCmp.compare(invListTuple, resultTuple);
// Found the same tuple again on the current list: count + 1. Both the result and the cursor advances.
if (cmp == 0) {
@@ -393,29 +400,29 @@
// append remaining new elements from inverted list
//
- while (invListTidx < invListTupleCount) {
+ while (invListTupleIdx < invListTupleCount) {
invListTuple = invListCursor.getTuple();
if (!newSearchResult.append(invListTuple, 1)) {
// For a final result, needs to pause when a frame becomes full to let the caller
// consume the frame. SearchResult.append() should only return false for this case.
return false;
}
- invListTidx++;
+ invListTupleIdx++;
if (invListCursor.hasNext()) {
invListCursor.next();
}
}
// append remaining elements from previous result set
- while (resultTidx < prevResultFrameTupleCount) {
- resultTuple.reset(prevCurrentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(resultTidx));
+ while (resultTupleIdx < prevResultFrameTupleCount) {
+ resultTuple.reset(prevCurrentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(resultTupleIdx));
count = getCount(resultTuple);
if (!newSearchResult.append(resultTuple, count)) {
// For a final result, needs to pause when a frame becomes full to let the caller
// consume the frame. SearchResult.append() should only return false for this case.
return false;
}
- resultTidx++;
+ resultTupleIdx++;
checkPrevResultAndFetchNextFrame(prevSearchResult);
}
@@ -425,7 +432,7 @@
/**
* Initializes necessary information for each merging operation (prefix_list) for a list.
*/
- protected void initMergingOneList(InvertedListCursor invListCursor, InvertedIndexSearchResult prevSearchResult,
+ protected void initMergingOneList(IInvertedListCursor invListCursor, InvertedIndexSearchResult prevSearchResult,
InvertedIndexSearchResult newSearchResult, boolean isFinalList, processType mergeOpType)
throws HyracksDataException {
initMergingOneList(invListCursor, prevSearchResult, newSearchResult, isFinalList, 0, 0, 0, mergeOpType);
@@ -434,7 +441,7 @@
/**
* Initializes necessary information for each merging operation (suffix_list_probe or suffix_list_scan) for a list.
*/
- protected void initMergingOneList(InvertedListCursor invListCursor, InvertedIndexSearchResult prevSearchResult,
+ protected void initMergingOneList(IInvertedListCursor invListCursor, InvertedIndexSearchResult prevSearchResult,
InvertedIndexSearchResult newSearchResult, boolean isFinalList, int invListIx, int numInvLists,
int occurrenceThreshold, processType mergeOpType) throws HyracksDataException {
// Each inverted list will be visited only once except the final inverted list.
@@ -455,9 +462,9 @@
resultTuple = prevSearchResult.getTuple();
advanceCursor = true;
advancePrevResult = false;
- resultTidx = 0;
+ resultTupleIdx = 0;
resultFrameTupleAcc.reset(prevCurrentBuffer);
- invListTidx = 0;
+ invListTupleIdx = 0;
numInvertedLists = numInvLists;
invListIdx = invListIx;
prevResultFrameTupleCount = prevCurrentBuffer == null ? 0 : resultFrameTupleAcc.getTupleCount();
@@ -485,7 +492,7 @@
* false otherwise
*/
protected boolean finishMergingOneList(boolean isFinalList, InvertedIndexSearchResult prevSearchResult,
- InvertedIndexSearchResult newSearchResult, InvertedListCursor invListCursor) throws HyracksDataException {
+ InvertedIndexSearchResult newSearchResult, IInvertedListCursor invListCursor) throws HyracksDataException {
prevSearchResult.closeResultRead(false);
invListCursor.close();
// Final search result can be called multiple times for partitioned occurrence searcher case
@@ -506,14 +513,14 @@
* Also fetches next element from the inverted list cursor.
*/
protected void advancePrevResultAndList(boolean advancePrevResult, boolean advanceCursor,
- InvertedIndexSearchResult prevSearchResult, InvertedListCursor invListCursor) throws HyracksDataException {
+ InvertedIndexSearchResult prevSearchResult, IInvertedListCursor invListCursor) throws HyracksDataException {
if (advancePrevResult) {
- resultTidx++;
+ resultTupleIdx++;
checkPrevResultAndFetchNextFrame(prevSearchResult);
}
if (advanceCursor) {
- invListTidx++;
+ invListTupleIdx++;
if (invListCursor.hasNext()) {
invListCursor.next();
}
@@ -525,13 +532,13 @@
*/
protected void checkPrevResultAndFetchNextFrame(InvertedIndexSearchResult prevSearchResult)
throws HyracksDataException {
- if (resultTidx >= prevResultFrameTupleCount) {
+ if (resultTupleIdx >= prevResultFrameTupleCount) {
prevBufIdx++;
if (prevBufIdx <= maxPrevBufIdx) {
prevCurrentBuffer = prevSearchResult.getNextFrame();
resultFrameTupleAcc.reset(prevCurrentBuffer);
prevResultFrameTupleCount = resultFrameTupleAcc.getTupleCount();
- resultTidx = 0;
+ resultTupleIdx = 0;
}
}
}
@@ -539,7 +546,7 @@
/**
* Gets the count of the given tuple in the previous search result.
*/
- protected int getCount(FixedSizeTupleReference resultTuple) {
+ protected int getCount(IInvertedListTupleReference resultTuple) {
return IntegerPointable.getInteger(resultTuple.getFieldData(0),
resultTuple.getFieldStart(resultTuple.getFieldCount() - 1));
}
@@ -585,8 +592,8 @@
resultTuple = null;
advanceCursor = false;
advancePrevResult = false;
- resultTidx = 0;
- invListTidx = 0;
+ resultTupleIdx = 0;
+ invListTupleIdx = 0;
prevResultFrameTupleCount = 0;
finalInvListCursor = null;
finalSearchResult = null;
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListPartitions.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListPartitions.java
index fef4baf..aef18c3 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListPartitions.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListPartitions.java
@@ -23,8 +23,8 @@
import java.util.Arrays;
import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IObjectFactory;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.util.ObjectCache;
/**
@@ -36,15 +36,15 @@
private final int PARTITIONS_SLACK_SIZE = 10;
private final int OBJECT_CACHE_INIT_SIZE = 10;
private final int OBJECT_CACHE_EXPAND_SIZE = 10;
- private final IObjectFactory<ArrayList<InvertedListCursor>> arrayListFactory;
- private final ObjectCache<ArrayList<InvertedListCursor>> arrayListCache;
- private ArrayList<InvertedListCursor>[] partitions;
+ private final IObjectFactory<ArrayList<IInvertedListCursor>> arrayListFactory;
+ private final ObjectCache<ArrayList<IInvertedListCursor>> arrayListCache;
+ private ArrayList<IInvertedListCursor>[] partitions;
private short minValidPartitionIndex;
private short maxValidPartitionIndex;
public InvertedListPartitions() throws HyracksDataException {
- this.arrayListFactory = new ArrayListFactory<InvertedListCursor>();
- this.arrayListCache = new ObjectCache<ArrayList<InvertedListCursor>>(arrayListFactory, OBJECT_CACHE_INIT_SIZE,
+ this.arrayListFactory = new ArrayListFactory<IInvertedListCursor>();
+ this.arrayListCache = new ObjectCache<ArrayList<IInvertedListCursor>>(arrayListFactory, OBJECT_CACHE_INIT_SIZE,
OBJECT_CACHE_EXPAND_SIZE);
}
@@ -57,7 +57,7 @@
} else {
initialSize = numTokensUpperBound + 1;
}
- partitions = (ArrayList<InvertedListCursor>[]) new ArrayList[initialSize];
+ partitions = (ArrayList<IInvertedListCursor>[]) new ArrayList[initialSize];
} else {
if (numTokensUpperBound + 1 >= partitions.length) {
partitions = Arrays.copyOf(partitions, numTokensUpperBound + 1);
@@ -69,11 +69,11 @@
maxValidPartitionIndex = Short.MIN_VALUE;
}
- public void addInvertedListCursor(InvertedListCursor listCursor, short numTokens) throws HyracksDataException {
+ public void addInvertedListCursor(IInvertedListCursor listCursor, short numTokens) throws HyracksDataException {
if (numTokens + 1 >= partitions.length) {
partitions = Arrays.copyOf(partitions, numTokens + PARTITIONS_SLACK_SIZE);
}
- ArrayList<InvertedListCursor> partitionCursors = partitions[numTokens];
+ ArrayList<IInvertedListCursor> partitionCursors = partitions[numTokens];
if (partitionCursors == null) {
partitionCursors = arrayListCache.getNext();
partitionCursors.clear();
@@ -89,7 +89,7 @@
partitionCursors.add(listCursor);
}
- public ArrayList<InvertedListCursor>[] getPartitions() {
+ public ArrayList<IInvertedListCursor>[] getPartitions() {
return partitions;
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/PartitionedTOccurrenceSearcher.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/PartitionedTOccurrenceSearcher.java
index 3d8c35a..5ab63a2 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/PartitionedTOccurrenceSearcher.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/PartitionedTOccurrenceSearcher.java
@@ -33,8 +33,8 @@
import org.apache.hyracks.storage.am.common.tuples.ConcatenatingTupleReference;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInPlaceInvertedIndex;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexSearchModifier;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IPartitionedInvertedIndex;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
import org.apache.hyracks.storage.common.IIndexCursor;
/**
@@ -56,7 +56,7 @@
protected int numPrefixLists;
protected boolean isFinalPartIdx;
protected boolean needToReadNewPart;
- List<InvertedListCursor>[] partitionCursors;
+ List<IInvertedListCursor>[] partitionCursors;
IInvertedIndexSearchModifier searchModifier;
public PartitionedTOccurrenceSearcher(IInPlaceInvertedIndex invIndex, IHyracksTaskContext ctx)
@@ -153,7 +153,7 @@
// Prune partition because no element in it can satisfy the occurrence threshold.
// An opened cursor should be closed.
if (partitionCursors[i].size() < occurrenceThreshold) {
- for (InvertedListCursor cursor : partitionCursors[i]) {
+ for (IInvertedListCursor cursor : partitionCursors[i]) {
cursor.close();
}
continue;
@@ -244,7 +244,7 @@
// Prune partition because no element in it can satisfy the occurrence threshold.
// An opened cursor should be closed.
if (partitionCursors[i].size() < occurrenceThreshold) {
- for (InvertedListCursor cursor : partitionCursors[i]) {
+ for (IInvertedListCursor cursor : partitionCursors[i]) {
cursor.close();
}
continue;
@@ -301,14 +301,14 @@
}
private void closeCursorsInPartitions(InvertedListPartitions parts) throws HyracksDataException {
- List<InvertedListCursor>[] partCursors = parts.getPartitions();
+ List<IInvertedListCursor>[] partCursors = parts.getPartitions();
short start = parts.getMinValidPartitionIndex();
short end = parts.getMaxValidPartitionIndex();
for (int i = start; i <= end; i++) {
if (partCursors[i] == null) {
continue;
}
- for (InvertedListCursor cursor : partCursors[i]) {
+ for (IInvertedListCursor cursor : partCursors[i]) {
cursor.close();
}
}
@@ -331,7 +331,7 @@
return fullHighSearchKey;
}
- public InvertedListCursor getCachedInvertedListCursor() throws HyracksDataException {
+ public IInvertedListCursor getCachedInvertedListCursor() throws HyracksDataException {
return invListCursorCache.getNext();
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/TOccurrenceSearcher.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/TOccurrenceSearcher.java
index 9808ae1..289b8d2 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/TOccurrenceSearcher.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/TOccurrenceSearcher.java
@@ -27,7 +27,7 @@
import org.apache.hyracks.storage.am.common.api.IIndexOperationContext;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInPlaceInvertedIndex;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexSearchModifier;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
import org.apache.hyracks.storage.common.IIndexCursor;
/**
@@ -35,10 +35,12 @@
*/
public class TOccurrenceSearcher extends AbstractTOccurrenceSearcher {
- protected final ArrayList<InvertedListCursor> invListCursors = new ArrayList<>();
+ protected final ArrayList<IInvertedListCursor> invListCursors = new ArrayList<>();
+ protected InvertedListCursorFactory invertedListCursorFactory;
public TOccurrenceSearcher(IInPlaceInvertedIndex invIndex, IHyracksTaskContext ctx) throws HyracksDataException {
super(invIndex, ctx);
+ invertedListCursorFactory = new InvertedListCursorFactory(invIndex, ctx);
}
@Override
@@ -52,7 +54,7 @@
invListCursorCache.reset();
for (int i = 0; i < numQueryTokens; i++) {
searchKey.reset(queryTokenAppender, i);
- InvertedListCursor invListCursor = invListCursorCache.getNext();
+ IInvertedListCursor invListCursor = invertedListCursorFactory.create();
invIndex.openInvertedListCursor(invListCursor, searchKey, ictx);
invListCursors.add(invListCursor);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java
index c9cd959..a9a01e9 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java
@@ -21,8 +21,10 @@
import java.util.List;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.ErrorCode;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.api.io.FileReference;
import org.apache.hyracks.api.io.IIOManager;
@@ -49,24 +51,34 @@
import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFilterManager;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListBuilder;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListBuilderFactory;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListTupleReference;
import org.apache.hyracks.storage.am.lsm.invertedindex.impls.LSMInvertedIndex;
import org.apache.hyracks.storage.am.lsm.invertedindex.impls.LSMInvertedIndexDiskComponentFactory;
import org.apache.hyracks.storage.am.lsm.invertedindex.impls.LSMInvertedIndexFileManager;
import org.apache.hyracks.storage.am.lsm.invertedindex.impls.PartitionedLSMInvertedIndex;
import org.apache.hyracks.storage.am.lsm.invertedindex.inmemory.InMemoryInvertedIndex;
import org.apache.hyracks.storage.am.lsm.invertedindex.inmemory.PartitionedInMemoryInvertedIndex;
-import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.FixedSizeElementInvertedListBuilder;
-import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.FixedSizeElementInvertedListBuilderFactory;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.InvertedListBuilderFactory;
import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.OnDiskInvertedIndex;
import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.OnDiskInvertedIndexFactory;
import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.PartitionedOnDiskInvertedIndex;
import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.PartitionedOnDiskInvertedIndexFactory;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize.FixedSizeElementInvertedListBuilder;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize.FixedSizeInvertedListSearchResultFrameTupleAccessor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize.FixedSizeInvertedListTupleReference;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.variablesize.VariableSizeInvertedListSearchResultFrameTupleAccessor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.variablesize.VariableSizeInvertedListTupleReference;
import org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers.IBinaryTokenizerFactory;
import org.apache.hyracks.storage.common.buffercache.IBufferCache;
import org.apache.hyracks.util.trace.ITracer;
public class InvertedIndexUtils {
+ public static final String EXPECT_ALL_FIX_GET_VAR_SIZE =
+ "expecting all type traits to be fixed-size while getting at least one variable-length one";
+ public static final String EXPECT_VAR_GET_ALL_FIX_SIZE =
+ "expecting at least one variable-size type trait while all are fixed-size";
+
public static InMemoryInvertedIndex createInMemoryBTreeInvertedindex(IBufferCache memBufferCache,
IPageManager virtualFreePageManager, ITypeTraits[] invListTypeTraits,
IBinaryComparatorFactory[] invListCmpFactories, ITypeTraits[] tokenTypeTraits,
@@ -148,7 +160,7 @@
new LSMInvertedIndexFileManager(ioManager, onDiskDirFileRef, deletedKeysBTreeFactory);
IInvertedListBuilderFactory invListBuilderFactory =
- new FixedSizeElementInvertedListBuilderFactory(invListTypeTraits);
+ new InvertedListBuilderFactory(tokenTypeTraits, invListTypeTraits);
OnDiskInvertedIndexFactory invIndexFactory =
new OnDiskInvertedIndexFactory(ioManager, diskBufferCache, invListBuilderFactory, invListTypeTraits,
invListCmpFactories, tokenTypeTraits, tokenCmpFactories, fileManager, pageManagerFactory);
@@ -197,7 +209,7 @@
new LSMInvertedIndexFileManager(ioManager, onDiskDirFileRef, deletedKeysBTreeFactory);
IInvertedListBuilderFactory invListBuilderFactory =
- new FixedSizeElementInvertedListBuilderFactory(invListTypeTraits);
+ new InvertedListBuilderFactory(tokenTypeTraits, invListTypeTraits);
PartitionedOnDiskInvertedIndexFactory invIndexFactory = new PartitionedOnDiskInvertedIndexFactory(ioManager,
diskBufferCache, invListBuilderFactory, invListTypeTraits, invListCmpFactories, tokenTypeTraits,
tokenCmpFactories, fileManager, pageManagerFactory);
@@ -220,4 +232,63 @@
mergePolicy, opTracker, ioScheduler, ioOpCallbackFactory, pageWriteCallbackFactory, invertedIndexFields,
filterFields, filterFieldsForNonBulkLoadOps, invertedIndexFieldsForNonBulkLoadOps, durable, tracer);
}
+
+ public static boolean checkTypeTraitsAllFixed(ITypeTraits[] typeTraits) {
+ for (int i = 0; i < typeTraits.length; i++) {
+ if (!typeTraits[i].isFixedLength()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static void verifyAllFixedSizeTypeTrait(ITypeTraits[] typeTraits) throws HyracksDataException {
+ if (InvertedIndexUtils.checkTypeTraitsAllFixed(typeTraits) == false) {
+ throw HyracksDataException.create(ErrorCode.INVALID_INVERTED_LIST_TYPE_TRAITS,
+ InvertedIndexUtils.EXPECT_ALL_FIX_GET_VAR_SIZE);
+ }
+ }
+
+ public static void verifyHasVarSizeTypeTrait(ITypeTraits[] typeTraits) throws HyracksDataException {
+ if (InvertedIndexUtils.checkTypeTraitsAllFixed(typeTraits) == true) {
+ throw HyracksDataException.create(ErrorCode.INVALID_INVERTED_LIST_TYPE_TRAITS,
+ InvertedIndexUtils.EXPECT_VAR_GET_ALL_FIX_SIZE);
+ }
+ }
+
+ public static IInvertedListTupleReference createInvertedListTupleReference(ITypeTraits[] typeTraits)
+ throws HyracksDataException {
+ if (checkTypeTraitsAllFixed(typeTraits)) {
+ return new FixedSizeInvertedListTupleReference(typeTraits);
+ } else {
+ return new VariableSizeInvertedListTupleReference(typeTraits);
+ }
+ }
+
+ public static IFrameTupleAccessor createInvertedListFrameTupleAccessor(int frameSize, ITypeTraits[] typeTraits)
+ throws HyracksDataException {
+ if (checkTypeTraitsAllFixed(typeTraits)) {
+ return new FixedSizeInvertedListSearchResultFrameTupleAccessor(frameSize, typeTraits);
+ } else {
+ return new VariableSizeInvertedListSearchResultFrameTupleAccessor(frameSize, typeTraits);
+ }
+ }
+
+ public static void setInvertedListFrameEndOffset(byte[] bytes, int pos) {
+ int off = bytes.length - 4;
+ bytes[off++] = (byte) (pos >> 24);
+ bytes[off++] = (byte) (pos >> 16);
+ bytes[off++] = (byte) (pos >> 8);
+ bytes[off] = (byte) (pos);
+ }
+
+ public static int getInvertedListFrameEndOffset(byte[] bytes) {
+ int p = bytes.length - 4;
+ int offsetFrameEnd = 0;
+ for (int i = 0; i < 4; i++) {
+ offsetFrameEnd = (offsetFrameEnd << 8) + (bytes[p++] & 0xFF);
+ }
+
+ return offsetFrameEnd;
+ }
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IIndexCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IIndexCursor.java
index 00c5dce..8414ead 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IIndexCursor.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IIndexCursor.java
@@ -32,6 +32,8 @@
* --try{
* ---while (cursor.hasNext()){
* ----cursor.next()
+ * ----ITupleReference tuple = cursor.getTuple()
+ * ----work with tuple...
* ---}
* --} finally{
* ---cursor.close();
diff --git a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleTest.java b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleTest.java
deleted file mode 100644
index c0a4e75..0000000
--- a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Random;
-
-import org.apache.hyracks.api.dataflow.value.ITypeTraits;
-import org.apache.hyracks.data.std.primitive.IntegerPointable;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class FixedSizeFrameTupleTest {
-
- private static int FRAME_SIZE = 4096;
-
- private Random rnd = new Random(50);
-
- /**
- * This test verifies the correct behavior of the FixedSizeFrameTuple class.
- * Frames containing FixedSizeFrameTuple's require neither tuple slots nor
- * field slots. The tests inserts generated data into a frame until the
- * frame is full, and then verifies the frame's contents.
- *
- */
- @Test
- public void singleFieldTest() throws Exception {
- ByteBuffer buffer = ByteBuffer.allocate(FRAME_SIZE);
-
- ITypeTraits[] fields = new ITypeTraits[1];
- fields[0] = IntegerPointable.TYPE_TRAITS;
-
- FixedSizeFrameTupleAppender ftapp = new FixedSizeFrameTupleAppender(FRAME_SIZE, fields);
- FixedSizeFrameTupleAccessor ftacc = new FixedSizeFrameTupleAccessor(FRAME_SIZE, fields);
-
- boolean frameHasSpace = true;
-
- ArrayList<Integer> check = new ArrayList<Integer>();
-
- ftapp.reset(buffer);
- while (frameHasSpace) {
- int val = rnd.nextInt();
- frameHasSpace = ftapp.append(val);
- if (frameHasSpace) {
- check.add(val);
- ftapp.incrementTupleCount(1);
- }
- }
-
- ftacc.reset(buffer);
- for (int i = 0; i < ftacc.getTupleCount(); i++) {
- int val = IntegerPointable.getInteger(ftacc.getBuffer().array(), ftacc.getTupleStartOffset(i));
- Assert.assertEquals(check.get(i).intValue(), val);
- }
- }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/InvertedIndexUtilsTest.java b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/InvertedIndexUtilsTest.java
new file mode 100644
index 0000000..b004a43
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/InvertedIndexUtilsTest.java
@@ -0,0 +1,40 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
+
+import org.apache.hyracks.storage.am.lsm.invertedindex.util.InvertedIndexUtils;
+import org.junit.Test;
+
+public class InvertedIndexUtilsTest {
+
+ @Test
+ public void testSetFrameEndOffset() {
+ int frameEnd = 4321;
+ byte[] bytes = new byte[1024];
+
+ InvertedIndexUtils.setInvertedListFrameEndOffset(bytes, frameEnd);
+ assert frameEnd == InvertedIndexUtils.getInvertedListFrameEndOffset(bytes);
+
+ frameEnd = 56789;
+ InvertedIndexUtils.setInvertedListFrameEndOffset(bytes, frameEnd);
+ assert frameEnd == InvertedIndexUtils.getInvertedListFrameEndOffset(bytes);
+ }
+
+}
\ No newline at end of file
diff --git a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/InvertedListTupleFrameTupleTest.java b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/InvertedListTupleFrameTupleTest.java
new file mode 100644
index 0000000..0015b7a
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/InvertedListTupleFrameTupleTest.java
@@ -0,0 +1,76 @@
+/*
+ * 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.hyracks.storage.am.lsm.invertedindex.ondisk;
+
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Random;
+
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.data.std.primitive.IntegerPointable;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize.FixedSizeInvertedListSearchResultFrameTupleAccessor;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class InvertedListTupleFrameTupleTest {
+
+ private static int FRAME_SIZE = 4096;
+
+ private Random rnd = new Random(50);
+
+ /**
+ * This test verifies the correct behavior of the FixedSizeFrameTuple class.
+ * Frames containing FixedSizeFrameTuple's require neither tuple slots nor
+ * field slots. The tests inserts generated data into a frame until the
+ * frame is full, and then verifies the frame's contents.
+ *
+ */
+ @Test
+ public void singleFieldTest() throws Exception {
+ ByteBuffer buffer = ByteBuffer.allocate(FRAME_SIZE);
+
+ ITypeTraits[] fields = new ITypeTraits[1];
+ fields[0] = IntegerPointable.TYPE_TRAITS;
+
+ InvertedListSearchResultFrameTupleAppender ftapp = new InvertedListSearchResultFrameTupleAppender(FRAME_SIZE);
+ FixedSizeInvertedListSearchResultFrameTupleAccessor ftacc =
+ new FixedSizeInvertedListSearchResultFrameTupleAccessor(FRAME_SIZE, fields);
+
+ boolean frameHasSpace = true;
+
+ ArrayList<Integer> check = new ArrayList<Integer>();
+
+ ftapp.reset(buffer);
+ while (frameHasSpace) {
+ int val = rnd.nextInt();
+ frameHasSpace = ftapp.append(val);
+ if (frameHasSpace) {
+ check.add(val);
+ ftapp.incrementTupleCount(1);
+ }
+ }
+
+ ftacc.reset(buffer);
+ for (int i = 0; i < ftacc.getTupleCount(); i++) {
+ int val = IntegerPointable.getInteger(ftacc.getBuffer().array(), ftacc.getTupleStartOffset(i));
+ Assert.assertEquals(check.get(i).intValue(), val);
+ }
+ }
+}
diff --git a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexLifecycleTest.java b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexLifecycleTest.java
index f5d12eb..0c626df 100644
--- a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexLifecycleTest.java
+++ b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexLifecycleTest.java
@@ -30,6 +30,7 @@
import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListBuilder;
import org.apache.hyracks.storage.am.lsm.invertedindex.common.LSMInvertedIndexTestHarness;
+import org.apache.hyracks.storage.am.lsm.invertedindex.ondisk.fixedsize.FixedSizeElementInvertedListBuilder;
public class OnDiskInvertedIndexLifecycleTest extends AbstractIndexLifecycleTest {
diff --git a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestUtils.java b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestUtils.java
index 8dc9b07..a5e47b5 100644
--- a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestUtils.java
+++ b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestUtils.java
@@ -86,7 +86,7 @@
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndex;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexAccessor;
import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexSearchModifier;
-import org.apache.hyracks.storage.am.lsm.invertedindex.api.InvertedListCursor;
+import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
import org.apache.hyracks.storage.am.lsm.invertedindex.common.LSMInvertedIndexTestHarness;
import org.apache.hyracks.storage.am.lsm.invertedindex.impls.LSMInvertedIndexAccessor;
import org.apache.hyracks.storage.am.lsm.invertedindex.impls.LSMInvertedIndexMergeCursor;
@@ -376,7 +376,7 @@
ArrayTupleBuilder searchKeyBuilder = new ArrayTupleBuilder(tokenFieldCount);
ArrayTupleReference searchKey = new ArrayTupleReference();
// Cursor over inverted list from actual index.
- InvertedListCursor actualInvListCursor = invIndexAccessor.createInvertedListCursor();
+ IInvertedListCursor actualInvListCursor = invIndexAccessor.createInvertedListCursor();
// Helpers for generating a serialized inverted-list element from a CheckTuple from the expected index.
ArrayTupleBuilder expectedBuilder = new ArrayTupleBuilder(fieldSerdes.length);
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/ILogRedactor.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/ILogRedactor.java
index b133894..d36c77b 100644
--- a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/ILogRedactor.java
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/ILogRedactor.java
@@ -29,6 +29,14 @@
String userData(String text);
/**
+ * Redacts statement argument.
+ *
+ * @param text statement to redact.
+ * @return redacted statement.
+ */
+ String statement(String text);
+
+ /**
* Unredacts user data found in the argument.
*
* @param text text that contains some redacted user data.
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/LogRedactionUtil.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/LogRedactionUtil.java
index 89c957e..fdce8c8 100644
--- a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/LogRedactionUtil.java
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/LogRedactionUtil.java
@@ -28,6 +28,11 @@
}
@Override
+ public String statement(String text) {
+ return text;
+ }
+
+ @Override
public String unredactUserData(String text) {
return text;
}
@@ -45,6 +50,10 @@
return redactor.userData(text);
}
+ public static String statement(String text) {
+ return redactor.statement(text);
+ }
+
public static String unredactUserData(String text) {
return redactor.unredactUserData(text);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringUtil.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringUtil.java
index 2b0e49e..f96ed72 100644
--- a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringUtil.java
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringUtil.java
@@ -34,6 +34,11 @@
*/
public class UTF8StringUtil {
+ public static final String LOW_SURROGATE_WITHOUT_HIGH_SURROGATE =
+ "Decoding error: got a low surrogate without a leading high surrogate";
+ public static final String HIGH_SURROGATE_WITHOUT_LOW_SURROGATE =
+ "Decoding error: got a high surrogate without a following low surrogate";
+
private UTF8StringUtil() {
}
@@ -90,6 +95,49 @@
}
}
+ public static int codePointAt(byte[] b, int s) {
+ char c1 = charAt(b, s);
+
+ if (Character.isLowSurrogate(c1)) {
+ // In this case, the index s doesn't point to a correct position
+ throw new IllegalArgumentException(LOW_SURROGATE_WITHOUT_HIGH_SURROGATE);
+ }
+
+ if (Character.isHighSurrogate(c1)) {
+ // If c1 is the a high surrogate and also the last char in the byte array (that means the byte array is somehow illegal),
+ // then an exception will be thrown because there is no low surrogate (c2) available in the byte array
+ s += charSize(b, s);
+ char c2 = charAt(b, s);
+ if (Character.isLowSurrogate(c2)) {
+ return Character.toCodePoint(c1, c2);
+ } else {
+ throw new IllegalArgumentException(HIGH_SURROGATE_WITHOUT_LOW_SURROGATE);
+ }
+ }
+
+ return c1;
+ }
+
+ public static int codePointSize(byte[] b, int s) {
+ char c1 = charAt(b, s);
+ int size1 = charSize(b, s);
+
+ if (Character.isLowSurrogate(c1)) {
+ throw new IllegalArgumentException(LOW_SURROGATE_WITHOUT_HIGH_SURROGATE);
+ }
+
+ if (Character.isHighSurrogate(c1)) {
+ // Similar to the above codePointAt(),
+ // if c1 is the a high surrogate and also the last char in the byte array (that means the byte array is somehow illegal),
+ // then an exception will be thrown because there is no low surrogate available in the byte array
+ s += size1;
+ int size2 = charSize(b, s);
+ return size1 + size2;
+ }
+
+ return size1;
+ }
+
public static boolean isCharStart(byte[] b, int s) {
int c = b[s] & 0xff;
return (c >> 6) != 2;
@@ -137,9 +185,15 @@
}
}
+ // The result is the number of Java Chars (8 bytes) in the string
public static int getStringLength(byte[] b, int s) {
int len = getUTFLength(b, s);
int pos = s + getNumBytesToStoreLength(len);
+ return getStringLength(b, pos, len);
+ }
+
+ public static int getStringLength(byte[] b, int offs, int len) {
+ int pos = offs;
int end = pos + len;
int charCount = 0;
while (pos < end) {
@@ -149,6 +203,19 @@
return charCount;
}
+ public static int getNumCodePoint(byte[] b, int s) {
+ int len = getUTFLength(b, s);
+ int pos = s + getNumBytesToStoreLength(len);
+ int end = pos + len;
+ int codePointCount = 0;
+ while (pos < end) {
+ codePointCount++;
+ pos += codePointSize(b, pos);
+ }
+
+ return codePointCount;
+ }
+
public static int getUTFLength(byte[] b, int s) {
return VarLenIntEncoderDecoder.decode(b, s);
}
@@ -157,68 +224,14 @@
return VarLenIntEncoderDecoder.getBytesRequired(strlen);
}
- public static int UTF8ToCodePoint(byte[] b, int s) {
- if (b[s] >> 7 == 0) {
- // 1 byte
- return b[s];
- } else if ((b[s] & 0xe0) == 0xc0) { /*0xe0 = 0b1110000*/
- // 2 bytes
- return (b[s] & 0x1f) << 6 | /*0x3f = 0b00111111*/
- (b[s + 1] & 0x3f);
- } else if ((b[s] & 0xf0) == 0xe0) {
- // 3bytes
- return (b[s] & 0xf) << 12 | (b[s + 1] & 0x3f) << 6 | (b[s + 2] & 0x3f);
- } else if ((b[s] & 0xf8) == 0xf0) {
- // 4bytes
- return (b[s] & 0x7) << 18 | (b[s + 1] & 0x3f) << 12 | (b[s + 2] & 0x3f) << 6 | (b[s + 3] & 0x3f);
- } else if ((b[s] & 0xfc) == 0xf8) {
- // 5bytes
- return (b[s] & 0x3) << 24 | (b[s + 1] & 0x3f) << 18 | (b[s + 2] & 0x3f) << 12 | (b[s + 3] & 0x3f) << 6
- | (b[s + 4] & 0x3f);
- } else if ((b[s] & 0xfe) == 0xfc) {
- // 6bytes
- return (b[s] & 0x1) << 30 | (b[s + 1] & 0x3f) << 24 | (b[s + 2] & 0x3f) << 18 | (b[s + 3] & 0x3f) << 12
- | (b[s + 4] & 0x3f) << 6 | (b[s + 5] & 0x3f);
+ public static int codePointToUTF8(int codePoint, char[] tempChars, byte[] outputUTF8) {
+ int len = 0;
+ int numChars = Character.toChars(codePoint, tempChars, 0);
+ for (int i = 0; i < numChars; i++) {
+ len += writeToBytes(outputUTF8, len, tempChars[i]);
}
- return 0;
- }
- public static int codePointToUTF8(int c, byte[] outputUTF8) {
- if (c < 0x80) {
- outputUTF8[0] = (byte) (c & 0x7F /* mask 7 lsb: 0b1111111 */);
- return 1;
- } else if (c < 0x0800) {
- outputUTF8[0] = (byte) (c >> 6 & 0x1F | 0xC0);
- outputUTF8[1] = (byte) (c & 0x3F | 0x80);
- return 2;
- } else if (c < 0x010000) {
- outputUTF8[0] = (byte) (c >> 12 & 0x0F | 0xE0);
- outputUTF8[1] = (byte) (c >> 6 & 0x3F | 0x80);
- outputUTF8[2] = (byte) (c & 0x3F | 0x80);
- return 3;
- } else if (c < 0x200000) {
- outputUTF8[0] = (byte) (c >> 18 & 0x07 | 0xF0);
- outputUTF8[1] = (byte) (c >> 12 & 0x3F | 0x80);
- outputUTF8[2] = (byte) (c >> 6 & 0x3F | 0x80);
- outputUTF8[3] = (byte) (c & 0x3F | 0x80);
- return 4;
- } else if (c < 0x4000000) {
- outputUTF8[0] = (byte) (c >> 24 & 0x03 | 0xF8);
- outputUTF8[1] = (byte) (c >> 18 & 0x3F | 0x80);
- outputUTF8[2] = (byte) (c >> 12 & 0x3F | 0x80);
- outputUTF8[3] = (byte) (c >> 6 & 0x3F | 0x80);
- outputUTF8[4] = (byte) (c & 0x3F | 0x80);
- return 5;
- } else if (c < 0x80000000) {
- outputUTF8[0] = (byte) (c >> 30 & 0x01 | 0xFC);
- outputUTF8[1] = (byte) (c >> 24 & 0x3F | 0x80);
- outputUTF8[2] = (byte) (c >> 18 & 0x3F | 0x80);
- outputUTF8[3] = (byte) (c >> 12 & 0x3F | 0x80);
- outputUTF8[4] = (byte) (c >> 6 & 0x3F | 0x80);
- outputUTF8[5] = (byte) (c & 0x3F | 0x80);
- return 6;
- }
- return 0;
+ return len;
}
/**
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringSample.java b/hyracks-fullstack/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringSample.java
index 6984d75..b114351 100644
--- a/hyracks-fullstack/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringSample.java
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringSample.java
@@ -39,6 +39,10 @@
public static final String STRING_UTF8_MIX_LOWERCASE = "\uD841\uDF0E\uD841\uDF31éxć¤yćˇzà";
public static final String STRING_NEEDS_2_JAVA_CHARS_1 = "\uD83D\uDE22\uD83D\uDE22\uD83D\uDC89\uD83D\uDC89";
public static final String STRING_NEEDS_2_JAVA_CHARS_2 = "đ˘đ˘đđ";
+ public static final String STRING_EMOJI_FAMILY_OF_4 =
+ "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66";
+ public static final String STRING_EMOJI_FAMILY_OF_2 = "\uD83D\uDC68\u200D\uD83D\uDC66";
+ public static final String EMOJI_BASKETBALL = "\uD83C\uDFC0";
public static final String STRING_LEN_127 = generateStringRepeatBy(ONE_ASCII_CHAR, 127);
public static final String STRING_LEN_128 = generateStringRepeatBy(ONE_ASCII_CHAR, 128);
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringUtilTest.java b/hyracks-fullstack/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringUtilTest.java
index 2c99104..c7468d2 100644
--- a/hyracks-fullstack/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringUtilTest.java
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringUtilTest.java
@@ -30,6 +30,7 @@
import static org.apache.hyracks.util.string.UTF8StringUtil.compareTo;
import static org.apache.hyracks.util.string.UTF8StringUtil.getModifiedUTF8Len;
import static org.apache.hyracks.util.string.UTF8StringUtil.getNumBytesToStoreLength;
+import static org.apache.hyracks.util.string.UTF8StringUtil.getNumCodePoint;
import static org.apache.hyracks.util.string.UTF8StringUtil.getStringLength;
import static org.apache.hyracks.util.string.UTF8StringUtil.getUTF8StringInArray;
import static org.apache.hyracks.util.string.UTF8StringUtil.getUTFLength;
@@ -176,4 +177,13 @@
assertEquals("23333", getUTF8StringInArray(bytes, 52, 5));
}
+ @Test
+ public void testGetNumCodePoint() {
+ String str = "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66";
+ assertEquals(getNumCodePoint(writeStringToBytes(str), 0), 7);
+
+ str = "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66\uD83C\uDDE8\uD83C\uDDF3";
+ assertEquals(getNumCodePoint(writeStringToBytes(str), 0), 9);
+ }
+
}
diff --git a/hyracks-fullstack/pom.xml b/hyracks-fullstack/pom.xml
index aabf956..bb20422 100644
--- a/hyracks-fullstack/pom.xml
+++ b/hyracks-fullstack/pom.xml
@@ -306,6 +306,11 @@
<version>3.6.3</version>
</dependency>
<dependency>
+ <groupId>it.unimi.dsi</groupId>
+ <artifactId>fastutil</artifactId>
+ <version>8.3.0</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.13.1</version>