Make query plans more user-friendly.
Change-Id: I91c15913009295352cf7cccf4a4028f1ff271e3f
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1721
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Steven Jacobs <sjaco002@ucr.edu>
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SimilarityCheckRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SimilarityCheckRule.java
index 5835a21..46e0f7e 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SimilarityCheckRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SimilarityCheckRule.java
@@ -190,9 +190,9 @@
.add(new MutableObject<ILogicalOperator>(matchingAssign.getInputs().get(0).getValue()));
matchingAssign.getInputs().get(0).setValue(newAssign);
- // Replace select condition with a get-item on newVar.
+ // Replace select condition with a get-item on newVarFromExpression.
List<Mutable<ILogicalExpression>> selectGetItemArgs = new ArrayList<Mutable<ILogicalExpression>>();
- // First arg is a variable reference expr on newVar.
+ // First arg is a variable reference expr on newVarFromExpression.
selectGetItemArgs.add(new MutableObject<ILogicalExpression>(new VariableReferenceExpression(newVar)));
// Second arg is the item index to be accessed, here 0.
selectGetItemArgs.add(new MutableObject<ILogicalExpression>(
@@ -202,9 +202,10 @@
// Replace the old similarity function call with the new getItemExpr.
expRef.setValue(selectGetItemExpr);
- // Replace expr corresponding to original variable in the original assign with a get-item on newVar.
+ // Replace expr corresponding to original variable in the original assign with a get-item on
+ // newVarFromExpression.
List<Mutable<ILogicalExpression>> assignGetItemArgs = new ArrayList<Mutable<ILogicalExpression>>();
- // First arg is a variable reference expr on newVar.
+ // First arg is a variable reference expr on newVarFromExpression.
assignGetItemArgs.add(new MutableObject<ILogicalExpression>(new VariableReferenceExpression(newVar)));
// Second arg is the item index to be accessed, here 1.
assignGetItemArgs.add(new MutableObject<ILogicalExpression>(
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 62b71df..81c5f4c 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
@@ -79,7 +79,7 @@
@Override
public Pair<ILogicalOperator, LogicalVariable> visit(ForClause fc, Mutable<ILogicalOperator> tupSource)
throws CompilationException {
- LogicalVariable v = context.newVar(fc.getVarExpr());
+ LogicalVariable v = context.newVarFromExpression(fc.getVarExpr());
Expression inExpr = fc.getInExpr();
Pair<ILogicalExpression, Mutable<ILogicalOperator>> eo = langExprToAlgExpression(inExpr, tupSource);
ILogicalOperator returnedOp;
@@ -87,7 +87,7 @@
if (fc.getPosVarExpr() == null) {
returnedOp = new UnnestOperator(v, new MutableObject<ILogicalExpression>(makeUnnestExpression(eo.first)));
} else {
- LogicalVariable pVar = context.newVar(fc.getPosVarExpr());
+ LogicalVariable pVar = context.newVarFromExpression(fc.getPosVarExpr());
// We set the positional variable type as INT64 type.
returnedOp = new UnnestOperator(v, new MutableObject<ILogicalExpression>(makeUnnestExpression(eo.first)),
pVar, BuiltinType.AINT64, new PositionWriter());
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 4b4ef8e..2662be8 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
@@ -691,7 +691,7 @@
ILogicalOperator rootOperator = inputOperator;
//Makes the id of the insert var point to the record variable.
- context.newVar(compiledInsert.getVar());
+ context.newVarFromExpression(compiledInsert.getVar());
context.setVar(compiledInsert.getVar(),
((VariableReferenceExpression) insertOp.getPayloadExpression().getValue()).getVariableReference());
Pair<ILogicalExpression, Mutable<ILogicalOperator>> p =
@@ -744,12 +744,12 @@
LogicalVariable v;
ILogicalOperator returnedOp;
if (lc.getBindingExpr().getKind() == Kind.VARIABLE_EXPRESSION) {
- v = context.newVar(lc.getVarExpr());
+ v = context.newVarFromExpression(lc.getVarExpr());
LogicalVariable prev = context.getVar(((VariableExpr) lc.getBindingExpr()).getVar().getId());
returnedOp = new AssignOperator(v, new MutableObject<>(new VariableReferenceExpression(prev)));
returnedOp.getInputs().add(tupSource);
} else {
- v = context.newVar(lc.getVarExpr());
+ v = context.newVarFromExpression(lc.getVarExpr());
Pair<ILogicalExpression, Mutable<ILogicalOperator>> eo =
langExprToAlgExpression(lc.getBindingExpr(), tupSource);
returnedOp = new AssignOperator(v, new MutableObject<>(eo.first));
@@ -762,7 +762,7 @@
public Pair<ILogicalOperator, LogicalVariable> visit(FieldAccessor fa, Mutable<ILogicalOperator> tupSource)
throws CompilationException {
Pair<ILogicalExpression, Mutable<ILogicalOperator>> p = langExprToAlgExpression(fa.getExpr(), tupSource);
- LogicalVariable v = context.newVar();
+ LogicalVariable v = context.newVarFromExpression(fa);
AbstractFunctionCallExpression fldAccess =
new ScalarFunctionCallExpression(FunctionUtil.getFunctionInfo(BuiltinFunctions.FIELD_ACCESS_BY_NAME));
fldAccess.getArguments().add(new MutableObject<>(p.first));
@@ -922,7 +922,7 @@
ILogicalExpression groupFieldExpr = langExprToAlgExpression(groupField.first, topOp).first;
groupRecordConstructorArgList.add(new MutableObject<>(groupFieldExpr));
}
- LogicalVariable groupVar = context.newVar(gc.getGroupVar());
+ LogicalVariable groupVar = context.newVarFromExpression(gc.getGroupVar());
AssignOperator groupVarAssignOp = new AssignOperator(groupVar,
new MutableObject<>(new ScalarFunctionCallExpression(
FunctionUtil.getFunctionInfo(BuiltinFunctions.OPEN_RECORD_CONSTRUCTOR),
@@ -934,14 +934,14 @@
GroupByOperator gOp = new GroupByOperator();
for (GbyVariableExpressionPair ve : gc.getGbyPairList()) {
VariableExpr vexpr = ve.getVar();
- LogicalVariable v = vexpr == null ? context.newVar() : context.newVar(vexpr);
+ LogicalVariable v = vexpr == null ? context.newVar() : context.newVarFromExpression(vexpr);
Pair<ILogicalExpression, Mutable<ILogicalOperator>> eo = langExprToAlgExpression(ve.getExpr(), topOp);
gOp.addGbyExpression(v, eo.first);
topOp = eo.second;
}
for (GbyVariableExpressionPair ve : gc.getDecorPairList()) {
VariableExpr vexpr = ve.getVar();
- LogicalVariable v = vexpr == null ? context.newVar() : context.newVar(vexpr);
+ LogicalVariable v = vexpr == null ? context.newVar() : context.newVarFromExpression(vexpr);
Pair<ILogicalExpression, Mutable<ILogicalOperator>> eo = langExprToAlgExpression(ve.getExpr(), topOp);
gOp.addDecorExpression(v, eo.first);
topOp = eo.second;
@@ -1159,7 +1159,7 @@
for (QuantifiedPair qt : qe.getQuantifiedList()) {
Pair<ILogicalExpression, Mutable<ILogicalOperator>> eo1 = langExprToAlgExpression(qt.getExpr(), topOp);
topOp = eo1.second;
- LogicalVariable uVar = context.newVar(qt.getVarExpr());
+ LogicalVariable uVar = context.newVarFromExpression(qt.getVarExpr());
ILogicalOperator u = new UnnestOperator(uVar, new MutableObject<>(makeUnnestExpression(eo1.first)));
if (firstOp == null) {
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 f46613b..477d596 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
@@ -248,12 +248,12 @@
@Override
public Pair<ILogicalOperator, LogicalVariable> visit(FromTerm fromTerm, Mutable<ILogicalOperator> tupSource)
throws CompilationException {
- LogicalVariable fromVar = context.newVar(fromTerm.getLeftVariable());
+ LogicalVariable fromVar = context.newVarFromExpression(fromTerm.getLeftVariable());
Expression fromExpr = fromTerm.getLeftExpression();
Pair<ILogicalExpression, Mutable<ILogicalOperator>> eo = langExprToAlgExpression(fromExpr, tupSource);
ILogicalOperator unnestOp;
if (fromTerm.hasPositionalVariable()) {
- LogicalVariable pVar = context.newVar(fromTerm.getPositionalVariable());
+ LogicalVariable pVar = context.newVarFromExpression(fromTerm.getPositionalVariable());
// We set the positional variable type as INT64 type.
unnestOp =
new UnnestOperator(fromVar, new MutableObject<ILogicalExpression>(makeUnnestExpression(eo.first)),
@@ -448,12 +448,12 @@
private Pair<ILogicalOperator, LogicalVariable> generateUnnestForBinaryCorrelateRightBranch(
AbstractBinaryCorrelateClause binaryCorrelate, Mutable<ILogicalOperator> inputOpRef, boolean innerUnnest)
throws CompilationException {
- LogicalVariable rightVar = context.newVar(binaryCorrelate.getRightVariable());
+ LogicalVariable rightVar = context.newVarFromExpression(binaryCorrelate.getRightVariable());
Expression rightExpr = binaryCorrelate.getRightExpression();
Pair<ILogicalExpression, Mutable<ILogicalOperator>> eo = langExprToAlgExpression(rightExpr, inputOpRef);
ILogicalOperator unnestOp;
if (binaryCorrelate.hasPositionalVariable()) {
- LogicalVariable pVar = context.newVar(binaryCorrelate.getPositionalVariable());
+ LogicalVariable pVar = context.newVarFromExpression(binaryCorrelate.getPositionalVariable());
// We set the positional variable type as INT64 type.
unnestOp = innerUnnest
? new UnnestOperator(rightVar, new MutableObject<>(makeUnnestExpression(eo.first)), pVar,
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TranslationContext.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TranslationContext.java
index 71de5ac..1344e0c 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TranslationContext.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TranslationContext.java
@@ -18,10 +18,12 @@
*/
package org.apache.asterix.translator;
+import java.util.ArrayDeque;
+import java.util.Deque;
import java.util.HashMap;
import java.util.Map;
-import java.util.Stack;
+import org.apache.asterix.lang.common.base.Expression;
import org.apache.asterix.lang.common.expression.VariableExpr;
import org.apache.hyracks.algebricks.core.algebra.base.Counter;
import org.apache.hyracks.algebricks.core.algebra.base.IVariableContext;
@@ -32,8 +34,8 @@
private Counter varCounter;
/** The stack is the used to manage the scope of variables for group-by rebindings. */
- private Stack<Map<Integer, LogicalVariable>> stack = new Stack<Map<Integer, LogicalVariable>>();
- private Map<Integer, LogicalVariable> currentVarMap = new HashMap<Integer, LogicalVariable>();
+ private Deque<Map<Integer, LogicalVariable>> stack = new ArrayDeque<>();
+ private Map<Integer, LogicalVariable> currentVarMap = new HashMap<>();
private boolean topFlwor = true;
public TranslationContext(Counter varCounter) {
@@ -47,9 +49,15 @@
@Override
public LogicalVariable newVar() {
+ return newVarFromExpression(null);
+ }
+
+ @Override
+ public LogicalVariable newVar(String displayName) {
varCounter.inc();
- LogicalVariable var = new LogicalVariable(varCounter.get());
- currentVarMap.put(varCounter.get(), var);
+ int varId = varCounter.get();
+ LogicalVariable var = new LogicalVariable(varId, displayName);
+ currentVarMap.put(varId, var);
return var;
}
@@ -70,20 +78,26 @@
return currentVarMap.get(varId);
}
- public LogicalVariable getVar(VariableExpr v) {
- return currentVarMap.get(v.getVar().getId());
- }
-
- public LogicalVariable newVar(VariableExpr v) {
- Integer i = v.getVar().getId();
- if (i > varCounter.get()) {
- varCounter.set(i);
+ public LogicalVariable newVarFromExpression(Expression expr) {
+ int varId;
+ if (expr != null && expr.getKind() == Expression.Kind.VARIABLE_EXPRESSION) {
+ VariableExpr v = (VariableExpr) expr;
+ varId = v.getVar().getId();
+ if (varId > varCounter.get()) {
+ varCounter.set(varId);
+ }
+ } else {
+ varCounter.inc();
+ varId = varCounter.get();
}
- LogicalVariable var = new LogicalVariable(i);
- currentVarMap.put(i, var);
+ LogicalVariable var = expr != null && (expr.getKind() == Expression.Kind.VARIABLE_EXPRESSION
+ || expr.getKind() == Expression.Kind.FIELD_ACCESSOR_EXPRESSION)
+ ? new LogicalVariable(varId, expr.toString()) : new LogicalVariable(varId);
+ currentVarMap.put(varId, var);
return var;
}
+
public void setVar(VariableExpr v, LogicalVariable var) {
currentVarMap.put(v.getVar().getId(), var);
}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/count-tweets.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/count-tweets.plan
index a17020e..4f8d74b 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/count-tweets.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/count-tweets.plan
@@ -9,7 +9,7 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- HASH_PARTITION_EXCHANGE [$$14] |PARTITIONED|
- -- SORT_GROUP_BY[$$4] |PARTITIONED|
+ -- SORT_GROUP_BY[$$token] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-phase1.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-phase1.plan
index 83af511..c00096d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-phase1.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/fj-phase1.plan
@@ -10,12 +10,12 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$21(ASC), $$4(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$21(ASC), $$item(ASC)] |PARTITIONED|
-- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$1][$$4] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$1] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$lottery_number][$$item] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$lottery_number] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- UNNEST |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
@@ -24,7 +24,7 @@
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$4] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$item] |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- RUNNING_AGGREGATE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
@@ -37,7 +37,7 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- HASH_PARTITION_EXCHANGE [$$30] |PARTITIONED|
- -- SORT_GROUP_BY[$$3] |PARTITIONED|
+ -- SORT_GROUP_BY[$$lottery_number] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/gby_inline.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/gby_inline.plan
index b3f4ac2..4043a9c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/gby_inline.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/gby_inline.plan
@@ -4,20 +4,20 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$1] |PARTITIONED|
+ -- PRE_CLUSTERED_GROUP_BY[$$ccustkey] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- STREAM_SELECT |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$1(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$ccustkey(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$1, $$2][$$24, $$26] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$1] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$ccustkey, $$cnationkey][$$24, $$26] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$ccustkey] |PARTITIONED|
-- PRE_CLUSTERED_GROUP_BY[$$20] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/hashjoin-with-unnest.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/hashjoin-with-unnest.plan
index b36dbe8..302d7e4 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/hashjoin-with-unnest.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/hashjoin-with-unnest.plan
@@ -4,8 +4,8 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$2][$$3] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$2] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$a][$$b] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$a] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- UNNEST |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -14,7 +14,7 @@
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$3] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$b] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- UNNEST |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -22,4 +22,4 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
\ No newline at end of file
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inlined_q18_large_volume_customer.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inlined_q18_large_volume_customer.plan
index b2d5267..d9ce6c8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/inlined_q18_large_volume_customer.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/inlined_q18_large_volume_customer.plan
@@ -3,10 +3,10 @@
-- STREAM_PROJECT |UNPARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- STREAM_LIMIT |UNPARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$12(DESC), $$11(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$o_totalprice(DESC), $$o_orderdate(ASC) ] |PARTITIONED|
-- STREAM_LIMIT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [topK: 100] [$$12(DESC), $$11(ASC)] |PARTITIONED|
+ -- STABLE_SORT [topK: 100] [$$o_totalprice(DESC), $$o_orderdate(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- SORT_GROUP_BY[$$72, $$73] |PARTITIONED|
{
@@ -26,7 +26,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$57][$$3] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$57][$$l_orderkey] |PARTITIONED|
-- HASH_PARTITION_EXCHANGE [$$57] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -45,7 +45,7 @@
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$3] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$l_orderkey] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nonpure/global-datetime-use-index-return-time.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nonpure/global-datetime-use-index-return-time.plan
index c6fd83e..a7a7662 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nonpure/global-datetime-use-index-return-time.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nonpure/global-datetime-use-index-return-time.plan
@@ -6,7 +6,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$0(ASC)] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$0] |PARTITIONED|
+ -- STABLE_SORT [$$time(ASC)] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$time] |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
- -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
\ No newline at end of file
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nonpure/global-datetime-use-index.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nonpure/global-datetime-use-index.plan
index 972e56a..228a6ec 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nonpure/global-datetime-use-index.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nonpure/global-datetime-use-index.plan
@@ -4,7 +4,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- BTREE_SEARCH |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$0(ASC)] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$0] |PARTITIONED|
+ -- STABLE_SORT [$$time(ASC)] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$time] |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
- -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
\ No newline at end of file
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orderby-desc-using-gby.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orderby-desc-using-gby.plan
index 8c86c6b..8e7f8ca 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/orderby-desc-using-gby.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/orderby-desc-using-gby.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1(DESC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$name(DESC) ] |PARTITIONED|
-- SORT_GROUP_BY[$$10] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/q01_pricing_summary_report_nt.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/q01_pricing_summary_report_nt.plan
index d0b7ef3..de74804 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/q01_pricing_summary_report_nt.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/q01_pricing_summary_report_nt.plan
@@ -15,8 +15,8 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1(ASC), $$2(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$1(ASC), $$2(ASC)] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$l_returnflag(ASC), $$l_linestatus(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$l_returnflag(ASC), $$l_linestatus(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EXTERNAL_GROUP_BY[$$74, $$75] |PARTITIONED|
{
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/q03_shipping_priority.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/q03_shipping_priority.plan
index c4c0c05..e5a6867 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/q03_shipping_priority.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/q03_shipping_priority.plan
@@ -3,10 +3,10 @@
-- STREAM_PROJECT |UNPARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- STREAM_LIMIT |UNPARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$49(DESC), $$4(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$49(DESC), $$o_orderdate(ASC) ] |PARTITIONED|
-- STREAM_LIMIT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [topK: 10] [$$49(DESC), $$4(ASC)] |PARTITIONED|
+ -- STABLE_SORT [topK: 10] [$$49(DESC), $$o_orderdate(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EXTERNAL_GROUP_BY[$$55, $$56, $$57] |PARTITIONED|
{
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1005.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1005.plan
index 5675545..92a1472 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1005.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1005.plan
@@ -20,7 +20,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$1][$$13] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$c][$$13] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- UNNEST |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1127.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1127.plan
index d7ca1e9..40e653c 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1127.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1127.plan
@@ -3,10 +3,10 @@
-- STREAM_PROJECT |UNPARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- STREAM_LIMIT |UNPARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$49(DESC), $$4(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$49(DESC), $$o_orderdate(ASC) ] |PARTITIONED|
-- STREAM_LIMIT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [topK: 10] [$$49(DESC), $$4(ASC)] |PARTITIONED|
+ -- STABLE_SORT [topK: 10] [$$49(DESC), $$o_orderdate(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EXTERNAL_GROUP_BY[$$55, $$56, $$57] |PARTITIONED|
{
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1168.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1168.plan
index b4d6934..660ad87 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1168.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1168.plan
@@ -15,8 +15,8 @@
-- HASH_PARTITION_EXCHANGE [$$12] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$1][$$11] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$1] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$p][$$11] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$p] |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- STREAM_PROJECT |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343-2.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343-2.plan
index cb833a5..caa317d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343-2.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343-2.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$3(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$o_orderpriority(ASC) ] |PARTITIONED|
-- SORT_GROUP_BY[$$39] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343-3.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343-3.plan
index 336d7d4..5141e09 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343-3.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343-3.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$3(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$o_orderpriority(ASC) ] |PARTITIONED|
-- SORT_GROUP_BY[$$39] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343-4.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343-4.plan
index 5e3d14a..2de88ae 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343-4.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343-4.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$3(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$o_orderpriority(ASC) ] |PARTITIONED|
-- SORT_GROUP_BY[$$39] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343.plan
index cb833a5..caa317d 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1343.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$3(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$o_orderpriority(ASC) ] |PARTITIONED|
-- SORT_GROUP_BY[$$39] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan
index 2439f0d..7ea82a1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$2(ASC), $$3(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$l_returnflag(ASC), $$l_linestatus(ASC) ] |PARTITIONED|
-- SORT_GROUP_BY[$$98, $$99] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue562.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue562.plan
index b7e11d3..9974287 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue562.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue562.plan
@@ -2,14 +2,14 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$7(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$cntrycode(ASC) ] |PARTITIONED|
-- SORT_GROUP_BY[$$82] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- HASH_PARTITION_EXCHANGE [$$82] |PARTITIONED|
- -- SORT_GROUP_BY[$$11] |PARTITIONED|
+ -- SORT_GROUP_BY[$$phone_substr] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
@@ -41,7 +41,7 @@
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$11][$$65] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$phone_substr][$$65] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue785.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue785.plan
index 4027e6a..fe1f67a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue785.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue785.plan
@@ -3,7 +3,7 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- PRE_CLUSTERED_GROUP_BY[$$7] |PARTITIONED|
+ -- PRE_CLUSTERED_GROUP_BY[$$nation_key] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- STREAM_LIMIT |LOCAL|
@@ -11,8 +11,8 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$7(ASC)] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$7] |PARTITIONED|
+ -- STABLE_SORT [$$nation_key(ASC)] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$nation_key] |PARTITIONED|
-- SORT_GROUP_BY[$$69, $$70] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue810-2.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue810-2.plan
index 7b94c2a..e229e75 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue810-2.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue810-2.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1(ASC), $$2(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$l_returnflag(ASC), $$l_linestatus(ASC) ] |PARTITIONED|
-- PRE_CLUSTERED_GROUP_BY[$$75, $$76] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue810.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue810.plan
index 3e7d5d9..ca941bf 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue810.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue810.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$1(ASC), $$2(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$l_returnflag(ASC), $$l_linestatus(ASC) ] |PARTITIONED|
-- PRE_CLUSTERED_GROUP_BY[$$34, $$35] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/split-materialization-above-join.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/split-materialization-above-join.plan
index d698437..a81a142 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/split-materialization-above-join.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/split-materialization-above-join.plan
@@ -8,16 +8,16 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$26][$$94] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$26] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$idRight][$$94] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$idRight] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$93][$$25] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$93][$$idLeft] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$25] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$idLeft] |PARTITIONED|
-- PRE_CLUSTERED_GROUP_BY[$$122, $$124] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
@@ -31,13 +31,13 @@
-- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$12][$$23] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$prefixTokenLeft][$$prefixTokenRight] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$23] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
-- UNNEST |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- PRE_CLUSTERED_GROUP_BY[$$97] |PARTITIONED|
@@ -47,12 +47,12 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$97(ASC), $$21(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$97(ASC), $$i(ASC)] |PARTITIONED|
-- HASH_PARTITION_EXCHANGE [$$97] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$18] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$tokenUnranked][$$tokenGroupped] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$tokenUnranked] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- UNNEST |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -62,12 +62,12 @@
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$18] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$tokenGroupped] |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- RUNNING_AGGREGATE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$102(ASC), $$18(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$102(ASC), $$18(ASC)] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$102(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$102(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- SORT_GROUP_BY[$$130] |PARTITIONED|
{
@@ -75,7 +75,7 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- HASH_PARTITION_EXCHANGE [$$130] |PARTITIONED|
- -- SORT_GROUP_BY[$$17] |PARTITIONED|
+ -- SORT_GROUP_BY[$$token] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
@@ -94,7 +94,7 @@
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- REPLICATE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$23] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$prefixTokenRight] |PARTITIONED|
-- UNNEST |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- PRE_CLUSTERED_GROUP_BY[$$97] |PARTITIONED|
@@ -104,12 +104,12 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STABLE_SORT [$$97(ASC), $$21(ASC)] |PARTITIONED|
+ -- STABLE_SORT [$$97(ASC), $$i(ASC)] |PARTITIONED|
-- HASH_PARTITION_EXCHANGE [$$97] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$15][$$18] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$15] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$tokenUnranked][$$tokenGroupped] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$tokenUnranked] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- UNNEST |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -119,12 +119,12 @@
-- DATASOURCE_SCAN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$18] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$tokenGroupped] |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- RUNNING_AGGREGATE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$102(ASC), $$18(ASC) ] |PARTITIONED|
- -- STABLE_SORT [$$102(ASC), $$18(ASC)] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$102(ASC), $$tokenGroupped(ASC) ] |PARTITIONED|
+ -- STABLE_SORT [$$102(ASC), $$tokenGroupped(ASC)] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- SORT_GROUP_BY[$$130] |PARTITIONED|
{
@@ -132,7 +132,7 @@
-- NESTED_TUPLE_SOURCE |LOCAL|
}
-- HASH_PARTITION_EXCHANGE [$$130] |PARTITIONED|
- -- SORT_GROUP_BY[$$17] |PARTITIONED|
+ -- SORT_GROUP_BY[$$token] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan
index 1c404ab..3b92cdd 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$9(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$cntrycode(ASC) ] |PARTITIONED|
-- SORT_GROUP_BY[$$82] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan
index b134499..06257a1 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$9(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$cntrycode(ASC) ] |PARTITIONED|
-- SORT_GROUP_BY[$$83] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-1572.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-1572.plan
index a8f916c..6c9c457 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-1572.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-1572.plan
@@ -16,7 +16,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$44][$$5] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$44][$#4] |PARTITIONED|
-- HASH_PARTITION_EXCHANGE [$$44] |PARTITIONED|
-- PRE_CLUSTERED_GROUP_BY[$$42] |PARTITIONED|
{
@@ -29,7 +29,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$42][$$4] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$42][$#3] |PARTITIONED|
-- HASH_PARTITION_EXCHANGE [$$42] |PARTITIONED|
-- PRE_CLUSTERED_GROUP_BY[$$40] |PARTITIONED|
{
@@ -42,7 +42,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$40][$$3] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$40][$#2] |PARTITIONED|
-- HASH_PARTITION_EXCHANGE [$$40] |PARTITIONED|
-- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED|
{
@@ -53,26 +53,26 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$33][$$2] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$33][$#1] |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 [$$2] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#1] |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$3] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#2] |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$4] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#3] |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$5] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#4] |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan
index cbcce5d..57ca6ce 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$3(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$l_shipmode(ASC) ] |PARTITIONED|
-- SORT_GROUP_BY[$$95] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan
index cd7e6da..40c1c55 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
- -- SORT_MERGE_EXCHANGE [$$3(ASC) ] |PARTITIONED|
+ -- SORT_MERGE_EXCHANGE [$$l_shipmode(ASC) ] |PARTITIONED|
-- SORT_GROUP_BY[$$95] |PARTITIONED|
{
-- AGGREGATE |LOCAL|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/udfs/query-ASTERIXDB-1298.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/udfs/query-ASTERIXDB-1298.plan
index c62d34e..ffd8105 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/udfs/query-ASTERIXDB-1298.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/udfs/query-ASTERIXDB-1298.plan
@@ -2,8 +2,8 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$5][$$17] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$5] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$#1][$$17] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#1] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/udfs/query-ASTERIXDB-1308-1.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/udfs/query-ASTERIXDB-1308-1.plan
index f6ee3fa..1e60aed 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/udfs/query-ASTERIXDB-1308-1.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/udfs/query-ASTERIXDB-1308-1.plan
@@ -10,7 +10,7 @@
-- SUBPLAN |UNPARTITIONED|
{
-- AGGREGATE |UNPARTITIONED|
- -- IN_MEMORY_STABLE_SORT [$$28(ASC)] |UNPARTITIONED|
+ -- IN_MEMORY_STABLE_SORT [$$j(ASC)] |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- NESTED_TUPLE_SOURCE |UNPARTITIONED|
}
@@ -31,7 +31,7 @@
-- SUBPLAN |UNPARTITIONED|
{
-- AGGREGATE |UNPARTITIONED|
- -- IN_MEMORY_STABLE_SORT [$$21(ASC)] |UNPARTITIONED|
+ -- IN_MEMORY_STABLE_SORT [$$j(ASC)] |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- NESTED_TUPLE_SOURCE |UNPARTITIONED|
}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/udfs/query-ASTERIXDB-1308-2.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/udfs/query-ASTERIXDB-1308-2.plan
index aa22db0..a5124c3 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/udfs/query-ASTERIXDB-1308-2.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/udfs/query-ASTERIXDB-1308-2.plan
@@ -12,7 +12,7 @@
-- SUBPLAN |LOCAL|
{
-- AGGREGATE |LOCAL|
- -- IN_MEMORY_STABLE_SORT [$$38(ASC)] |LOCAL|
+ -- IN_MEMORY_STABLE_SORT [$$j(ASC)] |LOCAL|
-- UNNEST |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
}
@@ -36,7 +36,7 @@
-- SUBPLAN |LOCAL|
{
-- AGGREGATE |LOCAL|
- -- IN_MEMORY_STABLE_SORT [$$31(ASC)] |LOCAL|
+ -- IN_MEMORY_STABLE_SORT [$$j(ASC)] |LOCAL|
-- UNNEST |LOCAL|
-- NESTED_TUPLE_SOURCE |LOCAL|
}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/unnest-to-join_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/unnest-to-join_01.plan
index beacfb0..50dce7a 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/unnest-to-join_01.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/unnest-to-join_01.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
-- STREAM_PROJECT |UNPARTITIONED|
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- -- HYBRID_HASH_JOIN [$$0][$$1] |UNPARTITIONED|
+ -- HYBRID_HASH_JOIN [$$x][$$y] |UNPARTITIONED|
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/unnest-to-join_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/unnest-to-join_02.plan
index 8c65c4b..b8b37a2 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/unnest-to-join_02.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/unnest-to-join_02.plan
@@ -2,7 +2,7 @@
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
-- AGGREGATE |UNPARTITIONED|
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- -- HYBRID_HASH_JOIN [$$0][$$1] |UNPARTITIONED|
+ -- HYBRID_HASH_JOIN [$$x][$$y] |UNPARTITIONED|
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_field_access/explain_field_access.1.ddl.sqlpp
similarity index 63%
copy from hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_field_access/explain_field_access.1.ddl.sqlpp
index 79c143d..866804c 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_field_access/explain_field_access.1.ddl.sqlpp
@@ -17,23 +17,13 @@
* under the License.
*/
-package org.apache.hyracks.algebricks.core.algebra.functions;
+DROP DATAVERSE gby IF EXISTS;
+CREATE DATAVERSE gby;
-import java.io.Serializable;
+USE gby;
-public abstract class AbstractFunctionInfo implements IFunctionInfo, Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private final boolean isFunctional;
-
- protected AbstractFunctionInfo(boolean isFunctional) {
- this.isFunctional = isFunctional;
- }
-
- @Override
- public boolean isFunctional() {
- return isFunctional;
- }
-
+CREATE TYPE EmployeeType AS {
+ id : string
}
+
+CREATE DATASET Employee(EmployeeType) PRIMARY KEY id;
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_field_access/explain_field_access.2.query.sqlpp
similarity index 62%
copy from hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_field_access/explain_field_access.2.query.sqlpp
index 79c143d..a4166e5 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_field_access/explain_field_access.2.query.sqlpp
@@ -17,23 +17,9 @@
* under the License.
*/
-package org.apache.hyracks.algebricks.core.algebra.functions;
+USE gby;
-import java.io.Serializable;
-
-public abstract class AbstractFunctionInfo implements IFunctionInfo, Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private final boolean isFunctional;
-
- protected AbstractFunctionInfo(boolean isFunctional) {
- this.isFunctional = isFunctional;
- }
-
- @Override
- public boolean isFunctional() {
- return isFunctional;
- }
-
-}
+EXPLAIN
+FROM Employee e
+GROUP BY substr(e.dept.department_id, 1)
+SELECT substr(e.dept.department_id, 1) as deptId, SUM(e.salary) AS star_cost;
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_field_access_closed/explain_field_access_closed.1.ddl.sqlpp
similarity index 63%
rename from hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_field_access_closed/explain_field_access_closed.1.ddl.sqlpp
index 79c143d..aaa62aa 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_field_access_closed/explain_field_access_closed.1.ddl.sqlpp
@@ -17,23 +17,15 @@
* under the License.
*/
-package org.apache.hyracks.algebricks.core.algebra.functions;
+DROP DATAVERSE gby IF EXISTS;
+CREATE DATAVERSE gby;
-import java.io.Serializable;
+USE gby;
-public abstract class AbstractFunctionInfo implements IFunctionInfo, Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private final boolean isFunctional;
-
- protected AbstractFunctionInfo(boolean isFunctional) {
- this.isFunctional = isFunctional;
- }
-
- @Override
- public boolean isFunctional() {
- return isFunctional;
- }
-
+CREATE TYPE EmployeeType AS {
+ id : string,
+ department_id: string,
+ salary : float
}
+
+CREATE DATASET Employee(EmployeeType) PRIMARY KEY id;
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_field_access_closed/explain_field_access_closed.2.query.sqlpp
similarity index 62%
copy from hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_field_access_closed/explain_field_access_closed.2.query.sqlpp
index 79c143d..e170a6e 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_field_access_closed/explain_field_access_closed.2.query.sqlpp
@@ -17,23 +17,9 @@
* under the License.
*/
-package org.apache.hyracks.algebricks.core.algebra.functions;
+USE gby;
-import java.io.Serializable;
-
-public abstract class AbstractFunctionInfo implements IFunctionInfo, Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private final boolean isFunctional;
-
- protected AbstractFunctionInfo(boolean isFunctional) {
- this.isFunctional = isFunctional;
- }
-
- @Override
- public boolean isFunctional() {
- return isFunctional;
- }
-
-}
+EXPLAIN
+FROM Employee e
+GROUP BY substr(e.department_id, 1)
+SELECT substr(e.department_id, 1) as deptId, SUM(e.salary) AS star_cost;
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_object_constructor-01/explain_object_constructor-01.1.query.sqlpp
similarity index 62%
copy from hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_object_constructor-01/explain_object_constructor-01.1.query.sqlpp
index 79c143d..f4e46e4 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_object_constructor-01/explain_object_constructor-01.1.query.sqlpp
@@ -17,23 +17,4 @@
* under the License.
*/
-package org.apache.hyracks.algebricks.core.algebra.functions;
-
-import java.io.Serializable;
-
-public abstract class AbstractFunctionInfo implements IFunctionInfo, Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private final boolean isFunctional;
-
- protected AbstractFunctionInfo(boolean isFunctional) {
- this.isFunctional = isFunctional;
- }
-
- @Override
- public boolean isFunctional() {
- return isFunctional;
- }
-
-}
+EXPLAIN SELECT VALUE {"a": "1", "b": 1};
\ No newline at end of file
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_object_constructor-02/explain_object_constructor-02.1.query.sqlpp
similarity index 62%
copy from hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_object_constructor-02/explain_object_constructor-02.1.query.sqlpp
index 79c143d..3b7fe02 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_object_constructor-02/explain_object_constructor-02.1.query.sqlpp
@@ -17,23 +17,4 @@
* under the License.
*/
-package org.apache.hyracks.algebricks.core.algebra.functions;
-
-import java.io.Serializable;
-
-public abstract class AbstractFunctionInfo implements IFunctionInfo, Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private final boolean isFunctional;
-
- protected AbstractFunctionInfo(boolean isFunctional) {
- this.isFunctional = isFunctional;
- }
-
- @Override
- public boolean isFunctional() {
- return isFunctional;
- }
-
-}
+EXPLAIN SELECT VALUE {"a": "1"};
\ No newline at end of file
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_object_constructor-03/explain_object_constructor-03.1.query.sqlpp
similarity index 62%
copy from hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_object_constructor-03/explain_object_constructor-03.1.query.sqlpp
index 79c143d..991e557 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AbstractFunctionInfo.java
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/explain/explain_object_constructor-03/explain_object_constructor-03.1.query.sqlpp
@@ -17,23 +17,4 @@
* under the License.
*/
-package org.apache.hyracks.algebricks.core.algebra.functions;
-
-import java.io.Serializable;
-
-public abstract class AbstractFunctionInfo implements IFunctionInfo, Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private final boolean isFunctional;
-
- protected AbstractFunctionInfo(boolean isFunctional) {
- this.isFunctional = isFunctional;
- }
-
- @Override
- public boolean isFunctional() {
- return isFunctional;
- }
-
-}
+EXPLAIN SELECT VALUE { };
\ No newline at end of file
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
new file mode 100644
index 0000000..055512a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm
@@ -0,0 +1,46 @@
+distribute result [$$19]
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ project ([$$19])
+ -- STREAM_PROJECT |PARTITIONED|
+ assign [$$19] <- [{"deptId": $#1, "star_cost": $$22}]
+ -- ASSIGN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ group by ([$#1 := $$27]) decor ([]) {
+ aggregate [$$22] <- [agg-sql-sum($$26)]
+ -- AGGREGATE |LOCAL|
+ nested tuple source
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- SORT_GROUP_BY[$$27] |PARTITIONED|
+ exchange
+ -- HASH_PARTITION_EXCHANGE [$$27] |PARTITIONED|
+ group by ([$$27 := $$20]) decor ([]) {
+ aggregate [$$26] <- [agg-local-sql-sum($$17)]
+ -- AGGREGATE |LOCAL|
+ nested tuple source
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- SORT_GROUP_BY[$$20] |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ project ([$$17, $$20])
+ -- STREAM_PROJECT |PARTITIONED|
+ assign [$$20] <- [substring($$24.getField("department_id"), 1)]
+ -- ASSIGN |PARTITIONED|
+ project ([$$17, $$24])
+ -- STREAM_PROJECT |PARTITIONED|
+ assign [$$17, $$24] <- [$$e.getField("salary"), $$e.getField("dept")]
+ -- ASSIGN |PARTITIONED|
+ project ([$$e])
+ -- STREAM_PROJECT |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ data-scan []<-[$$21, $$e] <- gby.Employee
+ -- DATASOURCE_SCAN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |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
new file mode 100644
index 0000000..d7f1893
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm
@@ -0,0 +1,42 @@
+distribute result [$$18]
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ project ([$$18])
+ -- STREAM_PROJECT |PARTITIONED|
+ assign [$$18] <- [{"deptId": $#1, "star_cost": $$21}]
+ -- ASSIGN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ group by ([$#1 := $$25]) decor ([]) {
+ aggregate [$$21] <- [agg-sql-sum($$24)]
+ -- AGGREGATE |LOCAL|
+ nested tuple source
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- SORT_GROUP_BY[$$25] |PARTITIONED|
+ exchange
+ -- HASH_PARTITION_EXCHANGE [$$25] |PARTITIONED|
+ group by ([$$25 := $$19]) decor ([]) {
+ aggregate [$$24] <- [agg-local-sql-sum($$16)]
+ -- AGGREGATE |LOCAL|
+ nested tuple source
+ -- NESTED_TUPLE_SOURCE |LOCAL|
+ }
+ -- SORT_GROUP_BY[$$19] |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ project ([$$16, $$19])
+ -- STREAM_PROJECT |PARTITIONED|
+ assign [$$19, $$16] <- [substring($$e.getField(1), 1), $$e.getField(2)]
+ -- ASSIGN |PARTITIONED|
+ project ([$$e])
+ -- STREAM_PROJECT |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ data-scan []<-[$$20, $$e] <- gby.Employee
+ -- DATASOURCE_SCAN |PARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-01/explain_object_constructor-01.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-01/explain_object_constructor-01.1.adm
new file mode 100644
index 0000000..9a536a6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-01/explain_object_constructor-01.1.adm
@@ -0,0 +1,8 @@
+distribute result [$$2]
+-- DISTRIBUTE_RESULT |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ assign [$$2] <- [{ a: "1", b: 1 }]
+ -- ASSIGN |UNPARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-02/explain_object_constructor-02.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-02/explain_object_constructor-02.1.adm
new file mode 100644
index 0000000..c637d87
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-02/explain_object_constructor-02.1.adm
@@ -0,0 +1,8 @@
+distribute result [$$2]
+-- DISTRIBUTE_RESULT |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ assign [$$2] <- [{ a: "1" }]
+ -- ASSIGN |UNPARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-03/explain_object_constructor-03.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-03/explain_object_constructor-03.1.adm
new file mode 100644
index 0000000..83a9af1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-03/explain_object_constructor-03.1.adm
@@ -0,0 +1,8 @@
+distribute result [$$2]
+-- DISTRIBUTE_RESULT |UNPARTITIONED|
+ exchange
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ assign [$$2] <- [{ }]
+ -- ASSIGN |UNPARTITIONED|
+ empty-tuple-source
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_simple/explain_simple.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_simple/explain_simple.1.adm
index d3b66a5..ad872a1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_simple/explain_simple.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_simple/explain_simple.1.adm
@@ -1,9 +1,8 @@
-distribute result [%0->$$2]
+distribute result [$$2]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- assign [$$2] <- [AInt64: {2}]
+ assign [$$2] <- [2]
-- ASSIGN |UNPARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
-
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 cf1ea5b..3931601 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -137,6 +137,31 @@
<output-dir compare="Text">explain_simple</output-dir>
</compilation-unit>
</test-case>
+ <test-case FilePath="explain">
+ <compilation-unit name="explain_object_constructor-01">
+ <output-dir compare="Text">explain_object_constructor-01</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="explain">
+ <compilation-unit name="explain_object_constructor-02">
+ <output-dir compare="Text">explain_object_constructor-02</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="explain">
+ <compilation-unit name="explain_object_constructor-03">
+ <output-dir compare="Text">explain_object_constructor-03</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="explain">
+ <compilation-unit name="explain_field_access">
+ <output-dir compare="Text">explain_field_access</output-dir>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="explain">
+ <compilation-unit name="explain_field_access_closed">
+ <output-dir compare="Text">explain_field_access_closed</output-dir>
+ </compilation-unit>
+ </test-case>
</test-group>
<test-case FilePath="flwor">
<compilation-unit name="let33">
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 702cb0a..aeed05d 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
@@ -130,9 +130,6 @@
public static final int NODE_RESOLVER_UNABLE_RESOLVE_HOST = 3032;
public static final int INPUT_RECORD_CONVERTER_DCP_MSG_TO_RECORD_CONVERTER_UNKNOWN_DCP_REQUEST = 3033;
public static final int FEED_DATAFLOW_FRAME_DISTR_REGISTER_FAILED_DATA_PROVIDER = 3034;
- public static final int FEED_MANAGEMENT_FEED_EVENTS_LISTENER_ALREADY_HAVE_INTAKE_JOB = 3035;
- public static final int FEED_MANAGEMENT_FEED_EVENTS_LISTENER_INTAKE_JOB_REGISTERED = 3036;
- public static final int FEED_MANAGEMENT_FEED_EVENTS_LISTENER_FEED_JOB_REGISTERED = 3037;
public static final int INPUT_RECORD_READER_CHAR_ARRAY_RECORD_TOO_LARGE = 3038;
public static final int LIBRARY_JOBJECT_ACCESSOR_CANNOT_PARSE_TYPE = 3039;
public static final int LIBRARY_JOBJECT_UTIL_ILLEGAL_ARGU_TYPE = 3040;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java
index d4329a3..0c3f942 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java
@@ -19,8 +19,6 @@
package org.apache.asterix.metadata.declared;
-import java.io.File;
-
public class DataSourceId {
private String dataverseName;
@@ -33,7 +31,7 @@
@Override
public String toString() {
- return dataverseName + File.pathSeparator + datasourceName;
+ return dataverseName + "." + datasourceName;
}
public String getDataverseName() {
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 97211f6..8625756 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
@@ -35,8 +35,4 @@
super(namespace, name, arity , FunctionKind.SCALAR, argumentTypes, returnType, rtc, body, language);
}
- public ExternalScalarFunctionInfo() {
- super();
- }
-
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ABinary.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ABinary.java
index d4b7ac7..4bcd4c9 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ABinary.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ABinary.java
@@ -18,9 +18,10 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -95,14 +96,10 @@
public String toString() {
StringBuilder sb = new StringBuilder();
int start = getStart();
- sb.append("ABinary: [ ");
+ sb.append("0b");
for (int i = 0; i < getLength(); i++) {
- if (i > 0) {
- sb.append(", ");
- }
sb.append(bytes[start + i]);
}
- sb.append(" ]");
return sb.toString();
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ABitArray.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ABitArray.java
deleted file mode 100644
index d3dbe42..0000000
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ABitArray.java
+++ /dev/null
@@ -1,148 +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.om.base;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-import org.apache.asterix.om.types.BuiltinType;
-import org.apache.asterix.om.types.IAType;
-
-public final class ABitArray implements IAObject {
-
- private int numberOfBits;
- private int[] intArray;
-
- public ABitArray(int nBits) {
- numberOfBits = nBits;
- intArray = new int[nBits / 32 + 1];
- }
-
- public int[] getIntArray() {
- return intArray;
- }
-
- public final boolean get(int index) {
- int r = index % 32;
- int q = index / 32;
- int p = 1 << r;
- return (intArray[q] & p) != 0;
- }
-
- public final int numberOfBits() {
- return this.numberOfBits;
- }
-
- public final void set(int index, boolean value) {
- int r = index % 32;
- int q = index / 32;
- int p = 1 << r;
- if (value) {
- intArray[q] |= p;
- } else {
- p = ~p;
- intArray[q] &= p;
- }
- }
-
- public final void setBit(int index) {
- set(index, true);
- }
-
- public IAType getType() {
- return BuiltinType.ABITARRAY;
- }
-
- public void or(ABitArray bitArray) {
- int n2 = bitArray.numberOfBits();
- int[] a2 = bitArray.getIntArray();
- int q = n2 / 32;
- for (int i = 0; i < q; i++) {
- this.intArray[i] |= a2[i];
- }
- int r = n2 % 32;
- if (r > 0) {
- int mask = 0;
- for (int i = 0; i < r; i++) {
- mask = (mask << 1) + 1;
- }
- this.intArray[q] |= a2[q] & mask;
- }
- }
-
- @Override
- public int hashCode() {
- int h = 0;
- for (int i = 0; i < intArray.length; i++) {
- h = h * 31 + intArray[i];
- }
- return h;
- }
-
- @Override
- public boolean deepEqual(IAObject obj) {
- if (!(obj instanceof ABitArray)) {
- return false;
- }
- int[] x = ((ABitArray) obj).getIntArray();
- if (intArray.length != x.length) {
- return false;
- }
- for (int k = 0; k < intArray.length; k++) {
- if (intArray[k] != x[k]) {
- return false;
- }
- }
- return true;
- }
-
- @Override
- public int hash() {
- return hashCode();
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("ABitArray: [ ");
- for (int i = 0; i < intArray.length; i++) {
- if (i > 0) {
- sb.append(", ");
- }
- sb.append(intArray[i]);
- }
- sb.append(" ]");
- return sb.toString();
- }
-
- @Override
- public ObjectNode toJSON() {
- ObjectMapper om = new ObjectMapper();
- ObjectNode json = om.createObjectNode();
-
- ArrayNode bitArray = om.createArrayNode();
- for (int i = 0; i < intArray.length; i++) {
- bitArray.add(intArray[i]);
- }
- json.set("ABitArray", bitArray);
-
- return json;
- }
-}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ABoolean.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ABoolean.java
index 8b24205..a0c572c 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ABoolean.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ABoolean.java
@@ -18,9 +18,10 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
public final class ABoolean implements IAObject {
@@ -49,7 +50,7 @@
@Override
public String toString() {
- return "ABoolean: {" + bVal + "}";
+ return Boolean.toString(bVal).toUpperCase();
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ACircle.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ACircle.java
index 43f9109..9c2369d 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ACircle.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ACircle.java
@@ -18,12 +18,12 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class ACircle implements IAObject {
protected APoint center;
@@ -71,7 +71,7 @@
@Override
public String toString() {
- return "ACircle: { center: " + center + ", radius: " + radius + "}";
+ return "circle: { \"center\": " + center + ", \"radius\":" + radius + "}";
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ACollectionCursor.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ACollectionCursor.java
index e57d534..c65cb78 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ACollectionCursor.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ACollectionCursor.java
@@ -27,17 +27,6 @@
private int size;
private IAObject object = null;
- public ACollectionCursor() {
- }
-
- public ACollectionCursor(AUnorderedList bag) {
- reset(bag);
- }
-
- public ACollectionCursor(AOrderedList list) {
- reset(list);
- }
-
@Override
public boolean next() {
pos++;
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADate.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADate.java
index 4bd6711..3d7639e 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADate.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADate.java
@@ -20,13 +20,13 @@
import java.io.IOException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
/**
* ADate type represents dates in a gregorian calendar system.
*/
@@ -73,7 +73,7 @@
@Override
public String toString() {
StringBuilder sbder = new StringBuilder();
- sbder.append("ADate: { ");
+ sbder.append("\"date\": { ");
try {
GregorianCalendarSystem.getInstance().getExtendStringRepUntilField(chrononTimeInDay * CHRONON_OF_DAY, 0,
sbder, GregorianCalendarSystem.Fields.YEAR, GregorianCalendarSystem.Fields.DAY, false);
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADateTime.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADateTime.java
index ab228a2..cf6fff0 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADateTime.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADateTime.java
@@ -20,10 +20,11 @@
import java.io.IOException;
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
/**
@@ -106,7 +107,7 @@
@Override
public String toString() {
StringBuilder sbder = new StringBuilder();
- sbder.append("ADateTime: { ");
+ sbder.append("datetime: { ");
try {
GregorianCalendarSystem.getInstance().getExtendStringRepUntilField(chrononTime, 0, sbder,
GregorianCalendarSystem.Fields.YEAR, GregorianCalendarSystem.Fields.MILLISECOND, true);
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADouble.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADouble.java
index 7cb4151..4c307f4 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADouble.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADouble.java
@@ -18,13 +18,12 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class ADouble implements IAObject {
protected double value;
@@ -45,7 +44,7 @@
@Override
public String toString() {
- return "ADouble: {" + value + "}";
+ return Double.toString(value);
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADuration.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADuration.java
index 3753930..618f130 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADuration.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ADuration.java
@@ -18,14 +18,13 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
/**
* ADuration type represents time duration (unanchored time length) values.
* <p/>
@@ -103,7 +102,7 @@
@Override
public String toString() {
StringBuilder sbder = new StringBuilder();
- sbder.append("ADuration: {");
+ sbder.append("duration: {");
GregorianCalendarSystem.getInstance().getDurationExtendStringRepWithTimezoneUntilField(chrononInMillisecond,
chrononInMonth, sbder);
sbder.append(" }");
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AFloat.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AFloat.java
index 3794747..4ad1b50 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AFloat.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AFloat.java
@@ -18,13 +18,12 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class AFloat implements IAObject {
protected float value;
@@ -68,7 +67,7 @@
@Override
public String toString() {
- return "AFloat: {" + value + "}";
+ return Float.toString(value);
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt16.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt16.java
index 392aae7..65c53ac 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt16.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt16.java
@@ -18,13 +18,12 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class AInt16 implements IAObject {
protected short value;
@@ -58,7 +57,7 @@
@Override
public String toString() {
- return "AInt16: {" + value + "}";
+ return Short.toString(value);
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt32.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt32.java
index 495a604..e0ecbb0 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt32.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt32.java
@@ -18,13 +18,12 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class AInt32 implements IAObject {
protected int value;
@@ -49,7 +48,7 @@
@Override
public String toString() {
- return "AInt32: {" + value + "}";
+ return Integer.toString(value);
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt64.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt64.java
index 3cf40d6..e0369a2 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt64.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt64.java
@@ -18,13 +18,12 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class AInt64 implements IAObject {
protected long value;
@@ -57,7 +56,7 @@
@Override
public String toString() {
- return "AInt64: {" + value + "}";
+ return Long.toString(value);
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt8.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt8.java
index a435833..c18e878 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt8.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt8.java
@@ -18,13 +18,12 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class AInt8 implements IAObject {
protected byte value;
@@ -57,7 +56,7 @@
@Override
public String toString() {
- return "AInt8: {" + value + "}";
+ return Byte.toString(value);
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInterval.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInterval.java
index b5d40c0..2d54786 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInterval.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInterval.java
@@ -20,13 +20,13 @@
import java.io.IOException;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class AInterval implements IAObject {
protected long intervalStart;
@@ -94,33 +94,33 @@
@Override
public String toString() {
StringBuilder sbder = new StringBuilder();
- sbder.append("AInterval: { ");
+ sbder.append("interval: { ");
try {
if (typetag == ATypeTag.DATE.serialize()) {
- sbder.append("ADate: { ");
+ sbder.append("date: { ");
GregorianCalendarSystem.getInstance().getExtendStringRepUntilField(
intervalStart * ADate.CHRONON_OF_DAY, 0, sbder, GregorianCalendarSystem.Fields.YEAR,
GregorianCalendarSystem.Fields.DAY, false);
- sbder.append(" }, ADate: {");
+ sbder.append(" }, date: {");
GregorianCalendarSystem.getInstance().getExtendStringRepUntilField(intervalEnd * ADate.CHRONON_OF_DAY,
0, sbder, GregorianCalendarSystem.Fields.YEAR, GregorianCalendarSystem.Fields.DAY, false);
sbder.append(" }");
} else if (typetag == ATypeTag.TIME.serialize()) {
- sbder.append("ATime: { ");
+ sbder.append("time: { ");
GregorianCalendarSystem.getInstance().getExtendStringRepUntilField(intervalStart, 0, sbder,
GregorianCalendarSystem.Fields.HOUR, GregorianCalendarSystem.Fields.MILLISECOND, true);
- sbder.append(" }, ATime: { ");
+ sbder.append(" }, time: { ");
GregorianCalendarSystem.getInstance().getExtendStringRepUntilField(intervalEnd, 0, sbder,
GregorianCalendarSystem.Fields.HOUR, GregorianCalendarSystem.Fields.MILLISECOND, true);
sbder.append(" }");
} else if (typetag == ATypeTag.DATETIME.serialize()) {
- sbder.append("ADateTime: { ");
+ sbder.append("datetime: { ");
GregorianCalendarSystem.getInstance().getExtendStringRepUntilField(intervalStart, 0, sbder,
GregorianCalendarSystem.Fields.YEAR, GregorianCalendarSystem.Fields.MILLISECOND, true);
- sbder.append(" }, ADateTime: { ");
+ sbder.append(" }, datetime: { ");
GregorianCalendarSystem.getInstance().getExtendStringRepUntilField(intervalEnd, 0, sbder,
GregorianCalendarSystem.Fields.YEAR, GregorianCalendarSystem.Fields.MILLISECOND, true);
sbder.append(" }");
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ALine.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ALine.java
index e1cf6ff..67ae2d5 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ALine.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ALine.java
@@ -18,12 +18,12 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class ALine implements IAObject {
protected APoint p1;
@@ -64,7 +64,7 @@
@Override
public String toString() {
- return "ALine: { p1: " + p1 + ", p2: " + p2 + "}";
+ return "line: { p1: " + p1 + ", p2: " + p2 + "}";
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AOrderedList.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AOrderedList.java
index 9a5a147..3c1a165 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AOrderedList.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AOrderedList.java
@@ -21,10 +21,11 @@
import java.util.ArrayList;
import java.util.List;
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.asterix.om.types.AOrderedListType;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -104,7 +105,7 @@
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
- sb.append("AOrderedList: [ ");
+ sb.append("array: [ ");
boolean first = true;
for (IAObject v : values) {
if (first) {
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/APoint.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/APoint.java
index 543edfb..66e96f0 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/APoint.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/APoint.java
@@ -18,12 +18,12 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class APoint implements IAObject {
protected double x;
@@ -64,7 +64,7 @@
@Override
public String toString() {
- return "APoint: { x: " + x + ", y: " + y + " }";
+ return "point: { x: " + x + ", y: " + y + " }";
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/APoint3D.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/APoint3D.java
index 94876b5..9a4a06e 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/APoint3D.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/APoint3D.java
@@ -18,12 +18,12 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class APoint3D implements IAObject {
protected double x;
@@ -70,7 +70,7 @@
@Override
public String toString() {
- return "APoint3D: { x: " + x + ", y: " + y + ", z: " + z + " }";
+ return "point3d: { x: " + x + ", y: " + y + ", z: " + z + " }";
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/APolygon.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/APolygon.java
index 8c31c76..eb4f1b4 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/APolygon.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/APolygon.java
@@ -18,13 +18,13 @@
*/
package org.apache.asterix.om.base;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.asterix.om.types.BuiltinType;
-import org.apache.asterix.om.types.IAType;
-
public class APolygon implements IAObject {
protected APoint[] points;
@@ -76,7 +76,7 @@
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
- sb.append("APolygon: [ ");
+ sb.append("polygon: [ ");
for (int i = 0; i < points.length; i++) {
if (i > 0) {
sb.append(", ");
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ARecord.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ARecord.java
index 352f2eb..aed969c 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ARecord.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ARecord.java
@@ -18,11 +18,11 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.utils.RecordUtil;
-import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class ARecord implements IAObject {
@@ -83,7 +83,7 @@
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
- sb.append("ARecord: { ");
+ sb.append("{ ");
if (fields != null) {
for (int i = 0; i < fields.length; i++) {
if (i > 0) {
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ARectangle.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ARectangle.java
index c99bc9b..d6da9e5 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ARectangle.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ARectangle.java
@@ -18,12 +18,12 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class ARectangle implements IAObject {
protected APoint p1;
@@ -64,7 +64,7 @@
@Override
public String toString() {
- return "ARectangle: { p1: " + p1 + ", p2: " + p2 + "}";
+ return "rectangle: { p1: " + p1 + ", p2: " + p2 + "}";
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AString.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AString.java
index 4efd63a..aefe5f7 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AString.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AString.java
@@ -20,10 +20,10 @@
import java.io.Serializable;
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class AString implements IAObject, Serializable {
@@ -45,7 +45,7 @@
@Override
public String toString() {
- return "AString: {" + value + "}";
+ return "\"" + value + "\"";
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ATime.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ATime.java
index 38d22bc..a14d386 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ATime.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ATime.java
@@ -20,13 +20,13 @@
import java.io.IOException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
public class ATime implements IAObject {
/**
@@ -88,7 +88,7 @@
@Override
public String toString() {
StringBuilder sbder = new StringBuilder();
- sbder.append("ATime: { ");
+ sbder.append("time: { ");
try {
GregorianCalendarSystem.getInstance().getExtendStringRepUntilField(chrononTime, 0, sbder,
GregorianCalendarSystem.Fields.HOUR, GregorianCalendarSystem.Fields.MILLISECOND, true);
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AUUID.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AUUID.java
index c0d27ce..0ed9d3f 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AUUID.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AUUID.java
@@ -24,10 +24,11 @@
import java.io.IOException;
import java.util.Arrays;
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class AUUID implements IAObject {
@@ -84,13 +85,8 @@
@Override
public String toString() {
StringBuilder buf = new StringBuilder(UUID_CHARS + 9);
- buf.append("AUUID: {");
- return appendLiteralOnly(buf).append('}').toString();
- }
-
- public String toSimpleString() {
- StringBuilder buf = new StringBuilder(UUID_CHARS + 9);
- return appendLiteralOnly(buf).toString();
+ buf.append("uuid: { ");
+ return appendLiteralOnly(buf).append(" }").toString();
}
public StringBuilder appendLiteralOnly(StringBuilder buf) {
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AUnorderedList.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AUnorderedList.java
index cac0840..894421c 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AUnorderedList.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AUnorderedList.java
@@ -21,9 +21,10 @@
import java.util.ArrayList;
import java.util.List;
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.asterix.om.types.AUnorderedListType;
import org.apache.asterix.om.types.IAType;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -33,7 +34,7 @@
protected AUnorderedListType type;
public AUnorderedList(AUnorderedListType type) {
- values = new ArrayList<IAObject>();
+ values = new ArrayList<>();
this.type = type;
}
@@ -74,14 +75,6 @@
return values.size();
}
- public IAObject getOneObject() {
- if (values == null || values.isEmpty()) {
- return null;
- } else {
- return values.get(0);
- }
- }
-
@Override
public boolean deepEqual(IAObject obj) {
return equals(obj);
@@ -95,7 +88,7 @@
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
- sb.append("AUnorderedList: [ ");
+ sb.append("multiset: {{ ");
boolean first = true;
for (IAObject v : values) {
if (first) {
@@ -105,7 +98,7 @@
}
sb.append(v.toString());
}
- sb.append(" ]");
+ sb.append(" }}");
return sb.toString();
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AYearMonthDuration.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AYearMonthDuration.java
index 55982e1..8321848 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AYearMonthDuration.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AYearMonthDuration.java
@@ -18,13 +18,13 @@
*/
package org.apache.asterix.om.base;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
+import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
/**
* AYearMonthDuration represents the duration in the unit of months.
* <p/>
@@ -45,9 +45,15 @@
return chrononInMonth;
}
- /* (non-Javadoc)
- * @see org.apache.hyracks.api.dataflow.value.JSONSerializable#toJSON()
- */
+ @Override
+ public String toString() {
+ StringBuilder sbder = new StringBuilder();
+ sbder.append("year_month_duration: {");
+ GregorianCalendarSystem.getInstance().getDurationMonth(chrononInMonth);
+ sbder.append(" }");
+ return sbder.toString();
+ }
+
@Override
public ObjectNode toJSON() {
ObjectMapper om = new ObjectMapper();
@@ -60,25 +66,16 @@
return json;
}
- /* (non-Javadoc)
- * @see org.apache.asterix.om.base.IAObject#getType()
- */
@Override
public IAType getType() {
return BuiltinType.AYEARMONTHDURATION;
}
- /* (non-Javadoc)
- * @see org.apache.asterix.om.base.IAObject#deepEqual(org.apache.asterix.om.base.IAObject)
- */
@Override
public boolean deepEqual(IAObject obj) {
return equals(obj);
}
- /* (non-Javadoc)
- * @see org.apache.asterix.om.base.IAObject#hash()
- */
@Override
public int hash() {
return hashCode();
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ShortWithoutTypeInfo.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ShortWithoutTypeInfo.java
deleted file mode 100644
index 4ed7966..0000000
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/ShortWithoutTypeInfo.java
+++ /dev/null
@@ -1,95 +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.om.base;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-import org.apache.asterix.om.types.BuiltinType;
-import org.apache.asterix.om.types.IAType;
-
-public class ShortWithoutTypeInfo implements IAObject {
-
- protected short value;
-
- public ShortWithoutTypeInfo(short value) {
- super();
- this.value = value;
- }
-
- public ShortWithoutTypeInfo(byte[] bytes, int offset, int length) {
- value = valueFromBytes(bytes, offset, length);
- }
-
- public Short getShortValue() {
- return value;
- }
-
- @Override
- public IAType getType() {
- return BuiltinType.SHORTWITHOUTTYPEINFO;
- }
-
- @Override
- public String toString() {
- return "ShortWithoutTypeInfo: {" + value + "}";
- }
-
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof ShortWithoutTypeInfo)) {
- return false;
- } else {
- return value == (((ShortWithoutTypeInfo) obj).getShortValue());
- }
- }
-
- @Override
- public int hashCode() {
- return value;
- }
-
- private static short valueFromBytes(byte[] bytes, int offset, int length) {
- return (short) (((bytes[offset] & 0xff) << 8) + ((bytes[offset + 1] & 0xff)));
- }
-
- public byte[] toBytes() {
- return new byte[] { (byte) ((value >>> 8) & 0xff), (byte) ((value >>> 0) & 0xff)};
- }
-
- @Override
- public boolean deepEqual(IAObject obj) {
- return equals(obj);
- }
-
- @Override
- public int hash() {
- return hashCode();
- }
-
- @Override
- public ObjectNode toJSON() {
- ObjectMapper om = new ObjectMapper();
- ObjectNode json = om.createObjectNode();
-
- json.put("ShortWithoutTypeInfo", value);
-
- return json;
- }
-}
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 9f3b529..0042b26 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
@@ -35,17 +35,6 @@
private final FunctionKind kind;
private final IAType returnType;
- public ExternalFunctionInfo() {
- super();
- rtc = null;
- argumentTypes = null;
- body = null;
- language = null;
- kind = null;
- returnType = null;
-
- }
-
public ExternalFunctionInfo(String namespace, String name, int arity, FunctionKind kind,
List<IAType> argumentTypes, IAType returnType, IResultTypeComputer rtc, String body, String language) {
super(namespace, name, arity, true);
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/FunctionDisplayUtil.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/FunctionDisplayUtil.java
new file mode 100644
index 0000000..a1b81f0
--- /dev/null
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/FunctionDisplayUtil.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.om.functions;
+
+import java.util.List;
+
+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;
+
+class FunctionDisplayUtil {
+
+ @FunctionalInterface
+ interface DefaultDisplayFunction {
+ String display(List<Mutable<ILogicalExpression>> args);
+ }
+
+ private FunctionDisplayUtil() {
+ // Does nothing.
+ }
+
+ /**
+ * Displays a function with its parameters in a user-friendly way.
+ *
+ * @param functionInfo,
+ * the function info.
+ * @param args
+ * , the arguments in the function call expression.
+ * @param defaultDisplayFunction,
+ * the default display function for regular functions.
+ * @return the display string of the function call expression.
+ */
+ public static String display(IFunctionInfo functionInfo, List<Mutable<ILogicalExpression>> args,
+ DefaultDisplayFunction defaultDisplayFunction) {
+ FunctionIdentifier funcId = functionInfo.getFunctionIdentifier();
+ if (funcId.equals(BuiltinFunctions.FIELD_ACCESS_BY_INDEX)) {
+ return displayFieldAccess(args, true);
+ } else if (funcId.equals(BuiltinFunctions.FIELD_ACCESS_BY_NAME)
+ || funcId.equals(BuiltinFunctions.FIELD_ACCESS_NESTED)) {
+ return displayFieldAccess(args, false);
+ } else if (funcId.equals(BuiltinFunctions.OPEN_RECORD_CONSTRUCTOR)
+ || funcId.equals(BuiltinFunctions.CLOSED_RECORD_CONSTRUCTOR)) {
+ return displayRecordConstructor(args);
+ }
+ return defaultDisplayFunction.display(args);
+ }
+
+ // Displays field-access-by-index in an easy-to-understand way.
+ private static String displayFieldAccess(List<Mutable<ILogicalExpression>> args, boolean intArg) {
+ StringBuilder sb = new StringBuilder();
+ boolean first = true;
+ boolean second = true;
+ for (Mutable<ILogicalExpression> ref : args) {
+ if (first) {
+ first = false;
+ } else if (second) {
+ sb.append(".getField(" + (intArg ? "" : "\""));
+ second = false;
+ } else {
+ sb.append(".");
+ }
+ sb.append(ref.getValue().toString().replaceAll("^\"|\"$", ""));
+ }
+ sb.append((intArg ? "" : "\"") + ")");
+ return sb.toString();
+ }
+
+ // Displays record-constructor in an easy-to-understand way.
+ private static String displayRecordConstructor(List<Mutable<ILogicalExpression>> args) {
+ StringBuilder sb = new StringBuilder();
+ boolean first = true;
+ boolean fieldName = true;
+ sb.append("{");
+ for (Mutable<ILogicalExpression> ref : args) {
+ if (first) {
+ first = false;
+ } else if (fieldName) {
+ sb.append(", ");
+ }
+ sb.append(ref.getValue());
+ if (fieldName) {
+ sb.append(": ");
+ fieldName = false;
+ } else {
+ fieldName = true;
+ }
+ }
+ sb.append("}");
+ return sb.toString();
+ }
+
+}
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 7a590a7..994b2a9 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
@@ -18,43 +18,48 @@
*/
package org.apache.asterix.om.functions;
-import org.apache.asterix.common.functions.FunctionSignature;
-import org.apache.hyracks.algebricks.core.algebra.functions.AbstractFunctionInfo;
+import java.util.List;
+
+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 extends AbstractFunctionInfo {
-
- private static final long serialVersionUID = 1L;
+public class FunctionInfo implements IFunctionInfo {
private final FunctionIdentifier functionIdentifier;
+ private final boolean isFunctional;
public FunctionInfo(String namespace, String name, int arity, boolean isFunctional) {
- super(isFunctional);
- this.functionIdentifier = new FunctionIdentifier(namespace, name, arity);
- }
-
- public FunctionInfo() {
- super(true);
- functionIdentifier = null;
+ this(new FunctionIdentifier(namespace, name, arity), isFunctional);
}
public FunctionInfo(FunctionIdentifier functionIdentifier, boolean isFunctional) {
- super(isFunctional);
+ this.isFunctional = isFunctional;
this.functionIdentifier = functionIdentifier;
}
- public FunctionInfo(FunctionSignature functionSignature, boolean isFunctional) {
- super(isFunctional);
- this.functionIdentifier = new FunctionIdentifier(functionSignature.getNamespace(), functionSignature.getName(),
- functionSignature.getArity());
- }
-
@Override
public FunctionIdentifier getFunctionIdentifier() {
return functionIdentifier;
}
@Override
+ public boolean isFunctional() {
+ return isFunctional;
+ }
+
+ /**
+ * @param args,
+ * the arguments.
+ * @return a display string of the FunctionInfo.
+ */
+ @Override
+ public String display(List<Mutable<ILogicalExpression>> args) {
+ return FunctionDisplayUtil.display(this, args, input -> IFunctionInfo.super.display(input));
+ }
+
+ @Override
public int hashCode() {
return toString().hashCode();
}
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 070fa97..d2d6339 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
@@ -18,7 +18,6 @@
*/
package org.apache.asterix.om.functions;
-import java.io.Serializable;
import java.util.List;
import org.apache.asterix.om.typecomputer.base.IResultTypeComputer;
@@ -26,7 +25,7 @@
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression.FunctionKind;
import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-public interface IExternalFunctionInfo extends IFunctionInfo, Serializable {
+public interface IExternalFunctionInfo extends IFunctionInfo {
public IResultTypeComputer getResultTypeComputer();
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 328697d..a5b2284 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
@@ -67,8 +67,6 @@
public List<FunctionalDependency> getFDList(ILogicalOperator op);
- public void clearAllFDAndEquivalenceClasses();
-
public void putLogicalPropertiesVector(ILogicalOperator op, ILogicalPropertiesVector v);
public ILogicalPropertiesVector getLogicalPropertiesVector(ILogicalOperator op);
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IVariableContext.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IVariableContext.java
index e308a8d..71d4533 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IVariableContext.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IVariableContext.java
@@ -20,10 +20,11 @@
public interface IVariableContext {
- public int getVarCounter();
+ int getVarCounter();
- public void setVarCounter(int varCounter);
+ void setVarCounter(int varCounter);
- public LogicalVariable newVar();
+ LogicalVariable newVar();
+ LogicalVariable newVar(String displayName);
}
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalVariable.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalVariable.java
index fc30ce2..2023304 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalVariable.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalVariable.java
@@ -25,9 +25,16 @@
*/
public final class LogicalVariable {
private final int id;
+ private final String displayName;
public LogicalVariable(int id) {
this.id = id;
+ this.displayName = "$$" + id;
+ }
+
+ public LogicalVariable(int id, String displayName) {
+ this.id = id;
+ this.displayName = "$" + displayName;
}
public int getId() {
@@ -36,7 +43,7 @@
@Override
public String toString() {
- return "$$" + id;
+ return displayName;
}
@Override
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 b35f692..8bc39b8 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
@@ -87,7 +87,7 @@
protected List<Mutable<ILogicalExpression>> cloneArguments() {
List<Mutable<ILogicalExpression>> clonedArgs = new ArrayList<Mutable<ILogicalExpression>>(arguments.size());
for (Mutable<ILogicalExpression> e : arguments) {
- ILogicalExpression e2 = ((AbstractLogicalExpression) e.getValue()).cloneExpression();
+ ILogicalExpression e2 = e.getValue().cloneExpression();
clonedArgs.add(new MutableObject<ILogicalExpression>(e2));
}
return clonedArgs;
@@ -111,20 +111,7 @@
@Override
public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("function-call: " + finfo.getFunctionIdentifier() + ", Args:[");
- // + arguments;
- boolean first = true;
- for (Mutable<ILogicalExpression> ref : arguments) {
- if (first) {
- first = false;
- } else {
- sb.append(", ");
- }
- sb.append(ref.getValue());
- }
- sb.append("]");
- return sb.toString();
+ return finfo.display(arguments);
}
@Override
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AggregateFunctionCallExpression.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AggregateFunctionCallExpression.java
index f09b4c2..8fca47c 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AggregateFunctionCallExpression.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AggregateFunctionCallExpression.java
@@ -52,10 +52,6 @@
return twoStep;
}
- public void setTwoStep(boolean twoStep) {
- this.twoStep = twoStep;
- }
-
@Override
public AggregateFunctionCallExpression cloneExpression() {
cloneAnnotations();
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/StatefulFunctionCallExpression.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/StatefulFunctionCallExpression.java
index fe91ed3..661c389 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/StatefulFunctionCallExpression.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/StatefulFunctionCallExpression.java
@@ -24,7 +24,6 @@
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
import org.apache.hyracks.algebricks.core.algebra.properties.IPropertiesComputer;
import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionVisitor;
@@ -56,11 +55,6 @@
return new StatefulFunctionCallExpression(finfo, propertiesComputer, clonedArgs);
}
- // can be null
- public IPartitioningProperty getRequiredPartitioningProperty() {
- return propertiesComputer.computePartitioningProperty(this);
- }
-
@Override
public <R, T> R accept(ILogicalExpressionVisitor<R, T> visitor, T arg) throws AlgebricksException {
return visitor.visitStatefulFunctionCallExpression(this, arg);
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java
index c02eec3..2ccf0c4 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java
@@ -41,14 +41,6 @@
this(0, variable);
}
- public int getTupleRef() {
- return tupleRef;
- }
-
- public void setTupleRef(int tupleRef) {
- this.tupleRef = tupleRef;
- }
-
public LogicalVariable getVariableReference() {
return variable;
}
@@ -64,7 +56,7 @@
@Override
public String toString() {
- return "%" + tupleRef + "->" + variable.toString();
+ return variable.toString();
}
@Override
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/IFunctionInfo.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/IFunctionInfo.java
index a4d56c1..6e1ccef 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/IFunctionInfo.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/IFunctionInfo.java
@@ -18,8 +18,44 @@
*/
package org.apache.hyracks.algebricks.core.algebra.functions;
-public interface IFunctionInfo {
+import java.io.Serializable;
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+
+public interface IFunctionInfo extends Serializable {
+ /**
+ * @return the FunctionIdentifier.
+ */
FunctionIdentifier getFunctionIdentifier();
- public boolean isFunctional();
+ /**
+ * @return true if the function is a stateful function; false otherwise.
+ */
+ default boolean isFunctional() {
+ // A function is functional by default.
+ return true;
+ }
+
+ /**
+ * @param args,
+ * the arguments.
+ * @return a display string of the FunctionInfo.
+ */
+ default String display(List<Mutable<ILogicalExpression>> args) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getFunctionIdentifier().getName() + "(");
+ boolean first = true;
+ for (Mutable<ILogicalExpression> ref : args) {
+ if (first) {
+ first = false;
+ } else {
+ sb.append(", ");
+ }
+ sb.append(ref.getValue());
+ }
+ sb.append(")");
+ return sb.toString();
+ }
}
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 a1b3556..58e95bb 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
@@ -131,6 +131,12 @@
}
@Override
+ public LogicalVariable newVar(String displayName) {
+ varCounter++;
+ return new LogicalVariable(varCounter, displayName);
+ }
+
+ @Override
public IMetadataProvider getMetadataProvider() {
return metadataProvider;
}
@@ -233,12 +239,6 @@
}
@Override
- public void clearAllFDAndEquivalenceClasses() {
- eqClassGlobalMap.clear();
- fdGlobalMap.clear();
- }
-
- @Override
public ILogicalPropertiesVector getLogicalPropertiesVector(ILogicalOperator op) {
return logicalProps.get(op);
}
diff --git a/hyracks-fullstack/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFunction.java b/hyracks-fullstack/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFunction.java
index 55e99e8..06d9b25 100644
--- a/hyracks-fullstack/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFunction.java
+++ b/hyracks-fullstack/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFunction.java
@@ -18,16 +18,13 @@
*/
package org.apache.hyracks.algebricks.examples.piglet.metadata;
-import org.apache.hyracks.algebricks.core.algebra.functions.AbstractFunctionInfo;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-public class PigletFunction extends AbstractFunctionInfo {
- private static final long serialVersionUID = 1L;
-
+public class PigletFunction implements IFunctionInfo {
private final FunctionIdentifier fid;
public PigletFunction(FunctionIdentifier fid) {
- super(true);
this.fid = fid;
}