diff options
Diffstat (limited to 'exec/java-exec/src')
240 files changed, 1959 insertions, 1856 deletions
diff --git a/exec/java-exec/src/main/codegen/data/Parser.tdd b/exec/java-exec/src/main/codegen/data/Parser.tdd index 5485079f1..358b75e78 100644 --- a/exec/java-exec/src/main/codegen/data/Parser.tdd +++ b/exec/java-exec/src/main/codegen/data/Parser.tdd @@ -22,7 +22,7 @@ # List of import statements. imports: [ "org.apache.drill.exec.planner.sql.parser.*", - "org.eigenbase.util.*", + "org.apache.calcite.util.*", "java.util.*" ] diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/dotdrill/View.java b/exec/java-exec/src/main/java/org/apache/drill/exec/dotdrill/View.java index c5c62d857..97be73d3c 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/dotdrill/View.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/dotdrill/View.java @@ -19,17 +19,17 @@ package org.apache.drill.exec.dotdrill; import java.util.List; +import org.apache.calcite.avatica.util.TimeUnit; +import org.apache.calcite.sql.SqlIntervalQualifier; +import org.apache.calcite.sql.parser.SqlParserPos; +import org.apache.calcite.sql.type.SqlTypeFamily; import org.apache.drill.exec.planner.StarColumnHelper; import org.apache.drill.exec.planner.types.RelDataTypeDrillImpl; import org.apache.drill.exec.planner.types.RelDataTypeHolder; - -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.sql.SqlIntervalQualifier; -import org.eigenbase.sql.parser.SqlParserPos; -import org.eigenbase.sql.type.SqlTypeFamily; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.sql.type.SqlTypeName; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -67,8 +67,8 @@ public class View { @JsonProperty("type") SqlTypeName type, @JsonProperty("precision") Integer precision, @JsonProperty("scale") Integer scale, - @JsonProperty("startUnit") SqlIntervalQualifier.TimeUnit startUnit, - @JsonProperty("endUnit") SqlIntervalQualifier.TimeUnit endUnit, + @JsonProperty("startUnit") TimeUnit startUnit, + @JsonProperty("endUnit") TimeUnit endUnit, @JsonProperty("fractionalSecondPrecision") Integer fractionalSecondPrecision, @JsonProperty("isNullable") Boolean isNullable) { this.name = name; @@ -108,7 +108,7 @@ public class View { break; case INTERVAL_YEAR_MONTH: case INTERVAL_DAY_TIME: - p = dataType.getIntervalQualifier().getStartPrecision(); + p = dataType.getIntervalQualifier().getStartPrecisionPreservingDefault(); default: break; } @@ -163,7 +163,7 @@ public class View { * Gets the time range start unit of the type qualifier of the interval data * type descriptor of this field (<i>iff</i> interval type). */ - public SqlIntervalQualifier.TimeUnit getStartUnit() { + public TimeUnit getStartUnit() { return null == intervalQualifier ? null : intervalQualifier.getStartUnit(); } @@ -171,7 +171,7 @@ public class View { * Gets the time range end unit of the type qualifier of the interval data * type descriptor of this field (<i>iff</i> interval type). */ - public SqlIntervalQualifier.TimeUnit getEndUnit() { + public TimeUnit getEndUnit() { return null == intervalQualifier ? null : intervalQualifier.getEndUnit(); } @@ -182,7 +182,7 @@ public class View { * (<i>iff</i> interval type). */ public Integer getFractionalSecondPrecision() { - return null == intervalQualifier ? null : intervalQualifier.getFractionalSecondPrecision(); + return null == intervalQualifier ? null : intervalQualifier.getFractionalSecondPrecisionPreservingDefault(); } /** diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/DrillFunctionRegistry.java b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/DrillFunctionRegistry.java index 8a5af5675..398295e48 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/DrillFunctionRegistry.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/DrillFunctionRegistry.java @@ -32,7 +32,7 @@ import org.apache.drill.exec.planner.logical.DrillConstExecutor; import org.apache.drill.exec.planner.sql.DrillOperatorTable; import org.apache.drill.exec.planner.sql.DrillSqlAggOperator; import org.apache.drill.exec.planner.sql.DrillSqlOperator; -import org.eigenbase.sql.SqlOperator; +import org.apache.calcite.sql.SqlOperator; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Sets; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionGenerationHelper.java b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionGenerationHelper.java index 19cd1d851..bf1e252b6 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionGenerationHelper.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionGenerationHelper.java @@ -29,7 +29,7 @@ import org.apache.drill.common.types.TypeProtos.MinorType; import org.apache.drill.common.types.Types; import org.apache.drill.exec.expr.ClassGenerator.HoldingContainer; import org.apache.drill.exec.expr.HoldingContainerExpression; -import org.eigenbase.rel.RelFieldCollation.NullDirection; +import org.apache.calcite.rel.RelFieldCollation.NullDirection; public class FunctionGenerationHelper { public static final String COMPARE_TO_NULLS_HIGH = "compare_to_nulls_high"; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentContext.java b/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentContext.java index c566a10b6..e6d5acd97 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentContext.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentContext.java @@ -23,7 +23,8 @@ import java.io.IOException; import java.util.List; import java.util.Map; -import net.hydromatic.optiq.SchemaPlus; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.jdbc.SimpleCalciteSchema; import org.apache.drill.common.config.DrillConfig; import org.apache.drill.common.exceptions.UserException; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/ops/QueryContext.java b/exec/java-exec/src/main/java/org/apache/drill/exec/ops/QueryContext.java index cc0265828..bc7277919 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/ops/QueryContext.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/ops/QueryContext.java @@ -21,8 +21,8 @@ import java.io.IOException; import java.util.Collection; import io.netty.buffer.DrillBuf; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.jdbc.SimpleOptiqSchema; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.jdbc.SimpleCalciteSchema; import org.apache.drill.common.config.DrillConfig; import org.apache.drill.exec.ExecConstants; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/opt/BasicOptimizer.java b/exec/java-exec/src/main/java/org/apache/drill/exec/opt/BasicOptimizer.java index 9e60f21d6..6e70506d2 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/opt/BasicOptimizer.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/opt/BasicOptimizer.java @@ -56,8 +56,9 @@ import org.apache.drill.exec.physical.config.WindowPOP; import org.apache.drill.exec.rpc.user.UserServer.UserClientConnection; import org.apache.drill.exec.server.options.OptionManager; import org.apache.drill.exec.store.StoragePlugin; -import org.eigenbase.rel.RelFieldCollation.Direction; -import org.eigenbase.rel.RelFieldCollation.NullDirection; +import org.apache.drill.exec.work.foreman.ForemanException; +import org.apache.calcite.rel.RelFieldCollation.Direction; +import org.apache.calcite.rel.RelFieldCollation.NullDirection; import java.io.IOException; import java.util.ArrayList; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/HashJoinPOP.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/HashJoinPOP.java index f9cae48e8..80613f5ec 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/HashJoinPOP.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/HashJoinPOP.java @@ -26,7 +26,7 @@ import org.apache.drill.exec.physical.base.AbstractBase; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.base.PhysicalVisitor; import org.apache.drill.exec.proto.UserBitShared.CoreOperatorType; -import org.eigenbase.rel.JoinRelType; +import org.apache.calcite.rel.core.JoinRelType; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/MergeJoinPOP.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/MergeJoinPOP.java index 19f9b0805..47505abb9 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/MergeJoinPOP.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/MergeJoinPOP.java @@ -25,7 +25,7 @@ import org.apache.drill.exec.physical.base.AbstractBase; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.base.PhysicalVisitor; import org.apache.drill.exec.proto.UserBitShared.CoreOperatorType; -import org.eigenbase.rel.JoinRelType; +import org.apache.calcite.rel.core.JoinRelType; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/NestedLoopJoinPOP.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/NestedLoopJoinPOP.java index 8fcade614..fd584ea49 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/NestedLoopJoinPOP.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/NestedLoopJoinPOP.java @@ -26,7 +26,7 @@ import org.apache.drill.exec.physical.base.AbstractBase; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.base.PhysicalVisitor; import org.apache.drill.exec.proto.UserBitShared.CoreOperatorType; -import org.eigenbase.rel.JoinRelType; +import org.apache.calcite.rel.core.JoinRelType; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/TopN/TopNBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/TopN/TopNBatch.java index a73bdad9f..681c3e339 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/TopN/TopNBatch.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/TopN/TopNBatch.java @@ -60,8 +60,8 @@ import org.apache.drill.exec.record.selection.SelectionVector2; import org.apache.drill.exec.record.selection.SelectionVector4; import org.apache.drill.exec.vector.ValueVector; import org.apache.drill.exec.vector.complex.AbstractContainerVector; -import org.eigenbase.rel.RelFieldCollation.Direction; -import org.eigenbase.rel.RelFieldCollation.NullDirection; +import org.apache.calcite.rel.RelFieldCollation.Direction; +import org.apache.calcite.rel.RelFieldCollation.NullDirection; import com.google.common.base.Stopwatch; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinBatch.java index b2fae8ddd..79fe17740 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinBatch.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinBatch.java @@ -56,7 +56,7 @@ import org.apache.drill.exec.record.VectorContainer; import org.apache.drill.exec.record.VectorWrapper; import org.apache.drill.exec.vector.ValueVector; import org.apache.drill.exec.vector.complex.AbstractContainerVector; -import org.eigenbase.rel.JoinRelType; +import org.apache.calcite.rel.core.JoinRelType; import com.sun.codemodel.JExpr; import com.sun.codemodel.JExpression; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinProbe.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinProbe.java index 42c7010be..cc6bd5578 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinProbe.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinProbe.java @@ -27,7 +27,7 @@ import org.apache.drill.exec.ops.FragmentContext; import org.apache.drill.exec.physical.impl.common.HashTable; import org.apache.drill.exec.record.RecordBatch; import org.apache.drill.exec.record.VectorContainer; -import org.eigenbase.rel.JoinRelType; +import org.apache.calcite.rel.core.JoinRelType; public interface HashJoinProbe { public static TemplateClassDefinition<HashJoinProbe> TEMPLATE_DEFINITION = new TemplateClassDefinition<HashJoinProbe>(HashJoinProbe.class, HashJoinProbeTemplate.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinProbeTemplate.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinProbeTemplate.java index dcf73b46d..5531bc7e2 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinProbeTemplate.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinProbeTemplate.java @@ -31,7 +31,7 @@ import org.apache.drill.exec.record.RecordBatch; import org.apache.drill.exec.record.RecordBatch.IterOutcome; import org.apache.drill.exec.record.VectorContainer; import org.apache.drill.exec.record.VectorWrapper; -import org.eigenbase.rel.JoinRelType; +import org.apache.calcite.rel.core.JoinRelType; public abstract class HashJoinProbeTemplate implements HashJoinProbe { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/JoinStatus.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/JoinStatus.java index 5fb258590..8f72d327d 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/JoinStatus.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/JoinStatus.java @@ -23,7 +23,7 @@ import org.apache.drill.exec.record.RecordBatch; import org.apache.drill.exec.record.RecordBatch.IterOutcome; import org.apache.drill.exec.record.VectorWrapper; import org.apache.drill.exec.record.selection.SelectionVector4; -import org.eigenbase.rel.JoinRelType; +import org.apache.calcite.rel.core.JoinRelType; /** * The status of the current join. Maintained outside the individually compiled join templates so that we can carry status across multiple schemas. diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/JoinTemplate.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/JoinTemplate.java index 6da10d2a1..bb43e83dc 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/JoinTemplate.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/JoinTemplate.java @@ -23,7 +23,7 @@ import org.apache.drill.exec.exception.SchemaChangeException; import org.apache.drill.exec.ops.FragmentContext; import org.apache.drill.exec.physical.config.MergeJoinPOP; import org.apache.drill.exec.record.VectorContainer; -import org.eigenbase.rel.JoinRelType; +import org.apache.calcite.rel.core.JoinRelType; /** * This join template uses a merge join to combine two ordered streams into a single larger batch. When joining diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/JoinUtils.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/JoinUtils.java index 7fa79a143..41bf786ee 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/JoinUtils.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/JoinUtils.java @@ -18,13 +18,12 @@ package org.apache.drill.exec.physical.impl.join; +import org.apache.calcite.rel.core.Join; +import org.apache.calcite.rel.core.JoinRelType; +import org.apache.calcite.rex.RexNode; import org.apache.drill.common.logical.data.JoinCondition; -import org.eigenbase.rel.JoinRelBase; -import org.eigenbase.rel.JoinRelType; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptTable; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptUtil; import java.util.List; @@ -74,11 +73,11 @@ public class JoinUtils { * Otherwise, return false */ public static boolean checkCartesianJoin(RelNode relNode, List<Integer> leftKeys, List<Integer> rightKeys) { - if (relNode instanceof JoinRelBase) { + if (relNode instanceof Join) { leftKeys.clear(); rightKeys.clear(); - JoinRelBase joinRel = (JoinRelBase) relNode; + Join joinRel = (Join) relNode; RelNode left = joinRel.getLeft(); RelNode right = joinRel.getRight(); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/MergeJoinBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/MergeJoinBatch.java index 8fce52ec7..b5cb12ea2 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/MergeJoinBatch.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/MergeJoinBatch.java @@ -55,7 +55,7 @@ import org.apache.drill.exec.record.VectorWrapper; import org.apache.drill.exec.vector.AllocationHelper; import org.apache.drill.exec.vector.ValueVector; import org.apache.drill.exec.vector.complex.AbstractContainerVector; -import org.eigenbase.rel.JoinRelType; +import org.apache.calcite.rel.core.JoinRelType; import com.google.common.base.Preconditions; import com.sun.codemodel.JClass; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/MergeJoinCreator.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/MergeJoinCreator.java index d6b566cce..7d100afa9 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/MergeJoinCreator.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/MergeJoinCreator.java @@ -24,7 +24,7 @@ import org.apache.drill.exec.ops.FragmentContext; import org.apache.drill.exec.physical.config.MergeJoinPOP; import org.apache.drill.exec.physical.impl.BatchCreator; import org.apache.drill.exec.record.RecordBatch; -import org.eigenbase.rel.JoinRelType; +import org.apache.calcite.rel.core.JoinRelType; import com.google.common.base.Preconditions; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/mergereceiver/MergingRecordBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/mergereceiver/MergingRecordBatch.java index b8ef690f5..3cf285723 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/mergereceiver/MergingRecordBatch.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/mergereceiver/MergingRecordBatch.java @@ -75,7 +75,8 @@ import org.apache.drill.exec.vector.AllocationHelper; import org.apache.drill.exec.vector.CopyUtil; import org.apache.drill.exec.vector.FixedWidthVector; import org.apache.drill.exec.vector.ValueVector; -import org.eigenbase.rel.RelFieldCollation.Direction; +import org.apache.calcite.rel.RelFieldCollation.Direction; +import org.apache.calcite.rel.RelFieldCollation.NullDirection; import parquet.Preconditions; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/orderedpartitioner/OrderedPartitionRecordBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/orderedpartitioner/OrderedPartitionRecordBatch.java index 42b1080bd..b26c78a03 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/orderedpartitioner/OrderedPartitionRecordBatch.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/orderedpartitioner/OrderedPartitionRecordBatch.java @@ -69,8 +69,8 @@ import org.apache.drill.exec.record.selection.SelectionVector4; import org.apache.drill.exec.vector.AllocationHelper; import org.apache.drill.exec.vector.IntVector; import org.apache.drill.exec.vector.ValueVector; -import org.eigenbase.rel.RelFieldCollation.Direction; -import org.eigenbase.rel.RelFieldCollation.NullDirection; +import org.apache.calcite.rel.RelFieldCollation.Direction; +import org.apache.calcite.rel.RelFieldCollation.NullDirection; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/sort/SortBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/sort/SortBatch.java index 6f19e91d5..0a097c1f4 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/sort/SortBatch.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/sort/SortBatch.java @@ -42,8 +42,8 @@ import org.apache.drill.exec.record.VectorAccessible; import org.apache.drill.exec.record.WritableBatch; import org.apache.drill.exec.record.selection.SelectionVector2; import org.apache.drill.exec.record.selection.SelectionVector4; -import org.eigenbase.rel.RelFieldCollation.Direction; -import org.eigenbase.rel.RelFieldCollation.NullDirection; +import org.apache.calcite.rel.RelFieldCollation.Direction; +import org.apache.calcite.rel.RelFieldCollation.NullDirection; import com.sun.codemodel.JConditional; import com.sun.codemodel.JExpr; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/ExternalSortBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/ExternalSortBatch.java index 95d062c31..ca93a7214 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/ExternalSortBatch.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/ExternalSortBatch.java @@ -66,7 +66,7 @@ import org.apache.drill.exec.vector.ValueVector; import org.apache.drill.exec.vector.complex.AbstractContainerVector; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; -import org.eigenbase.rel.RelFieldCollation.Direction; +import org.apache.calcite.rel.RelFieldCollation.Direction; import com.google.common.base.Stopwatch; import com.google.common.collect.Iterators; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/StarColumnHelper.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/StarColumnHelper.java index d288479ad..9034f0192 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/StarColumnHelper.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/StarColumnHelper.java @@ -22,9 +22,9 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.rex.RexInputRef; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rex.RexInputRef; +import org.apache.calcite.rex.RexNode; public class StarColumnHelper { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillAggregateRelBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillAggregateRelBase.java index c733f7755..e0f9e348b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillAggregateRelBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillAggregateRelBase.java @@ -21,24 +21,25 @@ import java.util.BitSet; import java.util.List; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; -import org.eigenbase.rel.AggregateCall; -import org.eigenbase.rel.AggregateRelBase; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.rel.core.Aggregate; +import org.apache.calcite.rel.core.AggregateCall; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.util.ImmutableBitSet; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelTraitSet; /** * Base class for logical and physical Aggregations implemented in Drill */ -public abstract class DrillAggregateRelBase extends AggregateRelBase implements DrillRelNode { +public abstract class DrillAggregateRelBase extends Aggregate implements DrillRelNode { - public DrillAggregateRelBase(RelOptCluster cluster, RelTraitSet traits, RelNode child, BitSet groupSet, - List<AggregateCall> aggCalls) throws InvalidRelException { - super(cluster, traits, child, groupSet, aggCalls); + public DrillAggregateRelBase(RelOptCluster cluster, RelTraitSet traits, RelNode child, boolean indicator, + ImmutableBitSet groupSet, List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) throws InvalidRelException { + super(cluster, traits, child, indicator, groupSet, groupSets, aggCalls); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillFilterRelBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillFilterRelBase.java index 7813d15b6..c52dedece 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillFilterRelBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillFilterRelBase.java @@ -23,24 +23,25 @@ import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.planner.logical.DrillOptiq; import org.apache.drill.exec.planner.logical.DrillParseContext; import org.apache.drill.exec.planner.physical.PrelUtil; -import org.eigenbase.rel.FilterRelBase; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexUtil; + +import org.apache.calcite.rel.core.Filter; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexUtil; import java.util.List; /** * Base class for logical and physical Filters implemented in Drill */ -public abstract class DrillFilterRelBase extends FilterRelBase implements DrillRelNode { +public abstract class DrillFilterRelBase extends Filter implements DrillRelNode { private final int numConjuncts; private final List<RexNode> conjunctions; @@ -52,7 +53,7 @@ public abstract class DrillFilterRelBase extends FilterRelBase implements DrillR // that repeated calls to the costing function can use the saved copy conjunctions = RelOptUtil.conjunctions(condition); numConjuncts = conjunctions.size(); - assert numConjuncts >= 1; + // assert numConjuncts >= 1; } @@ -61,7 +62,7 @@ public abstract class DrillFilterRelBase extends FilterRelBase implements DrillR if(PrelUtil.getSettings(getCluster()).useDefaultCosting()) { return super.computeSelfCost(planner).multiplyBy(.1); } - RelNode child = this.getChild(); + RelNode child = this.getInput(); double inputRows = RelMetadataQuery.getRowCount(child); double cpuCost = estimateCpuCost(); DrillCostFactory costFactory = (DrillCostFactory)planner.getCostFactory(); @@ -69,7 +70,7 @@ public abstract class DrillFilterRelBase extends FilterRelBase implements DrillR } protected LogicalExpression getFilterExpression(DrillParseContext context){ - return DrillOptiq.toDrill(context, getChild(), getCondition()); + return DrillOptiq.toDrill(context, getInput(), getCondition()); } /* Given the condition (C1 and C2 and C3 and ... C_n), here is how to estimate cpu cost of FILTER : @@ -78,12 +79,12 @@ public abstract class DrillFilterRelBase extends FilterRelBase implements DrillR * cpu_cost = #_of_comparison * DrillCostBase_COMPARE_CPU_COST; */ private double estimateCpuCost() { - RelNode child = this.getChild(); + RelNode child = this.getInput(); double compNum = RelMetadataQuery.getRowCount(child); for (int i = 0; i< numConjuncts; i++) { RexNode conjFilter = RexUtil.composeConjunction(this.getCluster().getRexBuilder(), conjunctions.subList(0, i + 1), false); - compNum += FilterRelBase.estimateFilteredRows(child, conjFilter); + compNum += Filter.estimateFilteredRows(child, conjFilter); } return compNum * DrillCostBase.COMPARE_CPU_COST; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillJoinRelBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillJoinRelBase.java index 3b3aa1adc..73ccf2394 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillJoinRelBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillJoinRelBase.java @@ -23,23 +23,23 @@ import java.util.List; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.planner.physical.PrelUtil; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.JoinRelBase; -import org.eigenbase.rel.JoinRelType; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.core.Join; +import org.apache.calcite.rel.core.JoinRelType; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rex.RexNode; import com.google.common.collect.Lists; /** * Base class for logical and physical Joins implemented in Drill. */ -public abstract class DrillJoinRelBase extends JoinRelBase implements DrillRelNode { +public abstract class DrillJoinRelBase extends Join implements DrillRelNode { protected List<Integer> leftKeys = Lists.newArrayList(); protected List<Integer> rightKeys = Lists.newArrayList() ; private final double joinRowFactor; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillLimitRelBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillLimitRelBase.java index 11164fbd1..a19dff745 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillLimitRelBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillLimitRelBase.java @@ -20,15 +20,15 @@ package org.apache.drill.exec.planner.common; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.planner.physical.PrelUtil; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.RelWriter; -import org.eigenbase.rel.SingleRel; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelWriter; +import org.apache.calcite.rel.SingleRel; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.rex.RexNode; /** * Base class for logical and physical Limits implemented in Drill diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillProjectRelBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillProjectRelBase.java index 7cf98cde5..51b4e3fd6 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillProjectRelBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillProjectRelBase.java @@ -30,17 +30,17 @@ import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.planner.logical.DrillOptiq; import org.apache.drill.exec.planner.logical.DrillParseContext; import org.apache.drill.exec.planner.physical.PrelUtil; -import org.eigenbase.rel.ProjectRelBase; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.rex.RexNode; -import org.eigenbase.util.Pair; +import org.apache.calcite.rel.core.Project; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.util.Pair; import com.google.common.collect.Lists; @@ -48,7 +48,7 @@ import com.google.common.collect.Lists; * * Base class for logical and physical Project implemented in Drill */ -public abstract class DrillProjectRelBase extends ProjectRelBase implements DrillRelNode { +public abstract class DrillProjectRelBase extends Project implements DrillRelNode { protected DrillProjectRelBase(Convention convention, RelOptCluster cluster, RelTraitSet traits, RelNode child, List<RexNode> exps, RelDataType rowType) { super(cluster, traits, child, exps, rowType, Flags.BOXED); @@ -93,7 +93,7 @@ public abstract class DrillProjectRelBase extends ProjectRelBase implements Dril for (Pair<RexNode, String> pair : projects()) { if (! StarColumnHelper.subsumeColumn(starColPrefixes, pair.right)) { - LogicalExpression expr = DrillOptiq.toDrill(context, getChild(), pair.left); + LogicalExpression expr = DrillOptiq.toDrill(context, getInput(), pair.left); expressions.add(new NamedExpression(expr, FieldReference.getWithQuotedRef(pair.right))); } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillRelNode.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillRelNode.java index fd04cddb0..a59b5cdb1 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillRelNode.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillRelNode.java @@ -18,7 +18,7 @@ package org.apache.drill.exec.planner.common; -import org.eigenbase.rel.RelNode; +import org.apache.calcite.rel.RelNode; public interface DrillRelNode extends RelNode { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillRelOptUtil.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillRelOptUtil.java index bbe7cf35f..cea8fec22 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillRelOptUtil.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillRelOptUtil.java @@ -21,18 +21,18 @@ import java.util.AbstractList; import java.util.List; import com.google.common.collect.Lists; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.logical.LogicalCalc; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rex.RexInputRef; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.type.SqlTypeName; +import org.apache.calcite.util.Pair; import org.apache.drill.common.types.TypeProtos; import org.apache.drill.common.types.Types; -import org.apache.drill.exec.planner.logical.DrillOptiq; import org.apache.drill.exec.resolver.TypeCastRules; -import org.eigenbase.rel.CalcRel; -import org.eigenbase.rel.RelNode; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexInputRef; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.type.SqlTypeName; -import org.eigenbase.util.Pair; /** * Utility class that is a subset of the RelOptUtil class and is a placeholder for Drill specific @@ -116,6 +116,7 @@ public abstract class DrillRelOptUtil { fieldNames.get(index)); } }; - return CalcRel.createProject(rel, refs, true); + return RelOptUtil.createRename(rel, fieldNames); + // return Calc.createProject(rel, refs, true); } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillScanRelBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillScanRelBase.java index 33581a38f..9da7d3684 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillScanRelBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillScanRelBase.java @@ -18,18 +18,18 @@ package org.apache.drill.exec.planner.common; import org.apache.drill.exec.planner.logical.DrillTable; -import org.eigenbase.rel.TableAccessRelBase; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptTable; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.core.TableScan; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptTable; +import org.apache.calcite.plan.RelTraitSet; /** * Base class for logical scan rel implemented in Drill. * NOTE: we should eventually make this class independent of TableAccessRelBase and then * make it the base class for logical and physical scan rels. */ -public abstract class DrillScanRelBase extends TableAccessRelBase implements DrillRelNode { +public abstract class DrillScanRelBase extends TableScan implements DrillRelNode { protected final DrillTable drillTable; public DrillScanRelBase(Convention convention, RelOptCluster cluster, RelTraitSet traits, RelOptTable table) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillScreenRelBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillScreenRelBase.java index 9b31fb0c2..ab5287e01 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillScreenRelBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillScreenRelBase.java @@ -19,14 +19,14 @@ package org.apache.drill.exec.planner.common; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.planner.physical.PrelUtil; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.SingleRel; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.SingleRel; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; /** * Base class for logical and physical Screen implemented in Drill diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillStoreRelBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillStoreRelBase.java index adf7d6bff..d61f271f2 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillStoreRelBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillStoreRelBase.java @@ -19,18 +19,18 @@ package org.apache.drill.exec.planner.common; import java.util.List; -import net.hydromatic.optiq.prepare.Prepare.CatalogReader; +import org.apache.calcite.prepare.Prepare.CatalogReader; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.TableModificationRelBase; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptTable; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.TableModify; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptTable; +import org.apache.calcite.plan.RelTraitSet; /** * Base class for logical and physical Store implemented in Drill */ -public abstract class DrillStoreRelBase extends TableModificationRelBase implements DrillRelNode { +public abstract class DrillStoreRelBase extends TableModify implements DrillRelNode { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(DrillStoreRelBase.class); protected DrillStoreRelBase(RelOptCluster cluster, RelTraitSet traits, RelOptTable table, CatalogReader catalogReader, diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillUnionRelBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillUnionRelBase.java index 11ed8baa8..bb977c644 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillUnionRelBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillUnionRelBase.java @@ -19,17 +19,17 @@ package org.apache.drill.exec.planner.common; import java.util.List; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.UnionRelBase; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Union; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; /** * Base class for logical and physical Union implemented in Drill */ -public abstract class DrillUnionRelBase extends UnionRelBase implements DrillRelNode { +public abstract class DrillUnionRelBase extends Union implements DrillRelNode { public DrillUnionRelBase(RelOptCluster cluster, RelTraitSet traits, List<RelNode> inputs, boolean all, boolean checkCompatibility) throws InvalidRelException { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillWindowRelBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillWindowRelBase.java index fcf52ee62..272137d85 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillWindowRelBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillWindowRelBase.java @@ -18,16 +18,16 @@ package org.apache.drill.exec.planner.common; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.WindowRelBase; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.rex.RexLiteral; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Window; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rex.RexLiteral; import java.util.List; -public class DrillWindowRelBase extends WindowRelBase implements DrillRelNode { +public class DrillWindowRelBase extends Window implements DrillRelNode { public DrillWindowRelBase( RelOptCluster cluster, @@ -35,7 +35,7 @@ public class DrillWindowRelBase extends WindowRelBase implements DrillRelNode { RelNode child, List<RexLiteral> constants, RelDataType rowType, - List<Window> windows) { + List<Group> windows) { super(cluster, traits, child, constants, rowType, windows); } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillWriterRelBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillWriterRelBase.java index 7ea98a478..9ccaeb206 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillWriterRelBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillWriterRelBase.java @@ -20,13 +20,13 @@ package org.apache.drill.exec.planner.common; import java.util.List; import org.apache.drill.exec.planner.logical.CreateTableEntry; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.SingleRel; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.SingleRel; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.sql.type.SqlTypeName; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/cost/DrillCostBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/cost/DrillCostBase.java index 87a1ea3eb..0e032f907 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/cost/DrillCostBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/cost/DrillCostBase.java @@ -18,9 +18,9 @@ package org.apache.drill.exec.planner.cost; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.util.Util; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.util.Util; /** * Implementation of the DrillRelOptCost, modeled similar to VolcanoCost diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/cost/DrillRelOptCost.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/cost/DrillRelOptCost.java index 73c6c72d9..8c4db17a4 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/cost/DrillRelOptCost.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/cost/DrillRelOptCost.java @@ -18,7 +18,8 @@ package org.apache.drill.exec.planner.cost; -import org.eigenbase.relopt.RelOptCost; +import org.apache.calcite.plan.RelOptCost; + public interface DrillRelOptCost extends RelOptCost { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/cost/DrillRelOptCostFactory.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/cost/DrillRelOptCostFactory.java index fc20d60df..f8c094329 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/cost/DrillRelOptCostFactory.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/cost/DrillRelOptCostFactory.java @@ -19,8 +19,8 @@ package org.apache.drill.exec.planner.cost; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptCostFactory; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptCostFactory; public interface DrillRelOptCostFactory extends RelOptCostFactory { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DirPathBuilder.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DirPathBuilder.java index cb38da91b..892e8cba3 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DirPathBuilder.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DirPathBuilder.java @@ -23,23 +23,23 @@ import java.util.List; import org.apache.drill.common.expression.FieldReference; import org.apache.drill.common.expression.SchemaPath; import org.apache.drill.exec.planner.PartitionDescriptor; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexCorrelVariable; -import org.eigenbase.rex.RexDynamicParam; -import org.eigenbase.rex.RexFieldAccess; -import org.eigenbase.rex.RexInputRef; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.rex.RexLocalRef; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexOver; -import org.eigenbase.rex.RexRangeRef; -import org.eigenbase.rex.RexUtil; -import org.eigenbase.rex.RexVisitorImpl; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.SqlSyntax; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexCorrelVariable; +import org.apache.calcite.rex.RexDynamicParam; +import org.apache.calcite.rex.RexFieldAccess; +import org.apache.calcite.rex.RexInputRef; +import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.rex.RexLocalRef; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexOver; +import org.apache.calcite.rex.RexRangeRef; +import org.apache.calcite.rex.RexUtil; +import org.apache.calcite.rex.RexVisitorImpl; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlSyntax; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRel.java index ee035c635..54193153b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRel.java @@ -20,9 +20,9 @@ package org.apache.drill.exec.planner.logical; import java.util.BitSet; import java.util.List; -import net.hydromatic.linq4j.Ord; -import net.hydromatic.optiq.util.BitSets; - +import org.apache.calcite.linq4j.Ord; +import org.apache.calcite.util.BitSets; +import org.apache.calcite.util.ImmutableBitSet; import org.apache.drill.common.expression.ExpressionPosition; import org.apache.drill.common.expression.FieldReference; import org.apache.drill.common.expression.FunctionCallFactory; @@ -32,12 +32,12 @@ import org.apache.drill.common.logical.data.GroupingAggregate; import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.exec.planner.common.DrillAggregateRelBase; import org.apache.drill.exec.planner.torel.ConversionContext; -import org.eigenbase.rel.AggregateCall; -import org.eigenbase.rel.AggregateRelBase; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.core.AggregateCall; +import org.apache.calcite.rel.core.Aggregate; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; import com.google.common.collect.Lists; @@ -46,15 +46,15 @@ import com.google.common.collect.Lists; */ public class DrillAggregateRel extends DrillAggregateRelBase implements DrillRel { /** Creates a DrillAggregateRel. */ - public DrillAggregateRel(RelOptCluster cluster, RelTraitSet traits, RelNode child, BitSet groupSet, - List<AggregateCall> aggCalls) throws InvalidRelException { - super(cluster, traits, child, groupSet, aggCalls); + public DrillAggregateRel(RelOptCluster cluster, RelTraitSet traits, RelNode child, boolean indicator, ImmutableBitSet groupSet, + List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) throws InvalidRelException { + super(cluster, traits, child, indicator, groupSet, groupSets, aggCalls); } @Override - public AggregateRelBase copy(RelTraitSet traitSet, RelNode input, BitSet groupSet, List<AggregateCall> aggCalls) { + public Aggregate copy(RelTraitSet traitSet, RelNode input, boolean indicator, ImmutableBitSet groupSet, List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) { try { - return new DrillAggregateRel(getCluster(), traitSet, input, getGroupSet(), aggCalls); + return new DrillAggregateRel(getCluster(), traitSet, input, indicator, groupSet, groupSets, aggCalls); } catch (InvalidRelException e) { throw new AssertionError(e); } @@ -64,8 +64,8 @@ public class DrillAggregateRel extends DrillAggregateRelBase implements DrillRel public LogicalOperator implement(DrillImplementor implementor) { GroupingAggregate.Builder builder = GroupingAggregate.builder(); - builder.setInput(implementor.visitChild(this, 0, getChild())); - final List<String> childFields = getChild().getRowType().getFieldNames(); + builder.setInput(implementor.visitChild(this, 0, getInput())); + final List<String> childFields = getInput().getRowType().getFieldNames(); final List<String> fields = getRowType().getFieldNames(); for (int group : BitSets.toIter(groupSet)) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRule.java index 66fc5632a..0ca4447a3 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRule.java @@ -19,30 +19,31 @@ package org.apache.drill.exec.planner.logical; import java.util.logging.Logger; -import org.eigenbase.rel.AggregateRel; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.trace.EigenbaseTrace; +import org.apache.calcite.rel.core.Aggregate; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.logical.LogicalAggregate; +import org.apache.calcite.util.trace.CalciteTrace; /** - * Rule that converts an {@link AggregateRel} to a {@link DrillAggregateRel}, implemented by a Drill "segment" operation + * Rule that converts an {@link LogicalAggregate} to a {@link DrillAggregateRel}, implemented by a Drill "segment" operation * followed by a "collapseaggregate" operation. */ public class DrillAggregateRule extends RelOptRule { public static final RelOptRule INSTANCE = new DrillAggregateRule(); - protected static final Logger tracer = EigenbaseTrace.getPlannerTracer(); + protected static final Logger tracer = CalciteTrace.getPlannerTracer(); private DrillAggregateRule() { - super(RelOptHelper.some(AggregateRel.class, Convention.NONE, RelOptHelper.any(RelNode.class)), "DrillAggregateRule"); + super(RelOptHelper.some(LogicalAggregate.class, Convention.NONE, RelOptHelper.any(RelNode.class)), "DrillAggregateRule"); } @Override public void onMatch(RelOptRuleCall call) { - final AggregateRel aggregate = (AggregateRel) call.rel(0); + final LogicalAggregate aggregate = (LogicalAggregate) call.rel(0); final RelNode input = call.rel(1); if (aggregate.containsDistinctCall()) { @@ -53,8 +54,8 @@ public class DrillAggregateRule extends RelOptRule { final RelTraitSet traits = aggregate.getTraitSet().plus(DrillRel.DRILL_LOGICAL); final RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL)); try { - call.transformTo(new DrillAggregateRel(aggregate.getCluster(), traits, convertedInput, aggregate.getGroupSet(), - aggregate.getAggCallList())); + call.transformTo(new DrillAggregateRel(aggregate.getCluster(), traits, convertedInput, aggregate.indicator, + aggregate.getGroupSet(), aggregate.getGroupSets(), aggregate.getAggCallList())); } catch (InvalidRelException e) { tracer.warning(e.toString()); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConditions.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConditions.java index 310ef823d..f68007d04 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConditions.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConditions.java @@ -17,9 +17,9 @@ */ package org.apache.drill.exec.planner.logical; -import org.eigenbase.rel.rules.PushProjector; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.rules.PushProjector; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexNode; public final class DrillConditions { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConstExecutor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConstExecutor.java index 0fe5a1a63..92e56781a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConstExecutor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConstExecutor.java @@ -19,7 +19,7 @@ package org.apache.drill.exec.planner.logical; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import net.hydromatic.avatica.ByteString; +import org.apache.calcite.avatica.util.TimeUnit; import org.apache.drill.common.exceptions.DrillRuntimeException; import org.apache.drill.common.expression.ErrorCollectorImpl; import org.apache.drill.common.expression.ExpressionStringBuilder; @@ -46,19 +46,17 @@ import org.apache.drill.exec.expr.holders.IntervalYearHolder; import org.apache.drill.exec.expr.holders.TimeHolder; import org.apache.drill.exec.expr.holders.TimeStampHolder; import org.apache.drill.exec.expr.holders.ValueHolder; -import org.apache.drill.exec.expr.holders.VarBinaryHolder; import org.apache.drill.exec.expr.holders.VarCharHolder; import org.apache.drill.exec.ops.UdfUtilities; -import org.apache.drill.exec.vector.VarCharVector; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.SqlIntervalQualifier; -import org.eigenbase.sql.parser.SqlParserPos; -import org.eigenbase.sql.type.SqlTypeName; -import org.eigenbase.util.NlsString; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.SqlIntervalQualifier; +import org.apache.calcite.sql.parser.SqlParserPos; +import org.apache.calcite.sql.type.SqlTypeName; +import org.apache.calcite.util.NlsString; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; @@ -137,14 +135,14 @@ public class DrillConstExecutor implements RelOptPlanner.Executor { if (sqlTypeName == SqlTypeName.INTERVAL_DAY_TIME) { type = typeFactory.createSqlIntervalType( new SqlIntervalQualifier( - SqlIntervalQualifier.TimeUnit.DAY, - SqlIntervalQualifier.TimeUnit.MINUTE, + TimeUnit.DAY, + TimeUnit.MINUTE, SqlParserPos.ZERO)); } else if (sqlTypeName == SqlTypeName.INTERVAL_YEAR_MONTH) { type = typeFactory.createSqlIntervalType( new SqlIntervalQualifier( - SqlIntervalQualifier.TimeUnit.YEAR, - SqlIntervalQualifier.TimeUnit.MONTH, + TimeUnit.YEAR, + TimeUnit.MONTH, SqlParserPos.ZERO)); } else if (sqlTypeName == SqlTypeName.VARCHAR) { type = typeFactory.createSqlType(sqlTypeName, TypeHelper.VARCHAR_DEFAULT_CAST_LEN); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRel.java index 63bef4428..a914f4780 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRel.java @@ -19,15 +19,15 @@ package org.apache.drill.exec.planner.logical; import java.util.List; +import org.apache.calcite.plan.RelTraitSet; import org.apache.drill.common.logical.data.Filter; import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.exec.planner.common.DrillFilterRelBase; import org.apache.drill.exec.planner.torel.ConversionContext; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.rex.RexNode; public class DrillFilterRel extends DrillFilterRelBase implements DrillRel { @@ -36,19 +36,19 @@ public class DrillFilterRel extends DrillFilterRelBase implements DrillRel { } @Override - public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) { - return new DrillFilterRel(getCluster(), traitSet, sole(inputs), getCondition()); + public org.apache.calcite.rel.core.Filter copy(RelTraitSet traitSet, RelNode input, RexNode condition) { + return new DrillFilterRel(getCluster(), traitSet, input, condition); } @Override public LogicalOperator implement(DrillImplementor implementor) { - final LogicalOperator input = implementor.visitChild(this, 0, getChild()); - Filter f = new Filter(getFilterExpression(implementor.getContext())); + final LogicalOperator input = implementor.visitChild(this, 0, getInput()); + org.apache.drill.common.logical.data.Filter f = new org.apache.drill.common.logical.data.Filter(getFilterExpression(implementor.getContext())); f.setInput(input); return f; } - public static DrillFilterRel convert(Filter filter, ConversionContext context) throws InvalidRelException{ + public static DrillFilterRel convert(org.apache.drill.common.logical.data.Filter filter, ConversionContext context) throws InvalidRelException{ RelNode input = context.toRel(filter.getInput()); return new DrillFilterRel(context.getCluster(), context.getLogicalTraits(), input, context.toRex(filter.getExpr())); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRule.java index cb47adb08..dd7da48ae 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRule.java @@ -17,26 +17,28 @@ */ package org.apache.drill.exec.planner.logical; -import org.eigenbase.rel.FilterRel; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rel.logical.LogicalFilter; /** - * Rule that converts a {@link org.eigenbase.rel.FilterRel} to a Drill "filter" operation. + * Rule that converts a {@link org.apache.calcite.rel.FilterRel} to a Drill "filter" operation. */ public class DrillFilterRule extends RelOptRule { public static final RelOptRule INSTANCE = new DrillFilterRule(); private DrillFilterRule() { - super(RelOptHelper.any(FilterRel.class, Convention.NONE), "DrillFilterRule"); + super(RelOptHelper.any(LogicalFilter.class, Convention.NONE), "DrillFilterRule"); } @Override public void onMatch(RelOptRuleCall call) { - final FilterRel filter = (FilterRel) call.rel(0); - final RelNode input = filter.getChild(); + final LogicalFilter filter = (LogicalFilter) call.rel(0); + final RelNode input = filter.getInput(); //final RelTraitSet traits = filter.getTraitSet().plus(DrillRel.DRILL_LOGICAL); final RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL)); call.transformTo(new DrillFilterRel(filter.getCluster(), convertedInput.getTraitSet(), convertedInput, filter.getCondition())); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillImplementor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillImplementor.java index 7fff6e9b6..fed7e06c2 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillImplementor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillImplementor.java @@ -19,13 +19,14 @@ package org.apache.drill.exec.planner.logical; import java.util.Set; +import org.apache.calcite.rel.RelNode; import org.apache.drill.common.logical.LogicalPlan; import org.apache.drill.common.logical.LogicalPlanBuilder; import org.apache.drill.common.logical.PlanProperties.Generator.ResultMode; import org.apache.drill.common.logical.PlanProperties.PlanType; import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.common.logical.data.visitors.AbstractLogicalVisitor; -import org.eigenbase.rel.RelNode; +import org.apache.calcite.rel.RelNode; import com.google.common.collect.Sets; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRel.java index 8d3e1bf86..1f602c759 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRel.java @@ -27,17 +27,17 @@ import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.common.logical.data.Project; import org.apache.drill.exec.planner.common.DrillJoinRelBase; import org.apache.drill.exec.planner.torel.ConversionContext; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.JoinRelType; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexUtil; -import org.eigenbase.sql.fun.SqlStdOperatorTable; -import org.eigenbase.util.Pair; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.core.JoinRelType; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexUtil; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.util.Pair; import com.google.common.collect.Lists; @@ -53,7 +53,7 @@ public class DrillJoinRel extends DrillJoinRelBase implements DrillRel { RexNode remaining = RelOptUtil.splitJoinCondition(left, right, condition, leftKeys, rightKeys); if (!remaining.isAlwaysTrue() && (leftKeys.size() == 0 || rightKeys.size() == 0)) { - throw new InvalidRelException("DrillJoinRel only supports equi-join"); + // throw new InvalidRelException("DrillJoinRel only supports equi-join"); } } @@ -68,7 +68,7 @@ public class DrillJoinRel extends DrillJoinRelBase implements DrillRel { List<Integer> tmpRightKeys = Lists.newArrayList(); RexNode remaining = RelOptUtil.splitJoinCondition(left, right, condition, tmpLeftKeys, tmpRightKeys); if (!remaining.isAlwaysTrue() && (tmpLeftKeys.size() == 0 || tmpRightKeys.size() == 0)) { - throw new InvalidRelException("DrillJoinRel only supports equi-join"); + // throw new InvalidRelException("DrillJoinRel only supports equi-join"); } } this.leftKeys = leftKeys; @@ -149,8 +149,8 @@ public class DrillJoinRel extends DrillJoinRelBase implements DrillRel { // right fields appear after the LHS fields. final int rightInputOffset = left.getRowType().getFieldCount(); for (JoinCondition condition : join.getConditions()) { - RelDataTypeField leftField = left.getRowType().getField(ExprHelper.getFieldName(condition.getLeft()), true); - RelDataTypeField rightField = right.getRowType().getField(ExprHelper.getFieldName(condition.getRight()), true); + RelDataTypeField leftField = left.getRowType().getField(ExprHelper.getFieldName(condition.getLeft()), true, false); + RelDataTypeField rightField = right.getRowType().getField(ExprHelper.getFieldName(condition.getRight()), true, false); joinConditions.add( context.getRexBuilder().makeCall( SqlStdOperatorTable.EQUALS, diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRule.java index cf1541195..f832dfe19 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRule.java @@ -20,40 +20,40 @@ package org.apache.drill.exec.planner.logical; import java.util.List; import java.util.logging.Logger; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.JoinRel; -import org.eigenbase.rel.JoinRelType; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexUtil; -import org.eigenbase.sql.fun.SqlStdOperatorTable; -import org.eigenbase.trace.EigenbaseTrace; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.core.JoinRelType; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.logical.LogicalJoin; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexUtil; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.util.trace.CalciteTrace; import com.google.common.collect.Lists; /** - * Rule that converts a {@link JoinRel} to a {@link DrillJoinRel}, which is implemented by Drill "join" operation. + * Rule that converts a {@link org.apache.calcite.rel.logical.LogicalJoin} to a {@link DrillJoinRel}, which is implemented by Drill "join" operation. */ public class DrillJoinRule extends RelOptRule { public static final RelOptRule INSTANCE = new DrillJoinRule(); - protected static final Logger tracer = EigenbaseTrace.getPlannerTracer(); + protected static final Logger tracer = CalciteTrace.getPlannerTracer(); private DrillJoinRule() { super( - RelOptHelper.any(JoinRel.class, Convention.NONE), + RelOptHelper.any(LogicalJoin.class, Convention.NONE), "DrillJoinRule"); } @Override public void onMatch(RelOptRuleCall call) { - final JoinRel join = (JoinRel) call.rel(0); + final LogicalJoin join = (LogicalJoin) call.rel(0); final RelNode left = join.getLeft(); final RelNode right = join.getRight(); final RelTraitSet traits = join.getTraitSet().plus(DrillRel.DRILL_LOGICAL); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRel.java index 75a38d88e..9faf070ae 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRel.java @@ -24,13 +24,13 @@ import org.apache.drill.common.logical.data.Limit; import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.exec.planner.common.DrillLimitRelBase; import org.apache.drill.exec.planner.torel.ConversionContext; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.type.SqlTypeName; public class DrillLimitRel extends DrillLimitRelBase implements DrillRel { @@ -45,7 +45,7 @@ public class DrillLimitRel extends DrillLimitRelBase implements DrillRel { @Override public LogicalOperator implement(DrillImplementor implementor) { - LogicalOperator inputOp = implementor.visitChild(this, 0, getChild()); + LogicalOperator inputOp = implementor.visitChild(this, 0, getInput()); // First offset to include into results (inclusive). Null implies it is starting from offset 0 int first = offset != null ? Math.max(0, RexLiteral.intValue(offset)) : 0; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRule.java index f6c910e34..03ef1e895 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRule.java @@ -17,34 +17,35 @@ */ package org.apache.drill.exec.planner.logical; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.SortRel; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Sort; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.logical.LogicalSort; /** - * This rule converts a SortRel that has either a offset and fetch into a Drill Sort and LimitPOP Rel + * This rule converts a Sort that has either a offset and fetch into a Drill Sort and LimitPOP Rel */ public class DrillLimitRule extends RelOptRule { public static DrillLimitRule INSTANCE = new DrillLimitRule(); private DrillLimitRule() { - super(RelOptHelper.any(SortRel.class, Convention.NONE), "DrillLimitRule"); + super(RelOptHelper.any(LogicalSort.class, Convention.NONE), "DrillLimitRule"); } @Override public boolean matches(RelOptRuleCall call) { - final SortRel sort = call.rel(0); + final Sort sort = call.rel(0); return sort.offset != null || sort.fetch != null; } @Override public void onMatch(RelOptRuleCall call) { - final SortRel incomingSort = call.rel(0); + final Sort incomingSort = call.rel(0); final RelTraitSet incomingTraits = incomingSort.getTraitSet(); - RelNode input = incomingSort.getChild(); + RelNode input = incomingSort.getInput(); // if the Optiq sort rel includes a collation and a limit, we need to create a copy the sort rel that excludes the // limit information. diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeFilterRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeFilterRule.java index b406cfb6d..951edccf9 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeFilterRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeFilterRule.java @@ -17,40 +17,45 @@ */ package org.apache.drill.exec.planner.logical; -import org.eigenbase.rel.FilterRel; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexProgram; -import org.eigenbase.rex.RexProgramBuilder; -import org.eigenbase.rex.RexUtil; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rel.core.Filter; +import org.apache.calcite.rel.core.RelFactories; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexProgram; +import org.apache.calcite.rex.RexProgramBuilder; +import org.apache.calcite.rex.RexUtil; /** - * MergeFilterRule implements the rule for combining two {@link FilterRel}s + * MergeFilterRule implements the rule for combining two {@link Filter}s */ public class DrillMergeFilterRule extends RelOptRule { - public static final DrillMergeFilterRule INSTANCE = new DrillMergeFilterRule(); + public static final DrillMergeFilterRule INSTANCE = + new DrillMergeFilterRule(RelFactories.DEFAULT_FILTER_FACTORY); + + private final RelFactories.FilterFactory filterFactory; + //~ Constructors ----------------------------------------------------------- /** * Creates a MergeFilterRule. */ - private DrillMergeFilterRule() { + private DrillMergeFilterRule(RelFactories.FilterFactory filterFactory) { super( - operand( - FilterRel.class, - operand(FilterRel.class, any()))); + operand(Filter.class, + operand(Filter.class, any()))); + this.filterFactory = filterFactory; } //~ Methods ---------------------------------------------------------------- // implement RelOptRule public void onMatch(RelOptRuleCall call) { - FilterRel topFilter = call.rel(0); - FilterRel bottomFilter = call.rel(1); + Filter topFilter = call.rel(0); + Filter bottomFilter = call.rel(1); // use RexPrograms to merge the two FilterRels into a single program // so we can convert the two FilterRel conditions to directly @@ -69,27 +74,26 @@ public class DrillMergeFilterRule extends RelOptRule { mergedProgram.expandLocalRef( mergedProgram.getCondition()); - if(!RexUtil.isFlat(newCondition)){ - RexCall newCall = (RexCall) newCondition; - newCondition = rexBuilder.makeFlatCall( newCall.getOperator(), newCall.getOperands()); - } +// if(!RexUtil.isFlat(newCondition)){ +// RexCall newCall = (RexCall) newCondition; +// newCondition = rexBuilder.makeFlatCall( newCall.getOperator(), newCall.getOperands()); +// } - FilterRel newFilterRel = - new FilterRel( - topFilter.getCluster(), - bottomFilter.getChild(), - newCondition); + Filter newFilterRel = + (Filter) filterFactory.createFilter( + bottomFilter.getInput(), + RexUtil.flatten(rexBuilder, newCondition)); call.transformTo(newFilterRel); } /** - * Creates a RexProgram corresponding to a FilterRel + * Creates a RexProgram corresponding to a LogicalFilter * - * @param filterRel the FilterRel + * @param filterRel the LogicalFilter * @return created RexProgram */ - private RexProgram createProgram(FilterRel filterRel) { + private RexProgram createProgram(Filter filterRel) { RexProgramBuilder programBuilder = new RexProgramBuilder( filterRel.getRowType(), diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java index b97d83e3a..b0492772a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java @@ -18,15 +18,15 @@ package org.apache.drill.exec.planner.logical; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rel.core.Project; +import org.apache.calcite.rel.rules.ProjectMergeRule; import org.apache.drill.exec.expr.fn.FunctionImplementationRegistry; -import org.eigenbase.rel.ProjectRelBase; -import org.eigenbase.rel.RelFactories.ProjectFactory; -import org.eigenbase.rel.rules.MergeProjectRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.core.RelFactories.ProjectFactory; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexNode; -public class DrillMergeProjectRule extends MergeProjectRule { +public class DrillMergeProjectRule extends ProjectMergeRule { private FunctionImplementationRegistry functionRegistry; private static DrillMergeProjectRule INSTANCE = null; @@ -45,8 +45,8 @@ public class DrillMergeProjectRule extends MergeProjectRule { @Override public boolean matches(RelOptRuleCall call) { - ProjectRelBase topProject = call.rel(0); - ProjectRelBase bottomProject = call.rel(1); + Project topProject = call.rel(0); + Project bottomProject = call.rel(1); // We have a complex output type do not fire the merge project rule if (checkComplexOutput(topProject) || checkComplexOutput(bottomProject)) { @@ -56,7 +56,7 @@ public class DrillMergeProjectRule extends MergeProjectRule { return true; } - private boolean checkComplexOutput(ProjectRelBase project) { + private boolean checkComplexOutput(Project project) { for (RexNode expr: project.getChildExps()) { if (expr instanceof RexCall) { if (functionRegistry.isFunctionComplexOutput(((RexCall) expr).getOperator().getName())) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillOptiq.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillOptiq.java index b96ff3d7c..441f2e396 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillOptiq.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillOptiq.java @@ -37,23 +37,22 @@ import org.apache.drill.common.types.TypeProtos.MajorType; import org.apache.drill.common.types.TypeProtos.MinorType; import org.apache.drill.common.types.Types; import org.apache.drill.exec.planner.StarColumnHelper; -import org.eigenbase.rel.RelNode; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexCorrelVariable; -import org.eigenbase.rex.RexDynamicParam; -import org.eigenbase.rex.RexFieldAccess; -import org.eigenbase.rex.RexInputRef; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.rex.RexLocalRef; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexOver; -import org.eigenbase.rex.RexRangeRef; -import org.eigenbase.rex.RexVisitorImpl; -import org.eigenbase.sql.SqlSyntax; -import org.eigenbase.sql.fun.SqlStdOperatorTable; -import org.eigenbase.sql.type.SqlTypeName; -import org.eigenbase.util.NlsString; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexCorrelVariable; +import org.apache.calcite.rex.RexDynamicParam; +import org.apache.calcite.rex.RexFieldAccess; +import org.apache.calcite.rex.RexInputRef; +import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.rex.RexLocalRef; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexOver; +import org.apache.calcite.rex.RexRangeRef; +import org.apache.calcite.rex.RexVisitorImpl; +import org.apache.calcite.sql.SqlSyntax; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.util.NlsString; import com.google.common.collect.Lists; @@ -96,23 +95,7 @@ public class DrillOptiq { case BINARY: logger.debug("Binary"); final String funcName = call.getOperator().getName().toLowerCase(); - List<LogicalExpression> args = Lists.newArrayList(); - for(RexNode r : call.getOperands()){ - args.add(r.accept(this)); - } - - if (FunctionCallFactory.isBooleanOperator(funcName)) { - LogicalExpression func = FunctionCallFactory.createBooleanOperator(funcName, args); - return func; - } else { - args = Lists.reverse(args); - LogicalExpression lastArg = args.get(0); - for(int i = 1; i < args.size(); i++){ - lastArg = FunctionCallFactory.createExpression(funcName, Lists.newArrayList(args.get(i), lastArg)); - } - - return lastArg; - } + return doFunction(call, funcName); case FUNCTION: case FUNCTION_ID: logger.debug("Function"); @@ -190,12 +173,36 @@ public class DrillOptiq { } } + if (call.getOperator() == SqlStdOperatorTable.DATETIME_PLUS) { + return doFunction(call, "+"); + } + // fall through default: throw new AssertionError("todo: implement syntax " + syntax + "(" + call + ")"); } } + private LogicalExpression doFunction(RexCall call, String funcName) { + List<LogicalExpression> args = Lists.newArrayList(); + for(RexNode r : call.getOperands()){ + args.add(r.accept(this)); + } + + if (FunctionCallFactory.isBooleanOperator(funcName)) { + LogicalExpression func = FunctionCallFactory.createBooleanOperator(funcName, args); + return func; + } else { + args = Lists.reverse(args); + LogicalExpression lastArg = args.get(0); + for(int i = 1; i < args.size(); i++){ + lastArg = FunctionCallFactory.createExpression(funcName, Lists.newArrayList(args.get(i), lastArg)); + } + + return lastArg; + } + + } private LogicalExpression doUnknown(Object o){ logger.warn("Doesn't currently support consumption of {}.", o); return NullExpression.INSTANCE; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRel.java index 14ea8947a..26f366e92 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRel.java @@ -24,17 +24,16 @@ import org.apache.drill.common.logical.data.NamedExpression; import org.apache.drill.common.logical.data.Project; import org.apache.drill.exec.planner.common.DrillProjectRelBase; import org.apache.drill.exec.planner.torel.ConversionContext; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.ProjectRelBase; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.reltype.RelDataTypeFieldImpl; -import org.eigenbase.reltype.RelRecordType; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rel.type.RelDataTypeFieldImpl; +import org.apache.calcite.rel.type.RelRecordType; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.type.SqlTypeName; import com.google.common.collect.Lists; @@ -49,14 +48,14 @@ public class DrillProjectRel extends DrillProjectRelBase implements DrillRel { @Override - public ProjectRelBase copy(RelTraitSet traitSet, RelNode input, List<RexNode> exps, RelDataType rowType) { + public org.apache.calcite.rel.core.Project copy(RelTraitSet traitSet, RelNode input, List<RexNode> exps, RelDataType rowType) { return new DrillProjectRel(getCluster(), traitSet, input, exps, rowType); } @Override public LogicalOperator implement(DrillImplementor implementor) { - LogicalOperator inputOp = implementor.visitChild(this, 0, getChild()); + LogicalOperator inputOp = implementor.visitChild(this, 0, getInput()); Project.Builder builder = Project.builder(); builder.setInput(inputOp); for (NamedExpression e: this.getProjectExpressions(implementor.getContext())) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRule.java index 7cef038af..e44df333d 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRule.java @@ -17,27 +17,28 @@ */ package org.apache.drill.exec.planner.logical; -import org.eigenbase.rel.ProjectRel; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.core.Project; +import org.apache.calcite.rel.logical.LogicalProject; /** - * Rule that converts a {@link org.eigenbase.rel.ProjectRel} to a Drill "project" operation. + * Rule that converts a {@link org.apache.calcite.rel.logical.LogicalProject} to a Drill "project" operation. */ public class DrillProjectRule extends RelOptRule { public static final RelOptRule INSTANCE = new DrillProjectRule(); private DrillProjectRule() { - super(RelOptHelper.any(ProjectRel.class, Convention.NONE), "DrillProjectRule"); + super(RelOptHelper.any(LogicalProject.class, Convention.NONE), "DrillProjectRule"); } @Override public void onMatch(RelOptRuleCall call) { - final ProjectRel project = (ProjectRel) call.rel(0); - final RelNode input = project.getChild(); + final Project project = (Project) call.rel(0); + final RelNode input = project.getInput(); final RelTraitSet traits = project.getTraitSet().plus(DrillRel.DRILL_LOGICAL); final RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL)); call.transformTo(new DrillProjectRel(project.getCluster(), traits, convertedInput, project.getProjects(), project diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushFilterPastProjectRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushFilterPastProjectRule.java index e2310f7c2..3755ea123 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushFilterPastProjectRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushFilterPastProjectRule.java @@ -19,22 +19,19 @@ package org.apache.drill.exec.planner.logical; import java.util.List; -import org.apache.drill.common.expression.FieldReference; -import org.apache.drill.common.expression.SchemaPath; -import org.eigenbase.rel.CalcRel; -import org.eigenbase.rel.FilterRel; -import org.eigenbase.rel.ProjectRel; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexInputRef; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexVisitor; -import org.eigenbase.rex.RexVisitorImpl; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.util.Util; +import org.apache.calcite.rel.core.Filter; +import org.apache.calcite.rel.core.Project; +import org.apache.calcite.rel.logical.LogicalFilter; +import org.apache.calcite.rel.logical.LogicalProject; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexInputRef; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexVisitor; +import org.apache.calcite.rex.RexVisitorImpl; +import org.apache.calcite.util.Util; public class DrillPushFilterPastProjectRule extends RelOptRule { @@ -78,16 +75,16 @@ public class DrillPushFilterPastProjectRule extends RelOptRule { protected DrillPushFilterPastProjectRule() { super( operand( - FilterRel.class, - operand(ProjectRel.class, any()))); + LogicalFilter.class, + operand(LogicalProject.class, any()))); } //~ Methods ---------------------------------------------------------------- // implement RelOptRule public void onMatch(RelOptRuleCall call) { - FilterRel filterRel = call.rel(0); - ProjectRel projRel = call.rel(1); + Filter filterRel = call.rel(0); + Project projRel = call.rel(1); // Don't push Filter past Project if the Filter is referencing an ITEM expression // from the Project. @@ -101,15 +98,10 @@ public class DrillPushFilterPastProjectRule extends RelOptRule { RexNode newCondition = RelOptUtil.pushFilterPastProject(filterRel.getCondition(), projRel); - FilterRel newFilterRel = - new FilterRel( - filterRel.getCluster(), - projRel.getChild(), - newCondition); + Filter newFilterRel = LogicalFilter.create(projRel.getInput(), newCondition); - - ProjectRel newProjRel = - (ProjectRel) CalcRel.createProject( + Project newProjRel = + (Project) RelOptUtil.createProject( newFilterRel, projRel.getNamedProjects(), false); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushPartitionFilterIntoScan.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushPartitionFilterIntoScan.java index c6dceda1e..b83ceddc5 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushPartitionFilterIntoScan.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushPartitionFilterIntoScan.java @@ -29,10 +29,9 @@ import org.apache.drill.exec.planner.physical.PlannerSettings; import org.apache.drill.exec.planner.physical.PrelUtil; import org.apache.drill.exec.store.dfs.FileSelection; import org.apache.drill.exec.store.dfs.FormatSelection; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelOptRuleOperand; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRuleOperand; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjIntoScan.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjIntoScan.java index fcfced25c..379f6e97b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjIntoScan.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjIntoScan.java @@ -21,19 +21,16 @@ package org.apache.drill.exec.planner.logical; import java.io.IOException; import java.util.List; -import net.hydromatic.optiq.rules.java.JavaRules.EnumerableTableAccessRel; - +import org.apache.calcite.adapter.enumerable.EnumerableTableScan; +import org.apache.calcite.rel.core.Project; +import org.apache.calcite.rel.logical.LogicalProject; +import org.apache.calcite.rel.rules.ProjectRemoveRule; import org.apache.drill.common.exceptions.DrillRuntimeException; import org.apache.drill.exec.planner.physical.PrelUtil; import org.apache.drill.exec.planner.physical.PrelUtil.ProjectPushInfo; -import org.eigenbase.rel.ProjectRel; -import org.eigenbase.rel.ProjectRelBase; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.rules.PushProjector; -import org.eigenbase.rel.rules.RemoveTrivialProjectRule; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rex.RexNode; import com.google.common.collect.Lists; @@ -41,14 +38,14 @@ public class DrillPushProjIntoScan extends RelOptRule { public static final RelOptRule INSTANCE = new DrillPushProjIntoScan(); private DrillPushProjIntoScan() { - super(RelOptHelper.some(ProjectRel.class, RelOptHelper.any(EnumerableTableAccessRel.class)), "DrillPushProjIntoScan"); + super(RelOptHelper.some(LogicalProject.class, RelOptHelper.any(EnumerableTableScan.class)), "DrillPushProjIntoScan"); } @Override public void onMatch(RelOptRuleCall call) { - final ProjectRel proj = (ProjectRel) call.rel(0); - final EnumerableTableAccessRel scan = (EnumerableTableAccessRel) call.rel(1); + final Project proj = (Project) call.rel(0); + final EnumerableTableScan scan = (EnumerableTableScan) call.rel(1); try { ProjectPushInfo columnInfo = PrelUtil.getColumns(scan.getRowType(), proj.getProjects()); @@ -63,7 +60,7 @@ public class DrillPushProjIntoScan extends RelOptRule { new DrillScanRel(scan.getCluster(), scan.getTraitSet().plus(DrillRel.DRILL_LOGICAL), scan.getTable(), - columnInfo.createNewRowType(proj.getChild().getCluster().getTypeFactory()), + columnInfo.createNewRowType(proj.getInput().getCluster().getTypeFactory()), columnInfo.columns); @@ -79,7 +76,7 @@ public class DrillPushProjIntoScan extends RelOptRule { newProjects, proj.getRowType()); - if (RemoveTrivialProjectRule.isTrivial(newProj)) { + if (ProjectRemoveRule.isTrivial(newProj)) { call.transformTo(newScan); } else { call.transformTo(newProj); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjectPastFilterRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjectPastFilterRule.java index 29e65591e..4f950d3d3 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjectPastFilterRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjectPastFilterRule.java @@ -17,11 +17,11 @@ */ package org.apache.drill.exec.planner.logical; -import org.eigenbase.rel.rules.PushProjectPastFilterRule; -import org.eigenbase.rel.rules.PushProjector; -import org.eigenbase.relopt.RelOptRule; +import org.apache.calcite.rel.rules.ProjectFilterTransposeRule; +import org.apache.calcite.rel.rules.PushProjector; +import org.apache.calcite.plan.RelOptRule; -public class DrillPushProjectPastFilterRule extends PushProjectPastFilterRule { +public class DrillPushProjectPastFilterRule extends ProjectFilterTransposeRule { public final static RelOptRule INSTANCE = new DrillPushProjectPastFilterRule(DrillConditions.PRESERVE_ITEM); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjectPastJoinRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjectPastJoinRule.java index 7296d08bd..e27360f4f 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjectPastJoinRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjectPastJoinRule.java @@ -17,11 +17,11 @@ */ package org.apache.drill.exec.planner.logical; -import org.eigenbase.rel.rules.PushProjectPastJoinRule; -import org.eigenbase.rel.rules.PushProjector; -import org.eigenbase.relopt.RelOptRule; +import org.apache.calcite.rel.rules.ProjectJoinTransposeRule; +import org.apache.calcite.rel.rules.PushProjector; +import org.apache.calcite.plan.RelOptRule; -public class DrillPushProjectPastJoinRule extends PushProjectPastJoinRule { +public class DrillPushProjectPastJoinRule extends ProjectJoinTransposeRule { public static final RelOptRule INSTANCE = new DrillPushProjectPastJoinRule(DrillConditions.PRESERVE_ITEM); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillReduceAggregatesRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillReduceAggregatesRule.java index 983240646..9ba01a847 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillReduceAggregatesRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillReduceAggregatesRule.java @@ -26,31 +26,32 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.google.common.collect.Lists; +import org.apache.calcite.rel.core.Aggregate; +import org.apache.calcite.rel.logical.LogicalAggregate; +import org.apache.calcite.sql.fun.SqlCountAggFunction; +import org.apache.calcite.sql.type.SqlTypeName; import org.apache.drill.exec.planner.sql.DrillSqlOperator; -import org.eigenbase.rel.AggregateCall; -import org.eigenbase.rel.AggregateRel; -import org.eigenbase.rel.AggregateRelBase; -import org.eigenbase.rel.CalcRel; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelOptRuleOperand; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.SqlAggFunction; -import org.eigenbase.sql.fun.SqlAvgAggFunction; -import org.eigenbase.sql.fun.SqlStdOperatorTable; -import org.eigenbase.sql.fun.SqlSumAggFunction; -import org.eigenbase.sql.fun.SqlSumEmptyIsZeroAggFunction; -import org.eigenbase.sql.type.SqlTypeName; -import org.eigenbase.util.CompositeList; -import org.eigenbase.util.ImmutableIntList; -import org.eigenbase.util.Util; +import org.apache.calcite.rel.core.AggregateCall; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRuleOperand; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.SqlAggFunction; +import org.apache.calcite.sql.fun.SqlAvgAggFunction; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.sql.fun.SqlSumAggFunction; +import org.apache.calcite.sql.fun.SqlSumEmptyIsZeroAggFunction; +import org.apache.calcite.sql.type.SqlTypeUtil; +import org.apache.calcite.util.CompositeList; +import org.apache.calcite.util.ImmutableIntList; +import org.apache.calcite.util.Util; import com.google.common.collect.ImmutableList; @@ -65,7 +66,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { * The singleton. */ public static final DrillReduceAggregatesRule INSTANCE = - new DrillReduceAggregatesRule(operand(AggregateRel.class, any())); + new DrillReduceAggregatesRule(operand(LogicalAggregate.class, any())); private static final DrillSqlOperator CastHighOp = new DrillSqlOperator("CastHigh", 1, false); @@ -82,13 +83,13 @@ public class DrillReduceAggregatesRule extends RelOptRule { if (!super.matches(call)) { return false; } - AggregateRelBase oldAggRel = (AggregateRelBase) call.rels[0]; + Aggregate oldAggRel = (Aggregate) call.rels[0]; return containsAvgStddevVarCall(oldAggRel.getAggCallList()); } @Override public void onMatch(RelOptRuleCall ruleCall) { - AggregateRelBase oldAggRel = (AggregateRelBase) ruleCall.rels[0]; + Aggregate oldAggRel = (Aggregate) ruleCall.rels[0]; reduceAggs(ruleCall, oldAggRel); } @@ -127,7 +128,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { */ private void reduceAggs( RelOptRuleCall ruleCall, - AggregateRelBase oldAggRel) { + Aggregate oldAggRel) { RexBuilder rexBuilder = oldAggRel.getCluster().getRexBuilder(); List<AggregateCall> oldCalls = oldAggRel.getAggCallList(); @@ -150,7 +151,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { // List of input expressions. If a particular aggregate needs more, it // will add an expression to the end, and we will create an extra // project. - RelNode input = oldAggRel.getChild(); + RelNode input = oldAggRel.getInput(); List<RexNode> inputExprs = new ArrayList<RexNode>(); for (RelDataTypeField field : input.getRowType().getFieldList()) { inputExprs.add( @@ -169,7 +170,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { inputExprs.size() - input.getRowType().getFieldCount(); if (extraArgCount > 0) { input = - CalcRel.createProject( + RelOptUtil.createProject( input, inputExprs, CompositeList.of( @@ -178,12 +179,12 @@ public class DrillReduceAggregatesRule extends RelOptRule { extraArgCount, null))); } - AggregateRelBase newAggRel = + Aggregate newAggRel = newAggregateRel( oldAggRel, input, newCalls); RelNode projectRel = - CalcRel.createProject( + RelOptUtil.createProject( newAggRel, projList, oldAggRel.getRowType().getFieldNames()); @@ -192,7 +193,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { } private RexNode reduceAgg( - AggregateRelBase oldAggRel, + Aggregate oldAggRel, AggregateCall oldCall, List<AggregateCall> newCalls, Map<AggregateCall, RexNode> aggCallMapping, @@ -261,6 +262,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { return rexBuilder.addAggCall( oldCall, nGroups, + oldAggRel.indicator, newCalls, aggCallMapping, oldArgTypes); @@ -268,7 +270,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { } private RexNode reduceAvg( - AggregateRelBase oldAggRel, + Aggregate oldAggRel, AggregateCall oldCall, List<AggregateCall> newCalls, Map<AggregateCall, RexNode> aggCallMapping) { @@ -279,14 +281,14 @@ public class DrillReduceAggregatesRule extends RelOptRule { int iAvgInput = oldCall.getArgList().get(0); RelDataType avgInputType = getFieldType( - oldAggRel.getChild(), + oldAggRel.getInput(), iAvgInput); RelDataType sumType = typeFactory.createTypeWithNullability( avgInputType, avgInputType.isNullable() || nGroups == 0); // SqlAggFunction sumAgg = new SqlSumAggFunction(sumType); - SqlAggFunction sumAgg = new SqlSumEmptyIsZeroAggFunction(sumType); + SqlAggFunction sumAgg = new SqlSumEmptyIsZeroAggFunction(); AggregateCall sumCall = new AggregateCall( sumAgg, @@ -294,8 +296,8 @@ public class DrillReduceAggregatesRule extends RelOptRule { oldCall.getArgList(), sumType, null); - SqlAggFunction countAgg = SqlStdOperatorTable.COUNT; - RelDataType countType = countAgg.getReturnType(typeFactory); + final SqlCountAggFunction countAgg = (SqlCountAggFunction) SqlStdOperatorTable.COUNT; + final RelDataType countType = countAgg.getReturnType(typeFactory); AggregateCall countCall = new AggregateCall( countAgg, @@ -308,6 +310,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { rexBuilder.addAggCall( sumCall, nGroups, + oldAggRel.indicator, newCalls, aggCallMapping, ImmutableList.of(avgInputType)); @@ -316,6 +319,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { rexBuilder.addAggCall( countCall, nGroups, + oldAggRel.indicator, newCalls, aggCallMapping, ImmutableList.of(avgInputType)); @@ -345,6 +349,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { rexBuilder.addAggCall( countCall, nGroups, + oldAggRel.indicator, newCalls, aggCallMapping, ImmutableList.of(avgInputType)); @@ -358,7 +363,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { } private RexNode reduceSum( - AggregateRelBase oldAggRel, + Aggregate oldAggRel, AggregateCall oldCall, List<AggregateCall> newCalls, Map<AggregateCall, RexNode> aggCallMapping) { @@ -369,12 +374,12 @@ public class DrillReduceAggregatesRule extends RelOptRule { int arg = oldCall.getArgList().get(0); RelDataType argType = getFieldType( - oldAggRel.getChild(), + oldAggRel.getInput(), arg); RelDataType sumType = typeFactory.createTypeWithNullability( argType, argType.isNullable()); - SqlAggFunction sumZeroAgg = new SqlSumEmptyIsZeroAggFunction(sumType); + SqlAggFunction sumZeroAgg = new SqlSumEmptyIsZeroAggFunction(); AggregateCall sumZeroCall = new AggregateCall( sumZeroAgg, @@ -382,8 +387,8 @@ public class DrillReduceAggregatesRule extends RelOptRule { oldCall.getArgList(), sumType, null); - SqlAggFunction countAgg = SqlStdOperatorTable.COUNT; - RelDataType countType = countAgg.getReturnType(typeFactory); + final SqlCountAggFunction countAgg = (SqlCountAggFunction) SqlStdOperatorTable.COUNT; + final RelDataType countType = countAgg.getReturnType(typeFactory); AggregateCall countCall = new AggregateCall( countAgg, @@ -398,6 +403,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { rexBuilder.addAggCall( sumZeroCall, nGroups, + oldAggRel.indicator, newCalls, aggCallMapping, ImmutableList.of(argType)); @@ -411,6 +417,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { rexBuilder.addAggCall( countCall, nGroups, + oldAggRel.indicator, newCalls, aggCallMapping, ImmutableList.of(argType)); @@ -422,7 +429,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { } private RexNode reduceStddev( - AggregateRelBase oldAggRel, + Aggregate oldAggRel, AggregateCall oldCall, boolean biased, boolean sqrt, @@ -449,7 +456,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { final int argOrdinal = oldCall.getArgList().get(0); final RelDataType argType = getFieldType( - oldAggRel.getChild(), + oldAggRel.getInput(), argOrdinal); // final RexNode argRef = inputExprs.get(argOrdinal); @@ -476,6 +483,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { rexBuilder.addAggCall( sumArgSquaredAggCall, nGroups, + oldAggRel.indicator, newCalls, aggCallMapping, ImmutableList.of(argType)); @@ -491,6 +499,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { rexBuilder.addAggCall( sumArgAggCall, nGroups, + oldAggRel.indicator, newCalls, aggCallMapping, ImmutableList.of(argType)); @@ -499,7 +508,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { rexBuilder.makeCall( SqlStdOperatorTable.MULTIPLY, sumArg, sumArg); - final SqlAggFunction countAgg = SqlStdOperatorTable.COUNT; + final SqlCountAggFunction countAgg = (SqlCountAggFunction) SqlStdOperatorTable.COUNT; final RelDataType countType = countAgg.getReturnType(typeFactory); final AggregateCall countArgAggCall = new AggregateCall( @@ -512,6 +521,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { rexBuilder.addAggCall( countArgAggCall, nGroups, + oldAggRel.indicator, newCalls, aggCallMapping, ImmutableList.of(argType)); @@ -590,7 +600,7 @@ public class DrillReduceAggregatesRule extends RelOptRule { /** * Do a shallow clone of oldAggRel and update aggCalls. Could be refactored - * into AggregateRelBase and subclasses - but it's only needed for some + * into Aggregate and subclasses - but it's only needed for some * subclasses. * * @param oldAggRel AggregateRel to clone. @@ -598,15 +608,11 @@ public class DrillReduceAggregatesRule extends RelOptRule { * @param newCalls New list of AggregateCalls * @return shallow clone with new list of AggregateCalls. */ - protected AggregateRelBase newAggregateRel( - AggregateRelBase oldAggRel, + protected Aggregate newAggregateRel( + Aggregate oldAggRel, RelNode inputRel, List<AggregateCall> newCalls) { - return new AggregateRel( - oldAggRel.getCluster(), - inputRel, - oldAggRel.getGroupSet(), - newCalls); + return LogicalAggregate.create(inputRel, oldAggRel.indicator, oldAggRel.getGroupSet(), oldAggRel.getGroupSets(), newCalls); } private RelDataType getFieldType(RelNode relNode, int i) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillReduceExpressionsRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillReduceExpressionsRule.java index 29175e5c7..352760116 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillReduceExpressionsRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillReduceExpressionsRule.java @@ -17,13 +17,15 @@ ******************************************************************************/ package org.apache.drill.exec.planner.logical; -import org.eigenbase.rel.CalcRel; -import org.eigenbase.rel.FilterRel; -import org.eigenbase.rel.RelCollationImpl; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.SingleRel; -import org.eigenbase.rel.SortRel; -import org.eigenbase.rel.rules.ReduceExpressionsRule; +import org.apache.calcite.rel.core.Calc; +import org.apache.calcite.rel.logical.LogicalCalc; +import org.apache.calcite.rel.core.Filter; +import org.apache.calcite.rel.RelCollationImpl; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.SingleRel; +import org.apache.calcite.rel.core.Sort; +import org.apache.calcite.rel.logical.LogicalSort; +import org.apache.calcite.rel.rules.ReduceExpressionsRule; import java.math.BigDecimal; @@ -48,7 +50,7 @@ public class DrillReduceExpressionsRule { * expose the planning time known schema. Instead we have to insert a limit 0. */ @Override - protected RelNode createEmptyRelOrEquivalent(FilterRel filter) { + protected RelNode createEmptyRelOrEquivalent(Filter filter) { return createEmptyEmptyRelHelper(filter); } @@ -67,16 +69,14 @@ public class DrillReduceExpressionsRule { * expose the planning time known schema. Instead we have to insert a limit 0. */ @Override - protected RelNode createEmptyRelOrEquivalent(CalcRel calc) { + protected RelNode createEmptyRelOrEquivalent(Calc calc) { return createEmptyEmptyRelHelper(calc); } } private static RelNode createEmptyEmptyRelHelper(SingleRel input) { - return new SortRel(input.getCluster(), input.getTraitSet(), - input.getChild(), - RelCollationImpl.EMPTY, + return LogicalSort.create(input.getInput(), RelCollationImpl.EMPTY, input.getCluster().getRexBuilder().makeExactLiteral(BigDecimal.valueOf(0)), input.getCluster().getRexBuilder().makeExactLiteral(BigDecimal.valueOf(0))); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRel.java index 7ed7885ff..9996dfb33 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRel.java @@ -19,7 +19,7 @@ package org.apache.drill.exec.planner.logical; import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.exec.planner.common.DrillRelNode; -import org.eigenbase.relopt.Convention; +import org.apache.calcite.plan.Convention; /** * Relational expression that is implemented in Drill. diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java index 84a0b51ee..41de736d2 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java @@ -21,8 +21,16 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import net.hydromatic.optiq.tools.RuleSet; - +import org.apache.calcite.rel.rules.AggregateExpandDistinctAggregatesRule; +import org.apache.calcite.rel.rules.AggregateRemoveRule; +import org.apache.calcite.rel.rules.FilterJoinRule; +import org.apache.calcite.rel.rules.JoinPushThroughJoinRule; +import org.apache.calcite.rel.rules.ProjectRemoveRule; +import org.apache.calcite.rel.rules.ReduceExpressionsRule; +import org.apache.calcite.rel.rules.SortRemoveRule; +import org.apache.calcite.tools.RuleSet; + +import org.apache.calcite.rel.rules.FilterMergeRule; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.planner.logical.partition.PruneScanRule; import org.apache.drill.exec.planner.physical.ConvertCountToDirectScan; @@ -43,18 +51,9 @@ import org.apache.drill.exec.planner.physical.ValuesPrule; import org.apache.drill.exec.planner.physical.WindowPrule; import org.apache.drill.exec.planner.physical.UnionAllPrule; import org.apache.drill.exec.planner.physical.WriterPrule; -import org.eigenbase.rel.RelFactories; -import org.eigenbase.rel.rules.MergeFilterRule; -import org.eigenbase.rel.rules.MergeProjectRule; -import org.eigenbase.rel.rules.PushFilterPastJoinRule; -import org.eigenbase.rel.rules.PushJoinThroughJoinRule; -import org.eigenbase.rel.rules.ReduceExpressionsRule; -import org.eigenbase.rel.rules.RemoveDistinctAggregateRule; -import org.eigenbase.rel.rules.RemoveDistinctRule; -import org.eigenbase.rel.rules.RemoveSortRule; -import org.eigenbase.rel.rules.RemoveTrivialProjectRule; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.volcano.AbstractConverter.ExpandConversionRule; +import org.apache.calcite.rel.core.RelFactories; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.volcano.AbstractConverter.ExpandConversionRule; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet.Builder; @@ -121,26 +120,26 @@ public class DrillRuleSets { // Add support for WHERE style joins. // PushFilterPastProjectRule.INSTANCE, // Replaced by DrillPushFilterPastProjectRule DrillPushFilterPastProjectRule.INSTANCE, - PushFilterPastJoinRule.FILTER_ON_JOIN, - PushFilterPastJoinRule.JOIN, - PushJoinThroughJoinRule.RIGHT, - PushJoinThroughJoinRule.LEFT, + FilterJoinRule.FILTER_ON_JOIN, // PushFilterPastJoinRule + FilterJoinRule.JOIN, // PushFilterPastJoinRule + JoinPushThroughJoinRule.RIGHT, // PushJoinThroughJoinRule + JoinPushThroughJoinRule.LEFT, // PushJoinThroughJoinRule // End support for WHERE style joins. //Add back rules - DrillMergeFilterRule.INSTANCE, + FilterMergeRule.INSTANCE, // MergeFilterRule. TODO: NO NEED OF DRILL'S version? ExpandConversionRule.INSTANCE, // SwapJoinRule.INSTANCE, - RemoveDistinctRule.INSTANCE, + AggregateRemoveRule.INSTANCE, // RemoveDistinctRule // UnionToDistinctRule.INSTANCE, - RemoveTrivialProjectRule.INSTANCE, + ProjectRemoveRule.INSTANCE, // RemoveTrivialProjectRule // RemoveTrivialCalcRule.INSTANCE, - RemoveSortRule.INSTANCE, + SortRemoveRule.INSTANCE, //RemoveSortRule.INSTANCE, // TableAccessRule.INSTANCE, // //MergeProjectRule.INSTANCE, // DrillMergeProjectRule.getInstance(true, RelFactories.DEFAULT_PROJECT_FACTORY, context.getFunctionRegistry()), - RemoveDistinctAggregateRule.INSTANCE, // + AggregateExpandDistinctAggregatesRule.INSTANCE, //RemoveDistinctAggregateRule.INSTANCE, // // ReduceAggregatesRule.INSTANCE, // replaced by DrillReduceAggregatesRule DrillValuesRule.INSTANCE, @@ -149,7 +148,7 @@ public class DrillRuleSets { */ // PushProjectPastFilterRule.INSTANCE, DrillPushProjectPastFilterRule.INSTANCE, -// PushProjectPastJoinRule.INSTANCE, +// ProjectJoinTransposeRule.INSTANCE, DrillPushProjectPastJoinRule.INSTANCE, // SwapJoinRule.INSTANCE, // diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillScanRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillScanRel.java index ab3d61b50..a724e2354 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillScanRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillScanRel.java @@ -31,13 +31,13 @@ import org.apache.drill.exec.planner.common.DrillScanRelBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.planner.physical.PrelUtil; import org.apache.drill.exec.planner.torel.ConversionContext; -import org.eigenbase.rel.RelWriter; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelOptTable; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; +import org.apache.calcite.rel.RelWriter; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelOptTable; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillScanRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillScanRule.java index d71019aff..9a63cb27b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillScanRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillScanRule.java @@ -17,22 +17,22 @@ */ package org.apache.drill.exec.planner.logical; -import net.hydromatic.optiq.rules.java.JavaRules.EnumerableTableAccessRel; +import org.apache.calcite.adapter.enumerable.EnumerableTableScan; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; public class DrillScanRule extends RelOptRule { public static final RelOptRule INSTANCE = new DrillScanRule(); private DrillScanRule() { - super(RelOptHelper.any(EnumerableTableAccessRel.class), "DrillTableRule"); + super(RelOptHelper.any(EnumerableTableScan.class), "DrillTableRule"); } @Override public void onMatch(RelOptRuleCall call) { - final EnumerableTableAccessRel access = (EnumerableTableAccessRel) call.rel(0); + final EnumerableTableScan access = (EnumerableTableScan) call.rel(0); final RelTraitSet traits = access.getTraitSet().plus(DrillRel.DRILL_LOGICAL); call.transformTo(new DrillScanRel(access.getCluster(), traits, access.getTable())); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillScreenRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillScreenRel.java index 28f4205a2..d26c3b0db 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillScreenRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillScreenRel.java @@ -22,9 +22,9 @@ import java.util.List; import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.common.logical.data.Store; import org.apache.drill.exec.planner.common.DrillScreenRelBase; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,7 +42,7 @@ public class DrillScreenRel extends DrillScreenRelBase implements DrillRel { @Override public LogicalOperator implement(DrillImplementor implementor) { - LogicalOperator childOp = implementor.visitChild(this, 0, getChild()); + LogicalOperator childOp = implementor.visitChild(this, 0, getInput()); return Store.builder().setInput(childOp).storageEngine("--SCREEN--").build(); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillSortRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillSortRel.java index 830f5f24d..3436aba89 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillSortRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillSortRel.java @@ -25,15 +25,15 @@ import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.common.logical.data.Order; import org.apache.drill.common.logical.data.Order.Ordering; import org.apache.drill.exec.planner.torel.ConversionContext; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelCollation; -import org.eigenbase.rel.RelCollationImpl; -import org.eigenbase.rel.RelFieldCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.SortRel; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelCollationImpl; +import org.apache.calcite.rel.RelFieldCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Sort; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexNode; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -41,7 +41,7 @@ import com.google.common.collect.Maps; /** * Sort implemented in Drill. */ -public class DrillSortRel extends SortRel implements DrillRel { +public class DrillSortRel extends Sort implements DrillRel { /** Creates a DrillSortRel. */ public DrillSortRel(RelOptCluster cluster, RelTraitSet traits, RelNode input, RelCollation collation) { @@ -61,9 +61,9 @@ public class DrillSortRel extends SortRel implements DrillRel { @Override public LogicalOperator implement(DrillImplementor implementor) { final Order.Builder builder = Order.builder(); - builder.setInput(implementor.visitChild(this, 0, getChild())); + builder.setInput(implementor.visitChild(this, 0, getInput())); - final List<String> childFields = getChild().getRowType().getFieldNames(); + final List<String> childFields = getInput().getRowType().getFieldNames(); for(RelFieldCollation fieldCollation : this.collation.getFieldCollations()){ builder.addOrdering(fieldCollation.getDirection(), new FieldReference(childFields.get(fieldCollation.getFieldIndex())), diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillSortRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillSortRule.java index f968dbb24..5ae2b395d 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillSortRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillSortRule.java @@ -17,35 +17,35 @@ */ package org.apache.drill.exec.planner.logical; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.SortRel; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Sort; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; /** - * Rule that converts an {@link SortRel} to a {@link DrillSortRel}, implemented by a Drill "order" operation. + * Rule that converts an {@link Sort} to a {@link DrillSortRel}, implemented by a Drill "order" operation. */ public class DrillSortRule extends RelOptRule { public static final RelOptRule INSTANCE = new DrillSortRule(); private DrillSortRule() { - super(RelOptHelper.any(SortRel.class, Convention.NONE), "DrillSortRule"); + super(RelOptHelper.any(Sort.class, Convention.NONE), "DrillSortRule"); } @Override public boolean matches(RelOptRuleCall call) { - final SortRel sort = call.rel(0); + final Sort sort = call.rel(0); return sort.offset == null && sort.fetch == null; } @Override public void onMatch(RelOptRuleCall call) { - final SortRel sort = call.rel(0); + final Sort sort = call.rel(0); - final RelNode input = sort.getChild(); + final RelNode input = sort.getInput(); final RelTraitSet traits = sort.getTraitSet().plus(DrillRel.DRILL_LOGICAL); final RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL)); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillStoreRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillStoreRel.java index 6295eaba9..7c498f395 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillStoreRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillStoreRel.java @@ -19,14 +19,14 @@ package org.apache.drill.exec.planner.logical; import java.util.List; -import net.hydromatic.optiq.prepare.Prepare.CatalogReader; +import org.apache.calcite.prepare.Prepare.CatalogReader; import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.exec.planner.common.DrillStoreRelBase; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptTable; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptTable; +import org.apache.calcite.plan.RelTraitSet; public class DrillStoreRel extends DrillStoreRelBase implements DrillRel{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(DrillStoreRel.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillTable.java index 5451ca0df..3fdbb5729 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillTable.java @@ -19,18 +19,17 @@ package org.apache.drill.exec.planner.logical; import java.io.IOException; -import net.hydromatic.optiq.Schema.TableType; -import net.hydromatic.optiq.Statistic; -import net.hydromatic.optiq.Statistics; -import net.hydromatic.optiq.Table; +import org.apache.calcite.schema.Schema.TableType; +import org.apache.calcite.schema.Statistic; +import org.apache.calcite.schema.Statistics; +import org.apache.calcite.schema.Table; import org.apache.drill.common.JSONOptions; import org.apache.drill.common.logical.StoragePluginConfig; import org.apache.drill.exec.physical.base.GroupScan; import org.apache.drill.exec.store.StoragePlugin; -import org.apache.drill.exec.util.ImpersonationUtil; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptTable; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptTable; public abstract class DrillTable implements Table { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRel.java index 39d5d4d0a..566c55846 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRel.java @@ -19,18 +19,18 @@ package org.apache.drill.exec.planner.logical; import java.util.List; -import net.hydromatic.linq4j.Ord; +import org.apache.calcite.linq4j.Ord; import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.common.logical.data.Union; import org.apache.drill.exec.planner.common.DrillUnionRelBase; import org.apache.drill.exec.planner.torel.ConversionContext; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; /** * Union implemented in Drill. diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRule.java index f71d2032c..e0f9e2dd9 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRule.java @@ -22,29 +22,29 @@ import java.util.List; import java.util.logging.Logger; import org.apache.drill.exec.planner.common.DrillUnionRelBase; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.UnionRel; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.trace.EigenbaseTrace; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.logical.LogicalUnion; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.util.trace.CalciteTrace; /** - * Rule that converts a {@link UnionRel} to a {@link DrillUnionRelBase}, implemented by a "union" operation. + * Rule that converts a {@link LogicalUnion} to a {@link DrillUnionRelBase}, implemented by a "union" operation. */ public class DrillUnionRule extends RelOptRule { public static final RelOptRule INSTANCE = new DrillUnionRule(); - protected static final Logger tracer = EigenbaseTrace.getPlannerTracer(); + protected static final Logger tracer = CalciteTrace.getPlannerTracer(); private DrillUnionRule() { - super(RelOptHelper.any(UnionRel.class, Convention.NONE), "DrillUnionRule"); + super(RelOptHelper.any(LogicalUnion.class, Convention.NONE), "DrillUnionRule"); } @Override public void onMatch(RelOptRuleCall call) { - final UnionRel union = (UnionRel) call.rel(0); + final LogicalUnion union = (LogicalUnion) call.rel(0); final RelTraitSet traits = union.getTraitSet().plus(DrillRel.DRILL_LOGICAL); final List<RelNode> convertedInputs = new ArrayList<>(); for (RelNode input : union.getInputs()) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillValuesRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillValuesRel.java index 4fbc4d4e9..cd259d7ef 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillValuesRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillValuesRel.java @@ -24,34 +24,34 @@ import java.math.BigDecimal; import java.util.GregorianCalendar; import java.util.List; +import com.google.common.collect.ImmutableList; +import org.apache.calcite.rel.AbstractRelNode; +import org.apache.calcite.rel.RelWriter; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.sql.SqlExplainLevel; +import org.apache.calcite.sql.type.SqlTypeUtil; +import org.apache.calcite.util.NlsString; +import org.apache.calcite.util.Pair; import org.apache.drill.common.JSONOptions; import org.apache.drill.common.exceptions.DrillRuntimeException; import org.apache.drill.common.logical.data.LogicalOperator; -import org.apache.drill.common.logical.data.Values; -import org.apache.drill.exec.vector.complex.fn.ExtendedJsonOutput; -import org.apache.drill.exec.vector.complex.fn.JsonOutput; -import org.eigenbase.rel.AbstractRelNode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.RelWriter; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.sql.SqlExplainLevel; -import org.eigenbase.sql.type.SqlTypeUtil; -import org.eigenbase.util.NlsString; -import org.eigenbase.util.Pair; -import org.joda.time.DateTime; -import org.joda.time.Period; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rex.RexLiteral; import com.fasterxml.jackson.core.JsonLocation; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.util.TokenBuffer; -import com.google.common.base.Functions; +import org.apache.drill.common.logical.data.Values; +import org.apache.drill.exec.vector.complex.fn.ExtendedJsonOutput; +import org.apache.drill.exec.vector.complex.fn.JsonOutput; +import org.joda.time.DateTime; +import org.joda.time.Period; /** * Values implemented in Drill. @@ -65,7 +65,7 @@ public class DrillValuesRel extends AbstractRelNode implements DrillRel { private final JSONOptions options; private final double rowCount; - protected DrillValuesRel(RelOptCluster cluster, RelDataType rowType, List<List<RexLiteral>> tuples, RelTraitSet traits) { + protected DrillValuesRel(RelOptCluster cluster, RelDataType rowType, ImmutableList<ImmutableList<RexLiteral>> tuples, RelTraitSet traits) { super(cluster, traits); assert getConvention() == DRILL_LOGICAL; verifyRowType(tuples, rowType); @@ -88,7 +88,7 @@ public class DrillValuesRel extends AbstractRelNode implements DrillRel { this.rowType = rowType; } - private static void verifyRowType(final List<List<RexLiteral>> tuples, RelDataType rowType){ + private static void verifyRowType(final ImmutableList<ImmutableList<RexLiteral>> tuples, RelDataType rowType){ for (List<RexLiteral> tuple : tuples) { assert (tuple.size() == rowType.getFieldCount()); @@ -138,7 +138,7 @@ public class DrillValuesRel extends AbstractRelNode implements DrillRel { .itemIf("tuples", options.asNode(), pw.getDetailLevel() == SqlExplainLevel.ALL_ATTRIBUTES); } - private static JsonNode convertToJsonNode(RelDataType rowType, List<List<RexLiteral>> tuples) throws IOException{ + private static JsonNode convertToJsonNode(RelDataType rowType, ImmutableList<ImmutableList<RexLiteral>> tuples) throws IOException{ TokenBuffer out = new TokenBuffer(MAPPER.getFactory().getCodec(), false); JsonOutput json = new ExtendedJsonOutput(out); json.writeStartArray(); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillValuesRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillValuesRule.java index d783f442b..066e57bb4 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillValuesRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillValuesRule.java @@ -17,25 +17,25 @@ */ package org.apache.drill.exec.planner.logical; -import org.eigenbase.rel.ValuesRel; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.logical.LogicalValues; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; /** - * Rule that converts a {@link ValuesRel} to a Drill "values" operation. + * Rule that converts a {@link LogicalValues} to a Drill "values" operation. */ public class DrillValuesRule extends RelOptRule { public static final RelOptRule INSTANCE = new DrillValuesRule(); private DrillValuesRule() { - super(RelOptHelper.any(ValuesRel.class, Convention.NONE), "DrillValuesRule"); + super(RelOptHelper.any(LogicalValues.class, Convention.NONE), "DrillValuesRule"); } @Override public void onMatch(RelOptRuleCall call) { - final ValuesRel values = (ValuesRel) call.rel(0); + final LogicalValues values = (LogicalValues) call.rel(0); final RelTraitSet traits = values.getTraitSet().plus(DrillRel.DRILL_LOGICAL); call.transformTo(new DrillValuesRel(values.getCluster(), values.getRowType(), values.getTuples(), traits)); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillViewTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillViewTable.java index 9c5a94f96..b25423ba2 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillViewTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillViewTable.java @@ -17,20 +17,20 @@ */ package org.apache.drill.exec.planner.logical; -import net.hydromatic.optiq.Schema.TableType; -import net.hydromatic.optiq.Statistic; -import net.hydromatic.optiq.Statistics; -import net.hydromatic.optiq.TranslatableTable; +import java.util.List; + +import org.apache.calcite.schema.Schema.TableType; +import org.apache.calcite.schema.Statistic; +import org.apache.calcite.schema.Statistics; +import org.apache.calcite.schema.TranslatableTable; import org.apache.drill.exec.dotdrill.View; -import org.apache.drill.exec.ops.ViewExpansionContext; -import org.apache.drill.exec.ops.ViewExpansionContext.ViewExpansionToken; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptTable; -import org.eigenbase.relopt.RelOptTable.ToRelContext; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptTable; +import org.apache.calcite.plan.RelOptTable.ToRelContext; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; public class DrillViewTable implements TranslatableTable, DrillViewInfoProvider { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(DrillViewTable.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRel.java index 113f98c45..58c42fc79 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRel.java @@ -19,8 +19,9 @@ package org.apache.drill.exec.planner.logical; import com.google.common.collect.Lists; -import net.hydromatic.linq4j.Ord; -import net.hydromatic.optiq.util.BitSets; +import com.sun.java.swing.plaf.windows.resources.windows; +import org.apache.calcite.linq4j.Ord; +import org.apache.calcite.util.BitSets; import org.apache.drill.common.expression.ExpressionPosition; import org.apache.drill.common.expression.FieldReference; import org.apache.drill.common.expression.FunctionCall; @@ -29,13 +30,13 @@ import org.apache.drill.common.expression.ValueExpressions; import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.common.logical.data.Order; import org.apache.drill.exec.planner.common.DrillWindowRelBase; -import org.eigenbase.rel.AggregateCall; -import org.eigenbase.rel.RelFieldCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.rex.RexLiteral; +import org.apache.calcite.rel.core.AggregateCall; +import org.apache.calcite.rel.RelFieldCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rex.RexLiteral; import java.util.List; @@ -47,7 +48,7 @@ public class DrillWindowRel extends DrillWindowRelBase implements DrillRel { * @param traits * @param child Input relational expression * @param rowType Output row type - * @param windows Windows + * @param groups Windows */ public DrillWindowRel( RelOptCluster cluster, @@ -55,33 +56,33 @@ public class DrillWindowRel extends DrillWindowRelBase implements DrillRel { RelNode child, List<RexLiteral> constants, RelDataType rowType, - List<Window> windows) { - super(cluster, traits, child, constants, rowType, windows); + List<Group> groups) { + super(cluster, traits, child, constants, rowType, groups); } @Override public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) { - return new DrillWindowRel(getCluster(), traitSet, sole(inputs), constants, getRowType(), windows); + return new DrillWindowRel(getCluster(), traitSet, sole(inputs), constants, getRowType(), groups); } @Override public LogicalOperator implement(DrillImplementor implementor) { - final LogicalOperator inputOp = implementor.visitChild(this, 0, getChild()); + final LogicalOperator inputOp = implementor.visitChild(this, 0, getInput()); org.apache.drill.common.logical.data.Window.Builder builder = new org.apache.drill.common.logical.data.Window.Builder(); final List<String> fields = getRowType().getFieldNames(); - final List<String> childFields = getChild().getRowType().getFieldNames(); - for (Window window : windows) { + final List<String> childFields = getInput().getRowType().getFieldNames(); + for (Group window : groups) { for(RelFieldCollation orderKey : window.orderKeys.getFieldCollations()) { builder.addOrdering(new Order.Ordering(orderKey.getDirection(), new FieldReference(fields.get(orderKey.getFieldIndex())))); } - for (int group : BitSets.toIter(window.groupSet)) { + for (int group : BitSets.toIter(window.keys)) { FieldReference fr = new FieldReference(childFields.get(group), ExpressionPosition.UNKNOWN); builder.addWithin(fr, fr); } - int groupCardinality = window.groupSet.cardinality(); + int groupCardinality = window.keys.cardinality(); for (Ord<AggregateCall> aggCall : Ord.zip(window.getAggregateCalls(this))) { FieldReference ref = new FieldReference(fields.get(groupCardinality + aggCall.i)); LogicalExpression expr = toDrill(aggCall.e, childFields); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRule.java index 847e87aa1..76939d913 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRule.java @@ -19,24 +19,24 @@ package org.apache.drill.exec.planner.logical; import com.google.common.collect.Lists; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.WindowRel; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexLiteral; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Window; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexLiteral; public class DrillWindowRule extends RelOptRule { public static final RelOptRule INSTANCE = new DrillWindowRule(); private DrillWindowRule() { - super(RelOptHelper.some(WindowRel.class, Convention.NONE, RelOptHelper.any(RelNode.class)), "DrillWindowRule"); + super(RelOptHelper.some(Window.class, Convention.NONE, RelOptHelper.any(RelNode.class)), "DrillWindowRule"); } @Override public void onMatch(RelOptRuleCall call) { - final WindowRel window = call.rel(0); + final Window window = call.rel(0); final RelNode input = call.rel(1); final RelTraitSet traits = window.getTraitSet().plus(DrillRel.DRILL_LOGICAL); final RelNode convertedInput = convert(input, traits); @@ -47,6 +47,6 @@ public class DrillWindowRule extends RelOptRule { convertedInput, Lists.<RexLiteral>newArrayList(), window.getRowType(), - window.windows)); + window.groups)); } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWriterRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWriterRel.java index 04dd13308..fc93c3e47 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWriterRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWriterRel.java @@ -22,9 +22,9 @@ import java.util.List; import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.common.logical.data.Writer; import org.apache.drill.exec.planner.common.DrillWriterRelBase; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; public class DrillWriterRel extends DrillWriterRelBase implements DrillRel { @@ -40,7 +40,7 @@ public class DrillWriterRel extends DrillWriterRelBase implements DrillRel { @Override public LogicalOperator implement(DrillImplementor implementor) { - LogicalOperator childOp = implementor.visitChild(this, 0, getChild()); + LogicalOperator childOp = implementor.visitChild(this, 0, getInput()); return Writer .builder() .setInput(childOp) diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DynamicDrillTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DynamicDrillTable.java index 24917f387..a7dad3538 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DynamicDrillTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DynamicDrillTable.java @@ -20,8 +20,8 @@ package org.apache.drill.exec.planner.logical; import org.apache.drill.exec.planner.types.RelDataTypeDrillImpl; import org.apache.drill.exec.planner.types.RelDataTypeHolder; import org.apache.drill.exec.store.StoragePlugin; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; public class DynamicDrillTable extends DrillTable{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(DynamicDrillTable.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/EnumerableDrillRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/EnumerableDrillRule.java index 131c60fbb..87d249342 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/EnumerableDrillRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/EnumerableDrillRule.java @@ -17,11 +17,11 @@ */ package org.apache.drill.exec.planner.logical; -import net.hydromatic.optiq.rules.java.EnumerableConvention; +import org.apache.calcite.adapter.enumerable.EnumerableConvention; import org.apache.drill.exec.planner.common.DrillScreenRelBase; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.convert.ConverterRule; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.convert.ConverterRule; /** * Rule that converts any Drill relational expression to enumerable format by adding a {@link DrillScreenRelBase}. diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/PartitionPruningUtil.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/PartitionPruningUtil.java index 88b4a5109..05ccfb9a4 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/PartitionPruningUtil.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/PartitionPruningUtil.java @@ -18,8 +18,8 @@ package org.apache.drill.exec.planner.logical; import org.apache.drill.exec.physical.base.GroupScan; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rex.RexNode; public class PartitionPruningUtil { public static void rewritePlan(RelOptRuleCall call, DrillFilterRel filterRel, DrillProjectRel projectRel, DrillScanRel scanRel, GroupScan newScan, DirPathBuilder builder) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/PreProcessLogicalRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/PreProcessLogicalRel.java index 60aa1dad4..0f8e45afd 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/PreProcessLogicalRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/PreProcessLogicalRel.java @@ -24,23 +24,23 @@ import org.apache.drill.exec.exception.UnsupportedOperatorCollector; import org.apache.drill.exec.planner.StarColumnHelper; import org.apache.drill.exec.planner.sql.DrillOperatorTable; import org.apache.drill.exec.work.foreman.SqlUnsupportedException; -import org.eigenbase.rel.AggregateCall; -import org.eigenbase.rel.AggregateRel; -import org.eigenbase.rel.ProjectRel; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.RelShuttleImpl; -import org.eigenbase.rel.UnionRel; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.SqlFunction; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.fun.SqlSingleValueAggFunction; -import org.eigenbase.util.NlsString; +import org.apache.calcite.rel.core.AggregateCall; +import org.apache.calcite.rel.logical.LogicalAggregate; +import org.apache.calcite.rel.logical.LogicalProject; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelShuttleImpl; +import org.apache.calcite.rel.logical.LogicalUnion; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.SqlFunction; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.fun.SqlSingleValueAggFunction; +import org.apache.calcite.util.NlsString; /** * This class rewrites all the project expression that contain convert_to/ convert_from @@ -67,7 +67,7 @@ public class PreProcessLogicalRel extends RelShuttleImpl { } @Override - public RelNode visit(AggregateRel aggregate) { + public RelNode visit(LogicalAggregate aggregate) { for(AggregateCall aggregateCall : aggregate.getAggCallList()) { if(aggregateCall.getAggregation() instanceof SqlSingleValueAggFunction) { unsupportedOperatorCollector.setException(SqlUnsupportedException.ExceptionType.FUNCTION, @@ -77,11 +77,11 @@ public class PreProcessLogicalRel extends RelShuttleImpl { } } - return visitChild(aggregate, 0, aggregate.getChild()); + return visitChild(aggregate, 0, aggregate.getInput()); } @Override - public RelNode visit(ProjectRel project) { + public RelNode visit(LogicalProject project) { List<RexNode> exprList = new ArrayList<>(); boolean rewrite = false; @@ -124,15 +124,15 @@ public class PreProcessLogicalRel extends RelShuttleImpl { } if (rewrite == true) { - ProjectRel newProject = project.copy(project.getTraitSet(), project.getInput(0), exprList, project.getRowType()); - return visitChild(newProject, 0, project.getChild()); + LogicalProject newProject = project.copy(project.getTraitSet(), project.getInput(0), exprList, project.getRowType()); + return visitChild(newProject, 0, project.getInput()); } - return visitChild(project, 0, project.getChild()); + return visitChild(project, 0, project.getInput()); } @Override - public RelNode visit(UnionRel union) { + public RelNode visit(LogicalUnion union) { for(RelNode child : union.getInputs()) { for(RelDataTypeField dataField : child.getRowType().getFieldList()) { if(dataField.getName().contains(StarColumnHelper.STAR_COLUMN)) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/RelOptHelper.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/RelOptHelper.java index 172ee2a21..9c72f21fb 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/RelOptHelper.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/RelOptHelper.java @@ -17,10 +17,10 @@ */ package org.apache.drill.exec.planner.logical; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleOperand; -import org.eigenbase.relopt.RelTrait; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleOperand; +import org.apache.calcite.plan.RelTrait; public class RelOptHelper { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(RelOptHelper.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/partition/FindPartitionConditions.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/partition/FindPartitionConditions.java index 5cf360a94..7dbadc9bc 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/partition/FindPartitionConditions.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/partition/FindPartitionConditions.java @@ -21,25 +21,22 @@ import java.util.ArrayDeque; import java.util.BitSet; import java.util.Deque; import java.util.List; -import java.util.Iterator; - -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexCorrelVariable; -import org.eigenbase.rex.RexDynamicParam; -import org.eigenbase.rex.RexFieldAccess; -import org.eigenbase.rex.RexInputRef; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexOver; -import org.eigenbase.rex.RexRangeRef; -import org.eigenbase.rex.RexVisitorImpl; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.fun.SqlRowOperator; -import org.eigenbase.sql.fun.SqlStdOperatorTable; -import org.eigenbase.util.Stacks; -import org.eigenbase.util.Util; + +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexCorrelVariable; +import org.apache.calcite.rex.RexDynamicParam; +import org.apache.calcite.rex.RexFieldAccess; +import org.apache.calcite.rex.RexInputRef; +import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexOver; +import org.apache.calcite.rex.RexRangeRef; +import org.apache.calcite.rex.RexVisitorImpl; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.fun.SqlRowOperator; +import org.apache.calcite.util.Util; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/partition/PruneScanRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/partition/PruneScanRule.java index 5fab35a81..c8be01984 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/partition/PruneScanRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/partition/PruneScanRule.java @@ -23,7 +23,8 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import net.hydromatic.optiq.util.BitSets; +import org.apache.calcite.rex.RexUtil; +import org.apache.calcite.util.BitSets; import org.apache.drill.common.expression.ErrorCollectorImpl; import org.apache.drill.common.expression.LogicalExpression; @@ -31,7 +32,6 @@ import org.apache.drill.common.types.TypeProtos.MinorType; import org.apache.drill.common.types.Types; import org.apache.drill.exec.expr.ExpressionTreeMaterializer; import org.apache.drill.exec.expr.fn.interpreter.InterpreterEvaluator; -import org.apache.drill.exec.expr.holders.NullableVarCharHolder; import org.apache.drill.exec.memory.BufferAllocator; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.physical.base.FileGroupScan; @@ -52,13 +52,12 @@ import org.apache.drill.exec.store.dfs.FileSelection; import org.apache.drill.exec.store.dfs.FormatSelection; import org.apache.drill.exec.vector.NullableBitVector; import org.apache.drill.exec.vector.NullableVarCharVector; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelOptRuleOperand; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexUtil; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRuleOperand; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.rex.RexNode; import com.google.common.base.Charsets; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/AggPrelBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/AggPrelBase.java index a69188b43..e14ab248c 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/AggPrelBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/AggPrelBase.java @@ -19,8 +19,9 @@ package org.apache.drill.exec.planner.physical; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; -import net.hydromatic.linq4j.Ord; -import net.hydromatic.optiq.util.BitSets; +import org.apache.calcite.linq4j.Ord; +import org.apache.calcite.util.BitSets; +import org.apache.calcite.util.ImmutableBitSet; import org.apache.drill.common.expression.ExpressionPosition; import org.apache.drill.common.expression.FieldReference; import org.apache.drill.common.expression.FunctionCall; @@ -28,27 +29,26 @@ import org.apache.drill.common.expression.LogicalExpression; import org.apache.drill.common.expression.ValueExpressions; import org.apache.drill.common.logical.data.NamedExpression; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; -import org.eigenbase.rel.AggregateCall; -import org.eigenbase.rel.AggregateRelBase; -import org.eigenbase.rel.Aggregation; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.sql.SqlAggFunction; -import org.eigenbase.sql.SqlFunctionCategory; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.type.OperandTypes; -import org.eigenbase.sql.type.ReturnTypes; +import org.apache.calcite.rel.core.AggregateCall; +import org.apache.calcite.rel.core.Aggregate; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.sql.SqlAggFunction; +import org.apache.calcite.sql.SqlFunctionCategory; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.type.OperandTypes; +import org.apache.calcite.sql.type.ReturnTypes; import java.util.BitSet; import java.util.Collections; import java.util.Iterator; import java.util.List; -public abstract class AggPrelBase extends AggregateRelBase implements Prel { +public abstract class AggPrelBase extends Aggregate implements Prel { protected static enum OperatorPhase {PHASE_1of1, PHASE_1of2, PHASE_2of2}; @@ -92,9 +92,15 @@ public abstract class AggPrelBase extends AggregateRelBase implements Prel { } - public AggPrelBase(RelOptCluster cluster, RelTraitSet traits, RelNode child, BitSet groupSet, - List<AggregateCall> aggCalls, OperatorPhase phase) throws InvalidRelException { - super(cluster, traits, child, groupSet, aggCalls); + public AggPrelBase(RelOptCluster cluster, + RelTraitSet traits, + RelNode child, + boolean indicator, + ImmutableBitSet groupSet, + List<ImmutableBitSet> groupSets, + List<AggregateCall> aggCalls, + OperatorPhase phase) throws InvalidRelException { + super(cluster, traits, child, indicator, groupSet, groupSets, aggCalls); this.operPhase = phase; createKeysAndExprs(); } @@ -116,7 +122,7 @@ public abstract class AggPrelBase extends AggregateRelBase implements Prel { } protected void createKeysAndExprs() { - final List<String> childFields = getChild().getRowType().getFieldNames(); + final List<String> childFields = getInput().getRowType().getFieldNames(); final List<String> fields = getRowType().getFieldNames(); for (int group : BitSets.toIter(groupSet)) { @@ -134,7 +140,7 @@ public abstract class AggPrelBase extends AggregateRelBase implements Prel { if (getOperatorPhase() == OperatorPhase.PHASE_1of2) { if (aggCall.e.getAggregation().getName().equals("COUNT")) { // If we are doing a COUNT aggregate in Phase1of2, then in Phase2of2 we should SUM the COUNTs, - Aggregation sumAggFun = new SqlSumCountAggFunction(aggCall.e.getType()); + SqlAggFunction sumAggFun = new SqlSumCountAggFunction(aggCall.e.getType()); AggregateCall newAggCall = new AggregateCall( sumAggFun, @@ -175,7 +181,7 @@ public abstract class AggPrelBase extends AggregateRelBase implements Prel { @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/AggPruleBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/AggPruleBase.java index e6c815b59..b911f6bee 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/AggPruleBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/AggPruleBase.java @@ -20,14 +20,14 @@ package org.apache.drill.exec.planner.physical; import java.util.List; -import net.hydromatic.optiq.util.BitSets; +import org.apache.calcite.util.BitSets; import org.apache.drill.exec.planner.logical.DrillAggregateRel; import org.apache.drill.exec.planner.physical.DrillDistributionTrait.DistributionField; -import org.eigenbase.rel.AggregateCall; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelOptRuleOperand; +import org.apache.calcite.rel.core.AggregateCall; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRuleOperand; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/BroadcastExchangePrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/BroadcastExchangePrel.java index 0467a07a1..d1abf10cd 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/BroadcastExchangePrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/BroadcastExchangePrel.java @@ -26,12 +26,12 @@ import org.apache.drill.exec.physical.config.BroadcastExchange; import org.apache.drill.exec.physical.config.SelectionVectorRemover; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; public class BroadcastExchangePrel extends ExchangePrel{ @@ -50,7 +50,7 @@ public class BroadcastExchangePrel extends ExchangePrel{ return super.computeSelfCost(planner).multiplyBy(.1); } - RelNode child = this.getChild(); + RelNode child = this.getInput(); final int numEndPoints = PrelUtil.getSettings(getCluster()).numEndPoints(); final double broadcastFactor = PrelUtil.getSettings(getCluster()).getBroadcastFactor(); @@ -79,7 +79,7 @@ public class BroadcastExchangePrel extends ExchangePrel{ } public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ComplexToJsonPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ComplexToJsonPrel.java index bec3704bb..73817e76f 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ComplexToJsonPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ComplexToJsonPrel.java @@ -25,9 +25,9 @@ import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.ComplexToJson; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.SingleRel; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.SingleRel; +import org.apache.calcite.plan.RelTraitSet; public class ComplexToJsonPrel extends SingleRel implements Prel { @@ -42,13 +42,13 @@ public class ComplexToJsonPrel extends SingleRel implements Prel { @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - ComplexToJson p = new ComplexToJson(((Prel) getChild()).getPhysicalOperator(creator)); + ComplexToJson p = new ComplexToJson(((Prel) getInput()).getPhysicalOperator(creator)); return creator.addMetadata(this, p); } @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ConvertCountToDirectScan.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ConvertCountToDirectScan.java index d79480519..8b71b707a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ConvertCountToDirectScan.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ConvertCountToDirectScan.java @@ -29,18 +29,18 @@ import org.apache.drill.exec.planner.logical.DrillScanRel; import org.apache.drill.exec.planner.logical.RelOptHelper; import org.apache.drill.exec.store.direct.DirectGroupScan; import org.apache.drill.exec.store.pojo.PojoRecordReader; -import org.eigenbase.rel.AggregateCall; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelOptRuleOperand; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.reltype.RelDataTypeFieldImpl; -import org.eigenbase.reltype.RelRecordType; -import org.eigenbase.rex.RexInputRef; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.core.AggregateCall; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRuleOperand; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rel.type.RelDataTypeFieldImpl; +import org.apache.calcite.rel.type.RelRecordType; +import org.apache.calcite.rex.RexInputRef; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.type.SqlTypeName; import com.google.common.collect.Lists; @@ -111,7 +111,7 @@ public class ConvertCountToDirectScan extends Prule { // count(Not-null-input) ==> rowCount if (aggCall.getArgList().isEmpty() || (aggCall.getArgList().size() == 1 && - ! agg.getChild().getRowType().getFieldList().get(aggCall.getArgList().get(0).intValue()).getType().isNullable())) { + ! agg.getInput().getRowType().getFieldList().get(aggCall.getArgList().get(0).intValue()).getType().isNullable())) { cnt = (long) oldGrpScan.getScanStats().getRecordCount(); } else if (aggCall.getArgList().size() == 1) { // count(columnName) ==> Agg ( Scan )) ==> columnValueCount diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTrait.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTrait.java index c45ae179b..c1e241dff 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTrait.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTrait.java @@ -17,9 +17,9 @@ */ package org.apache.drill.exec.planner.physical; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTrait; -import org.eigenbase.relopt.RelTraitDef; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTrait; +import org.apache.calcite.plan.RelTraitDef; import com.google.common.collect.ImmutableList; @@ -53,7 +53,8 @@ public class DrillDistributionTrait implements RelTrait { public void register(RelOptPlanner planner) { } - public boolean subsumes(RelTrait trait) { + @Override + public boolean satisfies(RelTrait trait) { if (trait instanceof DrillDistributionTrait) { DistributionType requiredDist = ((DrillDistributionTrait) trait).getType(); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTraitDef.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTraitDef.java index ae079a381..d6f796c71 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTraitDef.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTraitDef.java @@ -17,10 +17,10 @@ */ package org.apache.drill.exec.planner.physical; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitDef; -import org.eigenbase.relopt.volcano.RelSubset; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitDef; +import org.apache.calcite.plan.volcano.RelSubset; public class DrillDistributionTraitDef extends RelTraitDef<DrillDistributionTrait>{ public static final DrillDistributionTraitDef INSTANCE = new DrillDistributionTraitDef(); @@ -72,22 +72,30 @@ public class DrillDistributionTraitDef extends RelTraitDef<DrillDistributionTrai return null; } + RelNode newRel = null; switch(toDist.getType()){ // UnionExchange, HashToRandomExchange, OrderedPartitionExchange and BroadcastExchange destroy the ordering property, // therefore RelCollation is set to default, which is EMPTY. case SINGLETON: - return new UnionExchangePrel(rel.getCluster(), planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel); + newRel = new UnionExchangePrel(rel.getCluster(), planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel); + break; case HASH_DISTRIBUTED: - return new HashToRandomExchangePrel(rel.getCluster(), planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel, + newRel = new HashToRandomExchangePrel(rel.getCluster(), planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel, toDist.getFields()); + break; case RANGE_DISTRIBUTED: - return new OrderedPartitionExchangePrel(rel.getCluster(), planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel); + newRel = new OrderedPartitionExchangePrel(rel.getCluster(), planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel); + break; case BROADCAST_DISTRIBUTED: - return new BroadcastExchangePrel(rel.getCluster(), planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel); + newRel = new BroadcastExchangePrel(rel.getCluster(), planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel); + break; default: - return null; + newRel = null; } + // planner.register(newRel, rel); + + return newRel; } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ExchangePrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ExchangePrel.java index 5a75adb43..9ad1c672b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ExchangePrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ExchangePrel.java @@ -19,9 +19,9 @@ package org.apache.drill.exec.planner.physical; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; public abstract class ExchangePrel extends SinglePrel{ diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FilterPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FilterPrel.java index 6198d37e8..b631cdcf8 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FilterPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FilterPrel.java @@ -28,10 +28,10 @@ import org.apache.drill.exec.planner.common.DrillFilterRelBase; import org.apache.drill.exec.planner.logical.DrillParseContext; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexNode; public class FilterPrel extends DrillFilterRelBase implements Prel { @@ -40,14 +40,14 @@ public class FilterPrel extends DrillFilterRelBase implements Prel { } @Override - public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) { - return new FilterPrel(getCluster(), traitSet, sole(inputs), getCondition()); + public org.apache.calcite.rel.core.Filter copy(RelTraitSet traitSet, RelNode input, RexNode condition) { + return new FilterPrel(getCluster(), traitSet, input, condition); } @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); @@ -57,7 +57,7 @@ public class FilterPrel extends DrillFilterRelBase implements Prel { @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FilterPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FilterPrule.java index c15c5e0f3..50b760b6b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FilterPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FilterPrule.java @@ -19,10 +19,10 @@ package org.apache.drill.exec.planner.physical; import org.apache.drill.exec.planner.logical.DrillFilterRel; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; public class FilterPrule extends Prule { public static final RelOptRule INSTANCE = new FilterPrule(); @@ -34,7 +34,7 @@ public class FilterPrule extends Prule { @Override public void onMatch(RelOptRuleCall call) { final DrillFilterRel filter = (DrillFilterRel) call.rel(0); - final RelNode input = filter.getChild(); + final RelNode input = filter.getInput(); RelTraitSet traits = input.getTraitSet().plus(Prel.DRILL_PHYSICAL); RelNode convertedInput = convert(input, traits); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FlattenPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FlattenPrel.java index 18a2cc211..e206951b3 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FlattenPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FlattenPrel.java @@ -27,11 +27,11 @@ import org.apache.drill.exec.planner.logical.DrillOptiq; import org.apache.drill.exec.planner.logical.DrillParseContext; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.RelWriter; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelWriter; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexNode; import java.io.IOException; import java.util.Iterator; @@ -53,12 +53,12 @@ public class FlattenPrel extends SinglePrel implements Prel { @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); FlattenPOP f = new FlattenPOP(childPOP, (SchemaPath) getFlattenExpression(new DrillParseContext())); @@ -75,6 +75,6 @@ public class FlattenPrel extends SinglePrel implements Prel { } protected LogicalExpression getFlattenExpression(DrillParseContext context){ - return DrillOptiq.toDrill(context, getChild(), toFlatten); + return DrillOptiq.toDrill(context, getInput(), toFlatten); } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashAggPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashAggPrel.java index 0b9dcb6cf..61819591a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashAggPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashAggPrel.java @@ -18,9 +18,9 @@ package org.apache.drill.exec.planner.physical; import java.io.IOException; -import java.util.BitSet; import java.util.List; +import org.apache.calcite.util.ImmutableBitSet; import org.apache.drill.common.logical.data.NamedExpression; import org.apache.drill.exec.ExecConstants; import org.apache.drill.exec.expr.holders.IntHolder; @@ -29,29 +29,35 @@ import org.apache.drill.exec.physical.config.HashAggregate; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.AggregateCall; -import org.eigenbase.rel.AggregateRelBase; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.core.AggregateCall; +import org.apache.calcite.rel.core.Aggregate; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; public class HashAggPrel extends AggPrelBase implements Prel{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(HashAggPrel.class); - public HashAggPrel(RelOptCluster cluster, RelTraitSet traits, RelNode child, BitSet groupSet, - List<AggregateCall> aggCalls, OperatorPhase phase) throws InvalidRelException { - super(cluster, traits, child, groupSet, aggCalls, phase); + public HashAggPrel(RelOptCluster cluster, + RelTraitSet traits, + RelNode child, + boolean indicator, + ImmutableBitSet groupSet, + List<ImmutableBitSet> groupSets, + List<AggregateCall> aggCalls, + OperatorPhase phase) throws InvalidRelException { + super(cluster, traits, child, indicator, groupSet, groupSets, aggCalls, phase); } @Override - public AggregateRelBase copy(RelTraitSet traitSet, RelNode input, BitSet groupSet, List<AggregateCall> aggCalls) { + public Aggregate copy(RelTraitSet traitSet, RelNode input, boolean indicator, ImmutableBitSet groupSet, List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) { try { - return new HashAggPrel(getCluster(), traitSet, input, getGroupSet(), aggCalls, + return new HashAggPrel(getCluster(), traitSet, input, indicator, groupSet, groupSets, aggCalls, this.getOperatorPhase()); } catch (InvalidRelException e) { throw new AssertionError(e); @@ -63,7 +69,7 @@ public class HashAggPrel extends AggPrelBase implements Prel{ if(PrelUtil.getSettings(getCluster()).useDefaultCosting()) { return super.computeSelfCost(planner).multiplyBy(.1); } - RelNode child = this.getChild(); + RelNode child = this.getInput(); double inputRows = RelMetadataQuery.getRowCount(child); int numGroupByFields = this.getGroupCount(); @@ -96,7 +102,7 @@ public class HashAggPrel extends AggPrelBase implements Prel{ @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); HashAggregate g = new HashAggregate(child.getPhysicalOperator(creator), keys.toArray(new NamedExpression[keys.size()]), aggExprs.toArray(new NamedExpression[aggExprs.size()]), diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashAggPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashAggPrule.java index 1a43df552..e16593bae 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashAggPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashAggPrule.java @@ -22,19 +22,19 @@ import java.util.logging.Logger; import org.apache.drill.exec.planner.logical.DrillAggregateRel; import org.apache.drill.exec.planner.logical.RelOptHelper; import org.apache.drill.exec.planner.physical.AggPrelBase.OperatorPhase; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTrait; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.trace.EigenbaseTrace; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTrait; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.util.trace.CalciteTrace; import com.google.common.collect.ImmutableList; public class HashAggPrule extends AggPruleBase { public static final RelOptRule INSTANCE = new HashAggPrule(); - protected static final Logger tracer = EigenbaseTrace.getPlannerTracer(); + protected static final Logger tracer = CalciteTrace.getPlannerTracer(); private HashAggPrule() { super(RelOptHelper.some(DrillAggregateRel.class, RelOptHelper.any(RelNode.class)), "HashAggPrule"); @@ -112,8 +112,13 @@ public class HashAggPrule extends AggPruleBase { RelTraitSet traits = newTraitSet(Prel.DRILL_PHYSICAL, input.getTraitSet().getTrait(DrillDistributionTraitDef.INSTANCE)); RelNode newInput = convert(input, traits); - HashAggPrel phase1Agg = new HashAggPrel(aggregate.getCluster(), traits, newInput, + HashAggPrel phase1Agg = new HashAggPrel( + aggregate.getCluster(), + traits, + newInput, + aggregate.indicator, aggregate.getGroupSet(), + aggregate.getGroupSets(), aggregate.getAggCallList(), OperatorPhase.PHASE_1of2); @@ -121,10 +126,15 @@ public class HashAggPrule extends AggPruleBase { new HashToRandomExchangePrel(phase1Agg.getCluster(), phase1Agg.getTraitSet().plus(Prel.DRILL_PHYSICAL).plus(distOnAllKeys), phase1Agg, ImmutableList.copyOf(getDistributionField(aggregate, true))); - HashAggPrel phase2Agg = new HashAggPrel(aggregate.getCluster(), exch.getTraitSet(), exch, - aggregate.getGroupSet(), - phase1Agg.getPhase2AggCalls(), - OperatorPhase.PHASE_2of2); + HashAggPrel phase2Agg = new HashAggPrel( + aggregate.getCluster(), + exch.getTraitSet(), + exch, + aggregate.indicator, + aggregate.getGroupSet(), + aggregate.getGroupSets(), + phase1Agg.getPhase2AggCalls(), + OperatorPhase.PHASE_2of2); return phase2Agg; } @@ -135,8 +145,15 @@ public class HashAggPrule extends AggPruleBase { final RelNode convertedInput = convert(input, PrelUtil.fixTraits(call, traits)); - HashAggPrel newAgg = new HashAggPrel(aggregate.getCluster(), traits, convertedInput, aggregate.getGroupSet(), - aggregate.getAggCallList(), OperatorPhase.PHASE_1of1); + HashAggPrel newAgg = new HashAggPrel( + aggregate.getCluster(), + traits, + convertedInput, + aggregate.indicator, + aggregate.getGroupSet(), + aggregate.getGroupSets(), + aggregate.getAggCallList(), + OperatorPhase.PHASE_1of1); call.transformTo(newAgg); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashJoinPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashJoinPrel.java index f63057ff1..9db8e7d13 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashJoinPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashJoinPrel.java @@ -20,8 +20,7 @@ package org.apache.drill.exec.planner.physical; import java.io.IOException; import java.util.List; -import net.hydromatic.optiq.runtime.FlatLists; -import org.apache.drill.common.expression.FieldReference; +import org.apache.calcite.rel.core.Join; import org.apache.drill.common.logical.data.JoinCondition; import org.apache.drill.exec.ExecConstants; import org.apache.drill.exec.expr.holders.IntHolder; @@ -30,18 +29,16 @@ import org.apache.drill.exec.physical.config.HashJoinPOP; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.JoinRelBase; -import org.eigenbase.rel.JoinRelType; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexNode; -import org.eigenbase.util.Pair; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.core.JoinRelType; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexNode; import com.google.common.collect.Lists; @@ -62,7 +59,7 @@ public class HashJoinPrel extends JoinPrel { } @Override - public JoinRelBase copy(RelTraitSet traitSet, RexNode conditionExpr, RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) { + public Join copy(RelTraitSet traitSet, RexNode conditionExpr, RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) { try { return new HashJoinPrel(this.getCluster(), traitSet, left, right, conditionExpr, joinType, this.swapped); }catch (InvalidRelException e) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashJoinPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashJoinPrule.java index e802a40c5..24df0b1e2 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashJoinPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashJoinPrule.java @@ -21,18 +21,18 @@ import java.util.logging.Logger; import org.apache.drill.exec.planner.logical.DrillJoinRel; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelOptRuleOperand; -import org.eigenbase.trace.EigenbaseTrace; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRuleOperand; +import org.apache.calcite.util.trace.CalciteTrace; public class HashJoinPrule extends JoinPruleBase { public static final RelOptRule DIST_INSTANCE = new HashJoinPrule("Prel.HashJoinDistPrule", RelOptHelper.any(DrillJoinRel.class), true); public static final RelOptRule BROADCAST_INSTANCE = new HashJoinPrule("Prel.HashJoinBroadcastPrule", RelOptHelper.any(DrillJoinRel.class), false); - protected static final Logger tracer = EigenbaseTrace.getPlannerTracer(); + protected static final Logger tracer = CalciteTrace.getPlannerTracer(); private final boolean isDist; private HashJoinPrule(String name, RelOptRuleOperand operand, boolean isDist) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashToMergeExchangePrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashToMergeExchangePrel.java index 7920187f3..7a0cbeb72 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashToMergeExchangePrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashToMergeExchangePrel.java @@ -26,13 +26,13 @@ import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.planner.physical.DrillDistributionTrait.DistributionField; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; public class HashToMergeExchangePrel extends ExchangePrel { @@ -56,7 +56,7 @@ public class HashToMergeExchangePrel extends ExchangePrel { if (PrelUtil.getSettings(getCluster()).useDefaultCosting()) { return super.computeSelfCost(planner).multiplyBy(.1); } - RelNode child = this.getChild(); + RelNode child = this.getInput(); double inputRows = RelMetadataQuery.getRowCount(child); int rowWidth = child.getRowType().getFieldCount() * DrillCostBase.AVG_FIELD_WIDTH; @@ -75,7 +75,7 @@ public class HashToMergeExchangePrel extends ExchangePrel { } public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); @@ -84,8 +84,8 @@ public class HashToMergeExchangePrel extends ExchangePrel { } HashToMergeExchange g = new HashToMergeExchange(childPOP, - PrelUtil.getHashExpression(this.distFields, getChild().getRowType()), - PrelUtil.getOrdering(this.collation, getChild().getRowType())); + PrelUtil.getHashExpression(this.distFields, getInput().getRowType()), + PrelUtil.getOrdering(this.collation, getInput().getRowType())); return creator.addMetadata(this, g); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashToRandomExchangePrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashToRandomExchangePrel.java index 6826e4602..c08e6b69c 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashToRandomExchangePrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashToRandomExchangePrel.java @@ -20,7 +20,7 @@ package org.apache.drill.exec.planner.physical; import java.io.IOException; import java.util.List; -import net.hydromatic.linq4j.Ord; +import org.apache.calcite.linq4j.Ord; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.HashToRandomExchange; @@ -28,13 +28,13 @@ import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.planner.physical.DrillDistributionTrait.DistributionField; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.RelWriter; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelWriter; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; public class HashToRandomExchangePrel extends ExchangePrel { @@ -68,7 +68,7 @@ public class HashToRandomExchangePrel extends ExchangePrel { return super.computeSelfCost(planner).multiplyBy(.1); } - RelNode child = this.getChild(); + RelNode child = this.getInput(); double inputRows = RelMetadataQuery.getRowCount(child); int rowWidth = child.getRowType().getFieldCount() * DrillCostBase.AVG_FIELD_WIDTH; @@ -86,7 +86,7 @@ public class HashToRandomExchangePrel extends ExchangePrel { } public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); @@ -95,7 +95,7 @@ public class HashToRandomExchangePrel extends ExchangePrel { } // TODO - refactor to different exchange name - HashToRandomExchange g = new HashToRandomExchange(childPOP, PrelUtil.getHashExpression(this.fields, getChild().getRowType())); + HashToRandomExchange g = new HashToRandomExchange(childPOP, PrelUtil.getHashExpression(this.fields, getInput().getRowType())); return creator.addMetadata(this, g); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/JoinPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/JoinPrel.java index bfecd0601..59b9f41b9 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/JoinPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/JoinPrel.java @@ -25,18 +25,18 @@ import org.apache.drill.common.expression.FieldReference; import org.apache.drill.common.logical.data.JoinCondition; import org.apache.drill.exec.planner.common.DrillJoinRelBase; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.JoinRelType; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexUtil; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.util.Pair; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.core.JoinRelType; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexUtil; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.util.Pair; import com.google.common.collect.Lists; @@ -111,7 +111,7 @@ public abstract class JoinPrel extends DrillJoinRelBase implements Prel{ * A join condition is built only for equality and IS NOT DISTINCT FROM comparisons. The difference is: * null == null is FALSE whereas null IS NOT DISTINCT FROM null is TRUE * For a use case of the IS NOT DISTINCT FROM comparison, see - * {@link org.eigenbase.rel.rules.RemoveDistinctAggregateRule} + * {@link org.apache.calcite.rel.rules.RemoveDistinctAggregateRule} * @param conditions populated list of join conditions * @param leftFields join fields from the left input * @param rightFields join fields from the right input diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/JoinPruleBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/JoinPruleBase.java index 77c055c48..d6f167225 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/JoinPruleBase.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/JoinPruleBase.java @@ -23,17 +23,17 @@ import java.util.List; import org.apache.drill.exec.planner.common.DrillJoinRelBase; import org.apache.drill.exec.planner.logical.DrillJoinRel; import org.apache.drill.exec.planner.physical.DrillDistributionTrait.DistributionField; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.JoinRelType; -import org.eigenbase.rel.RelCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelOptRuleOperand; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.core.JoinRelType; +import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRuleOperand; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexNode; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/LimitPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/LimitPrel.java index 6012a5a7a..f3e99917f 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/LimitPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/LimitPrel.java @@ -22,11 +22,11 @@ import org.apache.drill.exec.physical.config.Limit; import org.apache.drill.exec.planner.common.DrillLimitRelBase; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.rex.RexNode; import java.io.IOException; import java.util.Iterator; @@ -45,7 +45,7 @@ public class LimitPrel extends DrillLimitRelBase implements Prel { @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); @@ -62,7 +62,7 @@ public class LimitPrel extends DrillLimitRelBase implements Prel { @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } @Override @@ -87,7 +87,7 @@ public class LimitPrel extends DrillLimitRelBase implements Prel { // @Override // public LogicalOperator implement(DrillImplementor implementor) { -// LogicalOperator inputOp = implementor.visitChild(this, 0, getChild()); +// LogicalOperator inputOp = implementor.visitChild(this, 0, getInput()); // // // First offset to include into results (inclusive). Null implies it is starting from offset 0 // int first = offset != null ? Math.max(0, RexLiteral.intValue(offset)) : 0; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/LimitPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/LimitPrule.java index 94685c10c..439578191 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/LimitPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/LimitPrule.java @@ -20,10 +20,10 @@ package org.apache.drill.exec.planner.physical; import org.apache.drill.exec.planner.logical.DrillLimitRel; import org.apache.drill.exec.planner.logical.DrillRel; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; public class LimitPrule extends Prule{ public static final RelOptRule INSTANCE = new LimitPrule(); @@ -36,7 +36,7 @@ public class LimitPrule extends Prule{ @Override public void onMatch(RelOptRuleCall call) { final DrillLimitRel limit = (DrillLimitRel) call.rel(0); - final RelNode input = limit.getChild(); + final RelNode input = limit.getInput(); final RelTraitSet traits = input.getTraitSet().plus(Prel.DRILL_PHYSICAL).plus(DrillDistributionTrait.SINGLETON); final RelNode convertedInput = convert(input, traits); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/MergeJoinPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/MergeJoinPrel.java index de5c2d53d..3c0022f94 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/MergeJoinPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/MergeJoinPrel.java @@ -20,25 +20,23 @@ package org.apache.drill.exec.planner.physical; import java.io.IOException; import java.util.List; -import org.apache.drill.common.expression.FieldReference; +import org.apache.calcite.rel.core.Join; import org.apache.drill.common.logical.data.JoinCondition; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.MergeJoinPOP; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.JoinRelBase; -import org.eigenbase.rel.JoinRelType; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexNode; -import org.eigenbase.util.Pair; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.core.JoinRelType; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexNode; import com.google.common.collect.Lists; @@ -61,7 +59,7 @@ public class MergeJoinPrel extends JoinPrel { @Override - public JoinRelBase copy(RelTraitSet traitSet, RexNode conditionExpr, RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) { + public Join copy(RelTraitSet traitSet, RexNode conditionExpr, RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) { try { return new MergeJoinPrel(this.getCluster(), traitSet, left, right, conditionExpr, joinType); }catch (InvalidRelException e) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/MergeJoinPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/MergeJoinPrule.java index 5283467c3..cbcc92074 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/MergeJoinPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/MergeJoinPrule.java @@ -22,15 +22,15 @@ import java.util.logging.Logger; import org.apache.drill.exec.planner.logical.DrillJoinRel; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelCollation; -import org.eigenbase.rel.RelCollationImpl; -import org.eigenbase.rel.RelFieldCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelOptRuleOperand; -import org.eigenbase.trace.EigenbaseTrace; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelCollationImpl; +import org.apache.calcite.rel.RelFieldCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRuleOperand; +import org.apache.calcite.util.trace.CalciteTrace; import com.google.common.collect.Lists; @@ -38,7 +38,7 @@ public class MergeJoinPrule extends JoinPruleBase { public static final RelOptRule DIST_INSTANCE = new MergeJoinPrule("Prel.MergeJoinDistPrule", RelOptHelper.any(DrillJoinRel.class), true); public static final RelOptRule BROADCAST_INSTANCE = new MergeJoinPrule("Prel.MergeJoinBroadcastPrule", RelOptHelper.any(DrillJoinRel.class), false); - protected static final Logger tracer = EigenbaseTrace.getPlannerTracer(); + protected static final Logger tracer = CalciteTrace.getPlannerTracer(); final boolean isDist; private MergeJoinPrule(String name, RelOptRuleOperand operand, boolean isDist) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/OrderedPartitionExchangePrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/OrderedPartitionExchangePrel.java index 7bb4822dd..e4ea640e9 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/OrderedPartitionExchangePrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/OrderedPartitionExchangePrel.java @@ -24,12 +24,12 @@ import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; public class OrderedPartitionExchangePrel extends ExchangePrel { @@ -43,7 +43,7 @@ public class OrderedPartitionExchangePrel extends ExchangePrel { if (PrelUtil.getSettings(getCluster()).useDefaultCosting()) { return super.computeSelfCost(planner).multiplyBy(.1); } - RelNode child = this.getChild(); + RelNode child = this.getInput(); double inputRows = RelMetadataQuery.getRowCount(child); int rowWidth = child.getRowType().getFieldCount() * DrillCostBase.AVG_FIELD_WIDTH; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PlannerSettings.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PlannerSettings.java index 8737e68cb..ac86c4a97 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PlannerSettings.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PlannerSettings.java @@ -26,7 +26,7 @@ import org.apache.drill.exec.server.options.TypeValidators.LongValidator; import org.apache.drill.exec.server.options.TypeValidators.PositiveLongValidator; import org.apache.drill.exec.server.options.TypeValidators.RangeDoubleValidator; import org.apache.drill.exec.server.options.TypeValidators.RangeLongValidator; -import org.eigenbase.relopt.Context; +import org.apache.calcite.plan.Context; public class PlannerSettings implements Context{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(PlannerSettings.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/Prel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/Prel.java index 7c63e6a8e..697d5a5e9 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/Prel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/Prel.java @@ -23,7 +23,7 @@ import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.planner.common.DrillRelNode; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.relopt.Convention; +import org.apache.calcite.plan.Convention; public interface Prel extends DrillRelNode, Iterable<Prel>{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(Prel.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java index 44afd68db..c8141cd99 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java @@ -23,6 +23,7 @@ import java.util.Iterator; import java.util.List; import java.util.Set; + import org.apache.drill.common.expression.CastExpression; import org.apache.drill.common.expression.ExpressionPosition; import org.apache.drill.common.expression.FieldReference; @@ -35,30 +36,26 @@ import org.apache.drill.common.expression.SchemaPath; import org.apache.drill.common.logical.data.Order.Ordering; import org.apache.drill.common.types.TypeProtos.MinorType; import org.apache.drill.common.types.Types; -import org.apache.drill.exec.compile.sig.MappingSet; -import org.apache.drill.exec.expr.ClassGenerator; -import org.apache.drill.exec.expr.ClassGenerator.HoldingContainer; -import org.apache.drill.exec.expr.fn.FunctionGenerationHelper; -import org.apache.drill.exec.expr.fn.FunctionImplementationRegistry; import org.apache.drill.exec.planner.physical.DrillDistributionTrait.DistributionField; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelCollation; -import org.eigenbase.rel.RelFieldCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexInputRef; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.rex.RexLocalRef; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexShuttle; -import org.eigenbase.rex.RexVisitorImpl; + +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelFieldCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexInputRef; +import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.rex.RexLocalRef; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexShuttle; +import org.apache.calcite.rex.RexVisitorImpl; import com.carrotsearch.hppc.IntIntOpenHashMap; import com.google.common.collect.ImmutableList; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProducerConsumerPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProducerConsumerPrel.java index a9edd0ca0..5d5e57a10 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProducerConsumerPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProducerConsumerPrel.java @@ -26,9 +26,9 @@ import org.apache.drill.exec.physical.config.ProducerConsumer; import org.apache.drill.exec.planner.common.DrillRelNode; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.SingleRel; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.SingleRel; +import org.apache.calcite.plan.RelTraitSet; public class ProducerConsumerPrel extends SingleRel implements DrillRelNode, Prel { @@ -46,7 +46,7 @@ public class ProducerConsumerPrel extends SingleRel implements DrillRelNode, Pre @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); @@ -57,7 +57,7 @@ public class ProducerConsumerPrel extends SingleRel implements DrillRelNode, Pre @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectAllowDupPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectAllowDupPrel.java index 26bb9f60d..cc215f85b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectAllowDupPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectAllowDupPrel.java @@ -28,13 +28,12 @@ import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.Project; import org.apache.drill.exec.planner.logical.DrillOptiq; import org.apache.drill.exec.planner.logical.DrillParseContext; -import org.eigenbase.rel.ProjectRelBase; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.rex.RexNode; -import org.eigenbase.util.Pair; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.util.Pair; import com.google.common.collect.Lists; @@ -52,7 +51,7 @@ public class ProjectAllowDupPrel extends ProjectPrel { @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); @@ -64,7 +63,7 @@ public class ProjectAllowDupPrel extends ProjectPrel { protected List<NamedExpression> getProjectExpressions(DrillParseContext context) { List<NamedExpression> expressions = Lists.newArrayList(); for (Pair<RexNode, String> pair : Pair.zip(exps, getRowType().getFieldNames())) { - LogicalExpression expr = DrillOptiq.toDrill(context, getChild(), pair.left); + LogicalExpression expr = DrillOptiq.toDrill(context, getInput(), pair.left); expressions.add(new NamedExpression(expr, FieldReference.getWithQuotedRef(pair.right))); } return expressions; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectPrel.java index 310e18c19..35fa5bed4 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectPrel.java @@ -22,17 +22,16 @@ import java.util.Iterator; import java.util.List; import org.apache.drill.exec.physical.base.PhysicalOperator; -import org.apache.drill.exec.physical.config.Project; import org.apache.drill.exec.planner.common.DrillProjectRelBase; import org.apache.drill.exec.planner.logical.DrillParseContext; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.ProjectRelBase; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.core.Project; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rex.RexNode; public class ProjectPrel extends DrillProjectRelBase implements Prel{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ProjectPrel.class); @@ -44,24 +43,24 @@ public class ProjectPrel extends DrillProjectRelBase implements Prel{ } @Override - public ProjectRelBase copy(RelTraitSet traitSet, RelNode input, List<RexNode> exps, RelDataType rowType) { + public Project copy(RelTraitSet traitSet, RelNode input, List<RexNode> exps, RelDataType rowType) { return new ProjectPrel(getCluster(), traitSet, input, exps, rowType); } @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); - Project p = new Project(this.getProjectExpressions(new DrillParseContext()), childPOP); + org.apache.drill.exec.physical.config.Project p = new org.apache.drill.exec.physical.config.Project(this.getProjectExpressions(new DrillParseContext()), childPOP); return creator.addMetadata(this, p); } @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectPrule.java index b1d5a4c62..bf27a6fe7 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectPrule.java @@ -21,24 +21,24 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import net.hydromatic.linq4j.Ord; +import org.apache.calcite.linq4j.Ord; import org.apache.drill.exec.planner.logical.DrillProjectRel; import org.apache.drill.exec.planner.logical.RelOptHelper; import org.apache.drill.exec.planner.physical.DrillDistributionTrait.DistributionField; import org.apache.drill.exec.planner.physical.DrillDistributionTrait.DistributionType; -import org.eigenbase.rel.RelCollation; -import org.eigenbase.rel.RelCollationImpl; -import org.eigenbase.rel.RelCollationTraitDef; -import org.eigenbase.rel.RelFieldCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexInputRef; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.SqlKind; +import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelCollationImpl; +import org.apache.calcite.rel.RelCollationTraitDef; +import org.apache.calcite.rel.RelFieldCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexInputRef; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.SqlKind; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -53,7 +53,7 @@ public class ProjectPrule extends Prule { @Override public void onMatch(RelOptRuleCall call) { final DrillProjectRel project = (DrillProjectRel) call.rel(0); - final RelNode input = project.getChild(); + final RelNode input = project.getInput(); RelTraitSet traits = input.getTraitSet().plus(Prel.DRILL_PHYSICAL); RelNode convertedInput = convert(input, traits); @@ -120,7 +120,7 @@ public class ProjectPrule extends Prule { } if (newFields.isEmpty()) { - return RelCollationImpl.EMPTY; + return RelCollationImpl.of(); } else { return RelCollationImpl.of(newFields); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/Prule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/Prule.java index c0d65160f..e0a283917 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/Prule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/Prule.java @@ -17,11 +17,11 @@ */ package org.apache.drill.exec.planner.physical; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelOptRuleOperand; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRuleOperand; +import org.apache.calcite.plan.RelTraitSet; public abstract class Prule extends RelOptRule{ public Prule(RelOptRuleOperand operand, String description) { @@ -34,6 +34,7 @@ public abstract class Prule extends RelOptRule{ public static RelNode convert(RelNode rel, RelTraitSet toTraits){ + toTraits = toTraits.simplify(); PlannerSettings settings = PrelUtil.getSettings(rel.getCluster()); if(settings.isSingleMode()){ diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PushLimitToTopN.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PushLimitToTopN.java index 6d318ea79..cf6061240 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PushLimitToTopN.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PushLimitToTopN.java @@ -19,9 +19,9 @@ package org.apache.drill.exec.planner.physical; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.rex.RexLiteral; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rex.RexLiteral; public class PushLimitToTopN extends Prule{ @@ -41,7 +41,7 @@ public class PushLimitToTopN extends Prule{ int offset = limit.getOffset() != null ? Math.max(0, RexLiteral.intValue(limit.getOffset())) : 0; int fetch = limit.getFetch() != null? Math.max(0, RexLiteral.intValue(limit.getFetch())) : 0; - final TopNPrel topN = new TopNPrel(limit.getCluster(), sort.getTraitSet(), sort.getChild(), offset + fetch, sort.getCollation()); + final TopNPrel topN = new TopNPrel(limit.getCluster(), sort.getTraitSet(), sort.getInput(), offset + fetch, sort.getCollation()); final LimitPrel newLimit = new LimitPrel(limit.getCluster(), limit.getTraitSet(), new SingleMergeExchangePrel(smex.getCluster(), smex.getTraitSet(), topN, sort.getCollation()), limit.getOffset(), limit.getFetch()); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScanPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScanPrel.java index e65c11060..da558b23e 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScanPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScanPrel.java @@ -30,14 +30,14 @@ import org.apache.drill.exec.physical.base.ScanStats; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.AbstractRelNode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.RelWriter; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; +import org.apache.calcite.rel.AbstractRelNode; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelWriter; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; public class ScanPrel extends AbstractRelNode implements DrillScanPrel { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScanPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScanPrule.java index 1d915b7fa..ee2bde52e 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScanPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScanPrule.java @@ -20,9 +20,9 @@ package org.apache.drill.exec.planner.physical; import org.apache.drill.exec.physical.base.GroupScan; import org.apache.drill.exec.planner.logical.DrillScanRel; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; public class ScanPrule extends Prule{ public static final RelOptRule INSTANCE = new ScanPrule(); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScreenPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScreenPrel.java index 43565150b..ef77dff26 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScreenPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScreenPrel.java @@ -26,9 +26,9 @@ import org.apache.drill.exec.physical.config.Screen; import org.apache.drill.exec.planner.common.DrillScreenRelBase; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; public class ScreenPrel extends DrillScreenRelBase implements Prel { @@ -46,7 +46,7 @@ public class ScreenPrel extends DrillScreenRelBase implements Prel { @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); @@ -56,7 +56,7 @@ public class ScreenPrel extends DrillScreenRelBase implements Prel { @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScreenPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScreenPrule.java index 9cb8e1518..72e87ada6 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScreenPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScreenPrule.java @@ -21,10 +21,10 @@ import org.apache.drill.exec.planner.common.DrillScreenRelBase; import org.apache.drill.exec.planner.logical.DrillRel; import org.apache.drill.exec.planner.logical.DrillScreenRel; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; public class ScreenPrule extends Prule{ public static final RelOptRule INSTANCE = new ScreenPrule(); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SelectionVectorRemoverPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SelectionVectorRemoverPrel.java index aea51925e..d9dc67998 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SelectionVectorRemoverPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SelectionVectorRemoverPrel.java @@ -23,9 +23,9 @@ import java.util.List; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.SelectionVectorRemover; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; public class SelectionVectorRemoverPrel extends SinglePrel{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(SelectionVectorRemoverPrel.class); @@ -45,7 +45,7 @@ public class SelectionVectorRemoverPrel extends SinglePrel{ @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - SelectionVectorRemover r = new SelectionVectorRemover( ((Prel)getChild()).getPhysicalOperator(creator)); + SelectionVectorRemover r = new SelectionVectorRemover( ((Prel)getInput()).getPhysicalOperator(creator)); return creator.addMetadata(this, r); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SingleMergeExchangePrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SingleMergeExchangePrel.java index 826450962..5baeaae3c 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SingleMergeExchangePrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SingleMergeExchangePrel.java @@ -20,22 +20,22 @@ package org.apache.drill.exec.planner.physical; import java.io.IOException; import java.util.List; -import net.hydromatic.linq4j.Ord; +import org.apache.calcite.linq4j.Ord; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.SingleMergeExchange; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelCollation; -import org.eigenbase.rel.RelFieldCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.RelWriter; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelFieldCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelWriter; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; public class SingleMergeExchangePrel extends ExchangePrel { @@ -64,7 +64,7 @@ public class SingleMergeExchangePrel extends ExchangePrel { if (PrelUtil.getSettings(getCluster()).useDefaultCosting()) { return super.computeSelfCost(planner).multiplyBy(.1); } - RelNode child = this.getChild(); + RelNode child = this.getInput(); double inputRows = RelMetadataQuery.getRowCount(child); int rowWidth = child.getRowType().getFieldCount() * DrillCostBase.AVG_FIELD_WIDTH; double svrCpuCost = DrillCostBase.SVR_CPU_COST * inputRows; @@ -81,7 +81,7 @@ public class SingleMergeExchangePrel extends ExchangePrel { } public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); @@ -89,7 +89,7 @@ public class SingleMergeExchangePrel extends ExchangePrel { return childPOP; } - SingleMergeExchange g = new SingleMergeExchange(childPOP, PrelUtil.getOrdering(this.collation, getChild().getRowType())); + SingleMergeExchange g = new SingleMergeExchange(childPOP, PrelUtil.getOrdering(this.collation, getInput().getRowType())); return creator.addMetadata(this, g); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SinglePrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SinglePrel.java index 914ee04ec..e62d86c24 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SinglePrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SinglePrel.java @@ -21,10 +21,10 @@ import java.util.Iterator; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.SingleRel; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.SingleRel; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; public abstract class SinglePrel extends SingleRel implements Prel{ @@ -39,7 +39,7 @@ public abstract class SinglePrel extends SingleRel implements Prel{ @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortConvertPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortConvertPrule.java index a9955a3d9..e13c550c2 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortConvertPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortConvertPrule.java @@ -17,17 +17,17 @@ */ package org.apache.drill.exec.planner.physical; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.SortRel; -import org.eigenbase.rel.convert.ConverterRule; -import org.eigenbase.relopt.Convention; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Sort; +import org.apache.calcite.rel.convert.ConverterRule; +import org.apache.calcite.plan.Convention; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; /** - * Rule that converts an {@link SortRel} to a physical {@link SortPrel}, implemented by a Drill "order" operation. + * Rule that converts an {@link Sort} to a physical {@link SortPrel}, implemented by a Drill "order" operation. * - * The {@link SortRel} is added in optiq's AbstractConvert call, when it enforces certain "order" to the input stream. + * The {@link Sort} is added in optiq's AbstractConvert call, when it enforces certain "order" to the input stream. * Drill uses this rule to convert such sort enforcer into physical {@link SortPrel}. */ public class SortConvertPrule extends ConverterRule { @@ -35,21 +35,21 @@ public class SortConvertPrule extends ConverterRule { //public static final RelOptRule INSTANCE_SRC_LOGICAL = new SortPrule("SortPrule:Src_Logical", DrillRel.DRILL_LOGICAL); private SortConvertPrule(String description, Convention srcConvention) { - super(SortRel.class, srcConvention, Prel.DRILL_PHYSICAL, description); + super(Sort.class, srcConvention, Prel.DRILL_PHYSICAL, description); } @Override public boolean matches(RelOptRuleCall call) { - final SortRel sort = call.rel(0); + final Sort sort = call.rel(0); return sort.offset == null && sort.fetch == null; } @Override public RelNode convert(RelNode r) { - SortRel rel = (SortRel) r; + Sort rel = (Sort) r; return new SortPrel(rel.getCluster(), - rel.getChild().getTraitSet().replace(Prel.DRILL_PHYSICAL).plus(rel.getCollation()), - convert(rel.getChild(), rel.getChild().getTraitSet().replace(Prel.DRILL_PHYSICAL)), + rel.getInput().getTraitSet().replace(Prel.DRILL_PHYSICAL).plus(rel.getCollation()), + convert(rel.getInput(), rel.getInput().getTraitSet().replace(Prel.DRILL_PHYSICAL)), rel.getCollation()); } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortPrel.java index 8156843f6..66b6fd46d 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortPrel.java @@ -23,22 +23,20 @@ import java.util.Iterator; import org.apache.drill.exec.ExecConstants; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.ExternalSort; -import org.apache.drill.exec.physical.config.Sort; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.SortRel; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.rex.RexNode; - -public class SortPrel extends SortRel implements Prel { +import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rex.RexNode; + +public class SortPrel extends org.apache.calcite.rel.core.Sort implements Prel { /** Creates a DrillSortRel. */ public SortPrel(RelOptCluster cluster, RelTraitSet traits, RelNode input, RelCollation collation) { @@ -57,7 +55,7 @@ public class SortPrel extends SortRel implements Prel { return super.computeSelfCost(planner).multiplyBy(.1); } - RelNode child = this.getChild(); + RelNode child = this.getInput(); double inputRows = RelMetadataQuery.getRowCount(child); // int rowWidth = child.getRowType().getPrecision(); int numSortFields = this.collation.getFieldCollations().size(); @@ -78,11 +76,11 @@ public class SortPrel extends SortRel implements Prel { @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); - Sort g = new ExternalSort(childPOP, PrelUtil.getOrdering(this.collation, getChild().getRowType()), false); + org.apache.drill.exec.physical.config.Sort g = new ExternalSort(childPOP, PrelUtil.getOrdering(this.collation, getInput().getRowType()), false); return creator.addMetadata(this, g); } @@ -98,7 +96,7 @@ public class SortPrel extends SortRel implements Prel { @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortPrule.java index 2ebd015c8..4b6d1fbf8 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortPrule.java @@ -23,11 +23,11 @@ import org.apache.drill.exec.planner.logical.DrillRel; import org.apache.drill.exec.planner.logical.DrillSortRel; import org.apache.drill.exec.planner.logical.RelOptHelper; import org.apache.drill.exec.planner.physical.DrillDistributionTrait.DistributionField; -import org.eigenbase.rel.RelFieldCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelFieldCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -48,7 +48,7 @@ public class SortPrule extends Prule{ @Override public void onMatch(RelOptRuleCall call) { final DrillSortRel sort = (DrillSortRel) call.rel(0); - final RelNode input = sort.getChild(); + final RelNode input = sort.getInput(); // Keep the collation in logical sort. Convert input into a RelNode with 1) this collation, 2) Physical, 3) hash distributed on diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/StreamAggPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/StreamAggPrel.java index e8a70f2ce..80fe1a1fc 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/StreamAggPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/StreamAggPrel.java @@ -22,6 +22,7 @@ import java.util.BitSet; import java.util.Iterator; import java.util.List; +import org.apache.calcite.util.ImmutableBitSet; import org.apache.drill.common.logical.data.NamedExpression; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.StreamingAggregate; @@ -29,15 +30,15 @@ import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.AggregateCall; -import org.eigenbase.rel.AggregateRelBase; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.core.AggregateCall; +import org.apache.calcite.rel.core.Aggregate; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; public class StreamAggPrel extends AggPrelBase implements Prel{ @@ -45,28 +46,32 @@ public class StreamAggPrel extends AggPrelBase implements Prel{ - public StreamAggPrel(RelOptCluster cluster, RelTraitSet traits, RelNode child, BitSet groupSet, - List<AggregateCall> aggCalls, OperatorPhase phase) throws InvalidRelException { - super(cluster, traits, child, groupSet, aggCalls, phase); + public StreamAggPrel(RelOptCluster cluster, + RelTraitSet traits, + RelNode child, + boolean indicator, + ImmutableBitSet groupSet, + List<ImmutableBitSet> groupSets, + List<AggregateCall> aggCalls, + OperatorPhase phase) throws InvalidRelException { + super(cluster, traits, child, indicator, groupSet, groupSets, aggCalls, phase); } @Override - public AggregateRelBase copy(RelTraitSet traitSet, RelNode input, BitSet groupSet, List<AggregateCall> aggCalls) { + public Aggregate copy(RelTraitSet traitSet, RelNode input, boolean indicator, ImmutableBitSet groupSet, List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) { try { - return new StreamAggPrel(getCluster(), traitSet, input, getGroupSet(), aggCalls, - this.getOperatorPhase()); + return new StreamAggPrel(getCluster(), traitSet, input, indicator, groupSet, groupSets, aggCalls, this.getOperatorPhase()); } catch (InvalidRelException e) { throw new AssertionError(e); } } - @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { if(PrelUtil.getSettings(getCluster()).useDefaultCosting()) { return super.computeSelfCost(planner).multiplyBy(.1); } - RelNode child = this.getChild(); + RelNode child = this.getInput(); double inputRows = RelMetadataQuery.getRowCount(child); int numGroupByFields = this.getGroupCount(); @@ -81,7 +86,7 @@ public class StreamAggPrel extends AggPrelBase implements Prel{ @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); StreamingAggregate g = new StreamingAggregate(child.getPhysicalOperator(creator), keys.toArray(new NamedExpression[keys.size()]), aggExprs.toArray(new NamedExpression[aggExprs.size()]), 1.0f); @@ -91,7 +96,7 @@ public class StreamAggPrel extends AggPrelBase implements Prel{ @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/StreamAggPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/StreamAggPrule.java index 929cb6d53..ea7927ccb 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/StreamAggPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/StreamAggPrule.java @@ -20,27 +20,27 @@ package org.apache.drill.exec.planner.physical; import java.util.List; import java.util.logging.Logger; -import net.hydromatic.optiq.util.BitSets; +import org.apache.calcite.util.BitSets; import org.apache.drill.exec.planner.logical.DrillAggregateRel; import org.apache.drill.exec.planner.logical.RelOptHelper; import org.apache.drill.exec.planner.physical.AggPrelBase.OperatorPhase; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelCollation; -import org.eigenbase.rel.RelCollationImpl; -import org.eigenbase.rel.RelFieldCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.trace.EigenbaseTrace; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelCollationImpl; +import org.apache.calcite.rel.RelFieldCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.util.trace.CalciteTrace; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; public class StreamAggPrule extends AggPruleBase { public static final RelOptRule INSTANCE = new StreamAggPrule(); - protected static final Logger tracer = EigenbaseTrace.getPlannerTracer(); + protected static final Logger tracer = CalciteTrace.getPlannerTracer(); private StreamAggPrule() { super(RelOptHelper.some(DrillAggregateRel.class, RelOptHelper.any(RelNode.class)), "StreamAggPrule"); @@ -54,7 +54,7 @@ public class StreamAggPrule extends AggPruleBase { @Override public void onMatch(RelOptRuleCall call) { final DrillAggregateRel aggregate = (DrillAggregateRel) call.rel(0); - RelNode input = aggregate.getChild(); + RelNode input = aggregate.getInput(); final RelCollation collation = getCollation(aggregate); RelTraitSet traits = null; @@ -80,16 +80,26 @@ public class StreamAggPrule extends AggPruleBase { RelTraitSet traits = newTraitSet(Prel.DRILL_PHYSICAL, toDist); RelNode newInput = convert(rel, traits); - StreamAggPrel phase1Agg = new StreamAggPrel(aggregate.getCluster(), traits, newInput, + StreamAggPrel phase1Agg = new StreamAggPrel( + aggregate.getCluster(), + traits, + newInput, + aggregate.indicator, aggregate.getGroupSet(), + aggregate.getGroupSets(), aggregate.getAggCallList(), OperatorPhase.PHASE_1of2); UnionExchangePrel exch = new UnionExchangePrel(phase1Agg.getCluster(), singleDistTrait, phase1Agg); - return new StreamAggPrel(aggregate.getCluster(), singleDistTrait, exch, + return new StreamAggPrel( + aggregate.getCluster(), + singleDistTrait, + exch, + aggregate.indicator, aggregate.getGroupSet(), + aggregate.getGroupSets(), phase1Agg.getPhase2AggCalls(), OperatorPhase.PHASE_2of2); } @@ -132,8 +142,13 @@ public class StreamAggPrule extends AggPruleBase { RelTraitSet traits = newTraitSet(Prel.DRILL_PHYSICAL, collation, toDist); RelNode newInput = convert(rel, traits); - StreamAggPrel phase1Agg = new StreamAggPrel(aggregate.getCluster(), traits, newInput, + StreamAggPrel phase1Agg = new StreamAggPrel( + aggregate.getCluster(), + traits, + newInput, + aggregate.indicator, aggregate.getGroupSet(), + aggregate.getGroupSets(), aggregate.getAggCallList(), OperatorPhase.PHASE_1of2); @@ -145,8 +160,13 @@ public class StreamAggPrule extends AggPruleBase { collation, numEndPoints); - return new StreamAggPrel(aggregate.getCluster(), exch.getTraitSet(), exch, + return new StreamAggPrel( + aggregate.getCluster(), + exch.getTraitSet(), + exch, + aggregate.indicator, aggregate.getGroupSet(), + aggregate.getGroupSets(), phase1Agg.getPhase2AggCalls(), OperatorPhase.PHASE_2of2); } @@ -163,8 +183,15 @@ public class StreamAggPrule extends AggPruleBase { final RelNode convertedInput = convert(input, traits); - StreamAggPrel newAgg = new StreamAggPrel(aggregate.getCluster(), traits, convertedInput, aggregate.getGroupSet(), - aggregate.getAggCallList(), OperatorPhase.PHASE_1of1); + StreamAggPrel newAgg = new StreamAggPrel( + aggregate.getCluster(), + traits, + convertedInput, + aggregate.indicator, + aggregate.getGroupSet(), + aggregate.getGroupSets(), + aggregate.getAggCallList(), + OperatorPhase.PHASE_1of1); call.transformTo(newAgg); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SubsetTransformer.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SubsetTransformer.java index 72e06d947..485885a01 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SubsetTransformer.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SubsetTransformer.java @@ -17,13 +17,13 @@ */ package org.apache.drill.exec.planner.physical; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.ConventionTraitDef; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTrait; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.relopt.volcano.RelSubset; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.ConventionTraitDef; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTrait; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.plan.volcano.RelSubset; public abstract class SubsetTransformer<T extends RelNode, E extends Exception> { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(SubsetTransformer.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/TopNPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/TopNPrel.java index ac1811bce..06c131a42 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/TopNPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/TopNPrel.java @@ -25,14 +25,14 @@ import org.apache.drill.exec.physical.config.TopN; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.RelWriter; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelWriter; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; public class TopNPrel extends SinglePrel { @@ -52,11 +52,11 @@ public class TopNPrel extends SinglePrel { @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); - TopN topN = new TopN(childPOP, PrelUtil.getOrdering(this.collation, getChild().getRowType()), false, this.limit); + TopN topN = new TopN(childPOP, PrelUtil.getOrdering(this.collation, getInput().getRowType()), false, this.limit); return creator.addMetadata(this, topN); } @@ -71,7 +71,7 @@ public class TopNPrel extends SinglePrel { //We use multiplier 0.05 for TopN operator, and 0.1 for Sort, to make TopN a preferred choice. return super.computeSelfCost(planner).multiplyBy(0.05); } - RelNode child = this.getChild(); + RelNode child = this.getInput(); double inputRows = RelMetadataQuery.getRowCount(child); int numSortFields = this.collation.getFieldCollations().size(); double cpuCost = DrillCostBase.COMPARE_CPU_COST * numSortFields * inputRows * (Math.log(limit)/Math.log(2)); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionAllPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionAllPrel.java index d5698f760..ff2ad1bdf 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionAllPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionAllPrel.java @@ -25,14 +25,15 @@ import org.apache.drill.exec.physical.config.UnionAll; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.UnionRelBase; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; + +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.core.Union; import com.google.common.collect.Lists; @@ -46,7 +47,7 @@ public class UnionAllPrel extends UnionPrel { @Override - public UnionRelBase copy(RelTraitSet traitSet, List<RelNode> inputs, boolean all) { + public Union copy(RelTraitSet traitSet, List<RelNode> inputs, boolean all) { try { return new UnionAllPrel(this.getCluster(), traitSet, inputs, false /* don't check compatibility during copy */); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionAllPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionAllPrule.java index fa533f75f..0503b4482 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionAllPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionAllPrule.java @@ -22,18 +22,18 @@ import java.util.logging.Logger; import org.apache.drill.exec.planner.logical.DrillUnionRel; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.trace.EigenbaseTrace; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.util.trace.CalciteTrace; import com.google.common.collect.Lists; public class UnionAllPrule extends Prule { public static final RelOptRule INSTANCE = new UnionAllPrule(); - protected static final Logger tracer = EigenbaseTrace.getPlannerTracer(); + protected static final Logger tracer = CalciteTrace.getPlannerTracer(); private UnionAllPrule() { super( diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionDistinctPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionDistinctPrel.java index 05086edea..4ef33756c 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionDistinctPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionDistinctPrel.java @@ -25,14 +25,14 @@ import org.apache.drill.exec.physical.config.UnionAll; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.UnionRelBase; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.core.Union; import com.google.common.collect.Lists; @@ -45,7 +45,7 @@ public class UnionDistinctPrel extends UnionPrel { @Override - public UnionRelBase copy(RelTraitSet traitSet, List<RelNode> inputs, boolean all) { + public Union copy(RelTraitSet traitSet, List<RelNode> inputs, boolean all) { try { return new UnionDistinctPrel(this.getCluster(), traitSet, inputs, false /* don't check compatibility during copy */); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionDistinctPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionDistinctPrule.java index fd85448a4..8b4d62dce 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionDistinctPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionDistinctPrule.java @@ -22,18 +22,18 @@ import java.util.logging.Logger; import org.apache.drill.exec.planner.logical.DrillUnionRel; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.trace.EigenbaseTrace; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.util.trace.CalciteTrace; import com.google.common.collect.Lists; public class UnionDistinctPrule extends Prule { public static final RelOptRule INSTANCE = new UnionDistinctPrule(); - protected static final Logger tracer = EigenbaseTrace.getPlannerTracer(); + protected static final Logger tracer = CalciteTrace.getPlannerTracer(); private UnionDistinctPrule() { super( diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionExchangePrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionExchangePrel.java index c35328b45..6d73b2fed 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionExchangePrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionExchangePrel.java @@ -25,12 +25,12 @@ import org.apache.drill.exec.physical.config.UnionExchange; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptCost; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptCost; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelTraitSet; public class UnionExchangePrel extends ExchangePrel { @@ -56,7 +56,7 @@ public class UnionExchangePrel extends ExchangePrel { return super.computeSelfCost(planner).multiplyBy(.1); } - RelNode child = this.getChild(); + RelNode child = this.getInput(); double inputRows = RelMetadataQuery.getRowCount(child); int rowWidth = child.getRowType().getFieldCount() * DrillCostBase.AVG_FIELD_WIDTH; double svrCpuCost = DrillCostBase.SVR_CPU_COST * inputRows; @@ -71,7 +71,7 @@ public class UnionExchangePrel extends ExchangePrel { } public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionPrel.java index 630348987..f0440ad4a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionPrel.java @@ -23,10 +23,10 @@ import java.util.List; import org.apache.drill.exec.planner.common.DrillUnionRelBase; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; public abstract class UnionPrel extends DrillUnionRelBase implements Prel{ diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnorderedDeMuxExchangePrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnorderedDeMuxExchangePrel.java index 79253c74a..e04f6d0e5 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnorderedDeMuxExchangePrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnorderedDeMuxExchangePrel.java @@ -25,9 +25,9 @@ import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.UnorderedDeMuxExchange; import org.apache.drill.exec.planner.physical.DrillDistributionTrait.DistributionField; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; public class UnorderedDeMuxExchangePrel extends ExchangePrel { @@ -45,11 +45,11 @@ public class UnorderedDeMuxExchangePrel extends ExchangePrel { @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); - UnorderedDeMuxExchange p = new UnorderedDeMuxExchange(childPOP, PrelUtil.getHashExpression(this.fields, getChild().getRowType())); + UnorderedDeMuxExchange p = new UnorderedDeMuxExchange(childPOP, PrelUtil.getHashExpression(this.fields, getInput().getRowType())); return creator.addMetadata(this, p); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnorderedMuxExchangePrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnorderedMuxExchangePrel.java index 8ab05a0b7..d08b09389 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnorderedMuxExchangePrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnorderedMuxExchangePrel.java @@ -24,9 +24,9 @@ import java.util.List; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.UnorderedMuxExchange; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; public class UnorderedMuxExchangePrel extends ExchangePrel { @@ -41,7 +41,7 @@ public class UnorderedMuxExchangePrel extends ExchangePrel { @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ValuesPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ValuesPrel.java index f8963459f..be5bb1939 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ValuesPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ValuesPrel.java @@ -24,10 +24,10 @@ import org.apache.drill.common.JSONOptions; import org.apache.drill.exec.physical.config.Values; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.AbstractRelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; +import org.apache.calcite.rel.AbstractRelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; import com.google.common.collect.Iterators; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ValuesPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ValuesPrule.java index dbe45ca32..85d568fe5 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ValuesPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ValuesPrule.java @@ -19,10 +19,11 @@ package org.apache.drill.exec.planner.physical; import java.io.IOException; +import org.apache.calcite.plan.RelOptRule; import org.apache.drill.exec.planner.logical.DrillValuesRel; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; public class ValuesPrule extends RelOptRule { private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ValuesPrule.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrel.java index f23a073cf..4f6551a8b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrel.java @@ -19,7 +19,7 @@ package org.apache.drill.exec.planner.physical; import com.google.common.collect.Lists; -import net.hydromatic.optiq.util.BitSets; + import org.apache.drill.common.expression.ExpressionPosition; import org.apache.drill.common.expression.FieldReference; import org.apache.drill.common.expression.FunctionCall; @@ -32,13 +32,14 @@ import org.apache.drill.exec.physical.config.WindowPOP; import org.apache.drill.exec.planner.common.DrillWindowRelBase; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema; -import org.eigenbase.rel.AggregateCall; -import org.eigenbase.rel.RelFieldCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.rex.RexLiteral; +import org.apache.calcite.rel.core.AggregateCall; +import org.apache.calcite.rel.RelFieldCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.util.BitSets; import java.io.IOException; import java.util.Collections; @@ -53,32 +54,32 @@ public class WindowPrel extends DrillWindowRelBase implements Prel { RelNode child, List<RexLiteral> constants, RelDataType rowType, - Window window) { + Group window) { super(cluster, traits, child, constants, rowType, Collections.singletonList(window)); } @Override public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) { - return new WindowPrel(getCluster(), traitSet, sole(inputs), constants, getRowType(), windows.get(0)); + return new WindowPrel(getCluster(), traitSet, sole(inputs), constants, getRowType(), groups.get(0)); } @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); - final List<String> childFields = getChild().getRowType().getFieldNames(); + final List<String> childFields = getInput().getRowType().getFieldNames(); // We don't support distinct partitions - checkState(windows.size() == 1, "Only one window is expected in WindowPrel"); + checkState(groups.size() == 1, "Only one window is expected in WindowPrel"); - Window window = windows.get(0); + Group window = groups.get(0); List<NamedExpression> withins = Lists.newArrayList(); List<NamedExpression> aggs = Lists.newArrayList(); List<Order.Ordering> orderings = Lists.newArrayList(); - for (int group : BitSets.toIter(window.groupSet)) { + for (int group : BitSets.toIter(window.keys)) { FieldReference fr = new FieldReference(childFields.get(group), ExpressionPosition.UNKNOWN); withins.add(new NamedExpression(fr, fr)); } @@ -141,6 +142,6 @@ public class WindowPrel extends DrillWindowRelBase implements Prel { @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrule.java index 796c65420..db9218ad9 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrule.java @@ -22,23 +22,24 @@ import com.google.common.base.Predicate; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -import net.hydromatic.linq4j.Ord; -import net.hydromatic.optiq.util.BitSets; +import com.sun.java.swing.plaf.windows.resources.windows; +import org.apache.calcite.linq4j.Ord; +import org.apache.calcite.rel.core.Window; +import org.apache.calcite.util.BitSets; import org.apache.drill.exec.planner.logical.DrillRel; import org.apache.drill.exec.planner.logical.DrillWindowRel; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.eigenbase.rel.RelCollation; -import org.eigenbase.rel.RelCollationImpl; -import org.eigenbase.rel.RelFieldCollation; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.WindowRelBase; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.reltype.RelRecordType; -import org.eigenbase.sql.SqlAggFunction; +import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelCollationImpl; +import org.apache.calcite.rel.RelFieldCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rel.type.RelRecordType; +import org.apache.calcite.sql.SqlAggFunction; import java.util.List; @@ -57,8 +58,8 @@ public class WindowPrule extends RelOptRule { // TODO: Order window based on existing partition by //input.getTraitSet().subsumes() - for (final Ord<WindowRelBase.Window> w : Ord.zip(window.windows)) { - WindowRelBase.Window windowBase = w.getValue(); + for (final Ord<Window.Group> w : Ord.zip(window.groups)) { + Window.Group windowBase = w.getValue(); DrillDistributionTrait distOnAllKeys = new DrillDistributionTrait(DrillDistributionTrait.DistributionType.HASH_DISTRIBUTED, ImmutableList.copyOf(getDistributionFields(windowBase))); @@ -85,16 +86,16 @@ public class WindowPrule extends RelOptRule { RelDataType rowType = new RelRecordType(newRowFields); - List<WindowRelBase.RexWinAggCall> newWinAggCalls = Lists.newArrayList(); - for(Ord<WindowRelBase.RexWinAggCall> aggOrd : Ord.zip(windowBase.aggCalls)) { - WindowRelBase.RexWinAggCall aggCall = aggOrd.getValue(); - newWinAggCalls.add(new WindowRelBase.RexWinAggCall( + List<Window.RexWinAggCall> newWinAggCalls = Lists.newArrayList(); + for(Ord<Window.RexWinAggCall> aggOrd : Ord.zip(windowBase.aggCalls)) { + Window.RexWinAggCall aggCall = aggOrd.getValue(); + newWinAggCalls.add(new Window.RexWinAggCall( (SqlAggFunction)aggCall.getOperator(), aggCall.getType(), aggCall.getOperands(), aggOrd.i) ); } - windowBase = new WindowRelBase.Window( - windowBase.groupSet, + windowBase = new Window.Group( + windowBase.keys, windowBase.isRows, windowBase.lowerBound, windowBase.upperBound, @@ -114,9 +115,9 @@ public class WindowPrule extends RelOptRule { call.transformTo(input); } - private RelCollation getCollation(WindowRelBase.Window window) { + private RelCollation getCollation(Window.Group window) { List<RelFieldCollation> fields = Lists.newArrayList(); - for (int group : BitSets.toIter(window.groupSet)) { + for (int group : BitSets.toIter(window.keys)) { fields.add(new RelFieldCollation(group)); } @@ -127,9 +128,9 @@ public class WindowPrule extends RelOptRule { return RelCollationImpl.of(fields); } - private List<DrillDistributionTrait.DistributionField> getDistributionFields(WindowRelBase.Window window) { + private List<DrillDistributionTrait.DistributionField> getDistributionFields(Window.Group window) { List<DrillDistributionTrait.DistributionField> groupByFields = Lists.newArrayList(); - for (int group : BitSets.toIter(window.groupSet)) { + for (int group : BitSets.toIter(window.keys)) { DrillDistributionTrait.DistributionField field = new DrillDistributionTrait.DistributionField(group); groupByFields.add(field); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WriterPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WriterPrel.java index dc3d6dfa2..ceecb037a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WriterPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WriterPrel.java @@ -26,9 +26,9 @@ import org.apache.drill.exec.planner.common.DrillWriterRelBase; import org.apache.drill.exec.planner.logical.CreateTableEntry; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; public class WriterPrel extends DrillWriterRelBase implements Prel { @@ -46,7 +46,7 @@ public class WriterPrel extends DrillWriterRelBase implements Prel { @Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { - Prel child = (Prel) this.getChild(); + Prel child = (Prel) this.getInput(); PhysicalOperator g = getCreateTableEntry().getWriter(child.getPhysicalOperator(creator)); return creator.addMetadata(this, g); } @@ -54,7 +54,7 @@ public class WriterPrel extends DrillWriterRelBase implements Prel { @Override public Iterator<Prel> iterator() { - return PrelUtil.iter(getChild()); + return PrelUtil.iter(getInput()); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WriterPrule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WriterPrule.java index 6bd89b0b0..579066574 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WriterPrule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WriterPrule.java @@ -21,10 +21,10 @@ import org.apache.drill.exec.planner.common.DrillWriterRelBase; import org.apache.drill.exec.planner.logical.DrillRel; import org.apache.drill.exec.planner.logical.DrillWriterRel; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelTraitSet; public class WriterPrule extends Prule{ public static final RelOptRule INSTANCE = new WriterPrule(); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/NumberingRelWriter.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/NumberingRelWriter.java index 387a4424f..a54e350ef 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/NumberingRelWriter.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/NumberingRelWriter.java @@ -22,19 +22,18 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import net.hydromatic.linq4j.Ord; -import net.hydromatic.optiq.runtime.FlatLists; -import net.hydromatic.optiq.runtime.Spacer; - +import org.apache.calcite.avatica.util.Spacer; +import org.apache.calcite.linq4j.Ord; +import org.apache.calcite.runtime.FlatLists; import org.apache.drill.exec.planner.physical.HashJoinPrel; import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.planner.physical.explain.PrelSequencer.OpId; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.RelWriter; -import org.eigenbase.rel.metadata.RelMetadataQuery; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.SqlExplainLevel; -import org.eigenbase.util.Pair; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelWriter; +import org.apache.calcite.rel.metadata.RelMetadataQuery; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.SqlExplainLevel; +import org.apache.calcite.util.Pair; import com.google.common.collect.ImmutableList; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/PrelSequencer.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/PrelSequencer.java index cb6d6565e..afa61e9ba 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/PrelSequencer.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/PrelSequencer.java @@ -27,8 +27,8 @@ import java.util.Queue; import org.apache.drill.exec.planner.physical.ExchangePrel; import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.planner.physical.visitor.BasePrelVisitor; -import org.eigenbase.rel.RelWriter; -import org.eigenbase.sql.SqlExplainLevel; +import org.apache.calcite.rel.RelWriter; +import org.apache.calcite.sql.SqlExplainLevel; import com.google.common.collect.Lists; import com.google.common.collect.Maps; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ComplexToJsonPrelVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ComplexToJsonPrelVisitor.java index 37b2f8b58..fc115d99f 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ComplexToJsonPrelVisitor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ComplexToJsonPrelVisitor.java @@ -22,7 +22,7 @@ import java.util.Collections; import org.apache.drill.exec.planner.physical.ComplexToJsonPrel; import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.planner.physical.ScreenPrel; -import org.eigenbase.rel.RelNode; +import org.apache.calcite.rel.RelNode; public class ComplexToJsonPrelVisitor extends BasePrelVisitor<Prel, Void, RuntimeException> { @@ -34,7 +34,7 @@ public class ComplexToJsonPrelVisitor extends BasePrelVisitor<Prel, Void, Runtim @Override public Prel visitScreen(ScreenPrel prel, Void value) throws RuntimeException { - return prel.copy(prel.getTraitSet(), Collections.singletonList((RelNode)new ComplexToJsonPrel((Prel)prel.getChild()))); + return prel.copy(prel.getTraitSet(), Collections.singletonList((RelNode)new ComplexToJsonPrel((Prel)prel.getInput()))); } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ExcessiveExchangeIdentifier.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ExcessiveExchangeIdentifier.java index 9d748021d..cbd54be1b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ExcessiveExchangeIdentifier.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ExcessiveExchangeIdentifier.java @@ -24,7 +24,7 @@ import org.apache.drill.exec.planner.physical.ExchangePrel; import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.planner.physical.ScanPrel; import org.apache.drill.exec.planner.physical.ScreenPrel; -import org.eigenbase.rel.RelNode; +import org.apache.calcite.rel.RelNode; import com.google.common.collect.Lists; @@ -46,7 +46,7 @@ public class ExcessiveExchangeIdentifier extends BasePrelVisitor<Prel, Excessive public Prel visitExchange(ExchangePrel prel, MajorFragmentStat parent) throws RuntimeException { parent.add(prel); MajorFragmentStat newFrag = new MajorFragmentStat(); - Prel newChild = ((Prel) prel.getChild()).accept(this, newFrag); + Prel newChild = ((Prel) prel.getInput()).accept(this, newFrag); if (newFrag.isSingular() && parent.isSingular()) { return newChild; @@ -58,7 +58,7 @@ public class ExcessiveExchangeIdentifier extends BasePrelVisitor<Prel, Excessive @Override public Prel visitScreen(ScreenPrel prel, MajorFragmentStat s) throws RuntimeException { s.setSingular(); - RelNode child = ((Prel)prel.getChild()).accept(this, s); + RelNode child = ((Prel)prel.getInput()).accept(this, s); return (Prel) prel.copy(prel.getTraitSet(), Collections.singletonList(child)); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/FinalColumnReorderer.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/FinalColumnReorderer.java index 375d69f06..ef738fad8 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/FinalColumnReorderer.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/FinalColumnReorderer.java @@ -26,10 +26,10 @@ import org.apache.drill.exec.planner.physical.ProjectPrel; import org.apache.drill.exec.planner.physical.ScreenPrel; import org.apache.drill.exec.planner.physical.UnionPrel; import org.apache.drill.exec.planner.physical.WriterPrel; -import org.eigenbase.rel.RelNode; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexNode; import com.google.common.collect.Lists; @@ -44,7 +44,7 @@ public class FinalColumnReorderer extends BasePrelVisitor<Prel, Void, RuntimeExc @Override public Prel visitScreen(ScreenPrel prel, Void value) throws RuntimeException { - Prel newChild = ((Prel) prel.getChild()).accept(this, value); + Prel newChild = ((Prel) prel.getInput()).accept(this, value); return prel.copy(prel.getTraitSet(), Collections.singletonList( (RelNode) addTrivialOrderedProjectPrel(newChild, true))); } @@ -76,7 +76,7 @@ public class FinalColumnReorderer extends BasePrelVisitor<Prel, Void, RuntimeExc @Override public Prel visitWriter(WriterPrel prel, Void value) throws RuntimeException { - Prel newChild = ((Prel) prel.getChild()).accept(this, null); + Prel newChild = ((Prel) prel.getInput()).accept(this, null); return prel.copy(prel.getTraitSet(), Collections.singletonList( (RelNode) addTrivialOrderedProjectPrel(newChild, true))); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/InsertLocalExchangeVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/InsertLocalExchangeVisitor.java index ccf890d76..d8311c75f 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/InsertLocalExchangeVisitor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/InsertLocalExchangeVisitor.java @@ -31,12 +31,12 @@ import org.apache.drill.exec.planner.physical.UnorderedDeMuxExchangePrel; import org.apache.drill.exec.planner.physical.UnorderedMuxExchangePrel; import org.apache.drill.exec.planner.sql.DrillSqlOperator; import org.apache.drill.exec.server.options.OptionManager; -import org.eigenbase.rel.RelNode; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexUtil; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexUtil; import java.util.Collections; import java.util.List; @@ -67,7 +67,7 @@ public class InsertLocalExchangeVisitor extends BasePrelVisitor<Prel, Void, Runt @Override public Prel visitExchange(ExchangePrel prel, Void value) throws RuntimeException { - Prel child = ((Prel)prel.getChild()).accept(this, null); + Prel child = ((Prel)prel.getInput()).accept(this, null); // Whenever we encounter a HashToRandomExchangePrel // If MuxExchange is enabled, insert a UnorderedMuxExchangePrel before HashToRandomExchangePrel. // If DeMuxExchange is enabled, insert a UnorderedDeMuxExchangePrel after HashToRandomExchangePrel. diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/JoinPrelRenameVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/JoinPrelRenameVisitor.java index fa750c23a..6726f1bb5 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/JoinPrelRenameVisitor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/JoinPrelRenameVisitor.java @@ -22,7 +22,7 @@ import java.util.List; import org.apache.drill.exec.planner.physical.JoinPrel; import org.apache.drill.exec.planner.physical.Prel; -import org.eigenbase.rel.RelNode; +import org.apache.calcite.rel.RelNode; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/MemoryEstimationVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/MemoryEstimationVisitor.java index 0fd1dd005..37d2cb512 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/MemoryEstimationVisitor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/MemoryEstimationVisitor.java @@ -21,7 +21,7 @@ import org.apache.drill.exec.ExecConstants; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.server.options.OptionManager; -import org.eigenbase.rel.metadata.RelMetadataQuery; +import org.apache.calcite.rel.metadata.RelMetadataQuery; public class MemoryEstimationVisitor extends BasePrelVisitor<Double, Void, RuntimeException> { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ProducerConsumerPrelVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ProducerConsumerPrelVisitor.java index 2cbf790f8..79758f5d7 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ProducerConsumerPrelVisitor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ProducerConsumerPrelVisitor.java @@ -22,7 +22,7 @@ import java.util.List; import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.planner.physical.ProducerConsumerPrel; import org.apache.drill.exec.planner.physical.ScanPrel; -import org.eigenbase.rel.RelNode; +import org.apache.calcite.rel.RelNode; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RelUniqifier.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RelUniqifier.java index 6ef9776cb..0bcfba5f1 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RelUniqifier.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RelUniqifier.java @@ -21,7 +21,7 @@ import java.util.List; import java.util.Set; import org.apache.drill.exec.planner.physical.Prel; -import org.eigenbase.rel.RelNode; +import org.apache.calcite.rel.RelNode; import com.google.common.collect.Lists; import com.google.common.collect.Sets; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RewriteProjectToFlatten.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RewriteProjectToFlatten.java index bedc7bc94..21a95b87a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RewriteProjectToFlatten.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RewriteProjectToFlatten.java @@ -18,31 +18,20 @@ package org.apache.drill.exec.planner.physical.visitor; import com.google.common.collect.Lists; -import net.hydromatic.optiq.tools.RelConversionException; -import org.apache.drill.common.exceptions.DrillRuntimeException; -import org.apache.drill.exec.expr.fn.FunctionImplementationRegistry; +import org.apache.calcite.tools.RelConversionException; import org.apache.drill.exec.planner.physical.FlattenPrel; import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.planner.physical.ProjectPrel; -import org.apache.drill.exec.planner.physical.visitor.BasePrelVisitor; import org.apache.drill.exec.planner.types.RelDataTypeDrillImpl; import org.apache.drill.exec.planner.types.RelDataTypeHolder; -import org.eigenbase.rel.ProjectRelBase; -import org.eigenbase.rel.RelShuttleImpl; import org.apache.drill.exec.planner.sql.DrillOperatorTable; -import org.eigenbase.rel.ProjectRel; -import org.eigenbase.rel.RelNode; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.reltype.RelDataTypeFieldImpl; -import org.eigenbase.reltype.RelRecordType; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.SqlFunction; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.util.NlsString; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rel.type.RelRecordType; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexNode; import java.util.ArrayList; import java.util.List; @@ -107,7 +96,7 @@ public class RewriteProjectToFlatten extends BasePrelVisitor<Prel, Object, RelCo return flatten; } - Prel child = ((Prel)project.getChild()).accept(this, null); + Prel child = ((Prel)project.getInput()).accept(this, null); return (Prel) project.copy(project.getTraitSet(), child, exprList, new RelRecordType(relDataTypes)); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RexVisitorComplexExprSplitter.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RexVisitorComplexExprSplitter.java index 9742a907a..da829734f 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RexVisitorComplexExprSplitter.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RexVisitorComplexExprSplitter.java @@ -21,19 +21,19 @@ import org.apache.drill.exec.expr.fn.FunctionImplementationRegistry; import org.apache.drill.exec.planner.physical.ProjectPrel; import org.apache.drill.exec.planner.types.RelDataTypeDrillImpl; import org.apache.drill.exec.planner.types.RelDataTypeHolder; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexCorrelVariable; -import org.eigenbase.rex.RexDynamicParam; -import org.eigenbase.rex.RexFieldAccess; -import org.eigenbase.rex.RexInputRef; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.rex.RexLocalRef; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexOver; -import org.eigenbase.rex.RexRangeRef; -import org.eigenbase.rex.RexVisitorImpl; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexCorrelVariable; +import org.apache.calcite.rex.RexDynamicParam; +import org.apache.calcite.rex.RexFieldAccess; +import org.apache.calcite.rex.RexInputRef; +import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.rex.RexLocalRef; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexOver; +import org.apache.calcite.rex.RexRangeRef; +import org.apache.calcite.rex.RexVisitorImpl; import java.util.ArrayList; import java.util.List; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SelectionVectorPrelVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SelectionVectorPrelVisitor.java index 4e4d6c113..58e29f096 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SelectionVectorPrelVisitor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SelectionVectorPrelVisitor.java @@ -22,7 +22,7 @@ import java.util.List; import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.planner.physical.SelectionVectorRemoverPrel; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -import org.eigenbase.rel.RelNode; +import org.apache.calcite.rel.RelNode; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SplitUpComplexExpressions.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SplitUpComplexExpressions.java index 9e01c428f..ebc825bd5 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SplitUpComplexExpressions.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SplitUpComplexExpressions.java @@ -20,38 +20,24 @@ package org.apache.drill.exec.planner.physical.visitor; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; -import net.hydromatic.optiq.tools.RelConversionException; +import org.apache.calcite.tools.RelConversionException; import org.apache.drill.exec.expr.fn.FunctionImplementationRegistry; import org.apache.drill.exec.planner.StarColumnHelper; -import org.apache.drill.exec.planner.logical.DrillRel; -import org.apache.drill.exec.planner.logical.DrillScanRel; -import org.apache.drill.exec.planner.logical.DrillTable; -import org.apache.drill.exec.planner.physical.FlattenPrel; import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.planner.physical.PrelUtil; import org.apache.drill.exec.planner.physical.ProjectPrel; -import org.apache.drill.exec.planner.physical.PrelUtil.ProjectPushInfo; -import org.apache.drill.exec.planner.physical.visitor.BasePrelVisitor; import org.apache.drill.exec.planner.types.RelDataTypeDrillImpl; import org.apache.drill.exec.planner.types.RelDataTypeHolder; -import org.eigenbase.rel.ProjectRelBase; -import org.eigenbase.rel.RelShuttleImpl; import org.apache.drill.exec.planner.sql.DrillOperatorTable; -import org.eigenbase.rel.ProjectRel; -import org.eigenbase.rel.RelNode; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.reltype.RelDataTypeFieldImpl; -import org.eigenbase.reltype.RelRecordType; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexCall; -import org.eigenbase.rex.RexLiteral; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.SqlFunction; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.type.SqlTypeName; -import org.eigenbase.util.NlsString; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rel.type.RelDataTypeFieldImpl; +import org.apache.calcite.rel.type.RelRecordType; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.type.SqlTypeName; import java.util.ArrayList; import java.util.List; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/StarColumnConverter.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/StarColumnConverter.java index 9f4924e7d..7a471d7f1 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/StarColumnConverter.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/StarColumnConverter.java @@ -24,23 +24,21 @@ import java.util.HashSet; import java.util.List; import java.util.concurrent.atomic.AtomicLong; -import com.google.common.base.Preconditions; +import org.apache.calcite.rel.rules.ProjectRemoveRule; import org.apache.drill.exec.planner.StarColumnHelper; -import org.apache.drill.exec.planner.physical.JoinPrel; import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.planner.physical.ProjectAllowDupPrel; import org.apache.drill.exec.planner.physical.ProjectPrel; import org.apache.drill.exec.planner.physical.ScanPrel; import org.apache.drill.exec.planner.physical.ScreenPrel; import org.apache.drill.exec.planner.physical.WriterPrel; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.rules.RemoveTrivialProjectRule; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.rex.RexInputRef; -import org.eigenbase.rex.RexNode; -import org.eigenbase.rex.RexUtil; -import org.eigenbase.util.Pair; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rex.RexInputRef; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexUtil; +import org.apache.calcite.util.Pair; import com.google.common.collect.Lists; @@ -81,7 +79,7 @@ public class StarColumnConverter extends BasePrelVisitor<Prel, Void, RuntimeExce if (prefixedForStar) { if (!prefixedForWriter) { // Prefix is added for SELECT only, not for CTAS writer. - return insertProjUnderScreenOrWriter(prel, prel.getChild().getRowType(), child); + return insertProjUnderScreenOrWriter(prel, prel.getInput().getRowType(), child); } else { // Prefix is added under CTAS Writer. We need create a new Screen with the converted child. return (Prel) prel.copy(prel.getTraitSet(), Collections.<RelNode>singletonList(child)); @@ -97,7 +95,7 @@ public class StarColumnConverter extends BasePrelVisitor<Prel, Void, RuntimeExce Prel child = ((Prel) prel.getInput(0)).accept(this, null); if (prefixedForStar) { prefixedForWriter = true; - return insertProjUnderScreenOrWriter(prel, prel.getChild().getRowType(), child); + return insertProjUnderScreenOrWriter(prel, prel.getInput().getRowType(), child); } else { return prel; } @@ -135,7 +133,7 @@ public class StarColumnConverter extends BasePrelVisitor<Prel, Void, RuntimeExce // Require prefix rename : there exists other expression, in addition to a star column. if (!prefixedForStar // not set yet. - && StarColumnHelper.containsStarColumnInProject(prel.getChild().getRowType(), proj.getProjects()) + && StarColumnHelper.containsStarColumnInProject(prel.getInput().getRowType(), proj.getProjects()) && prel.getRowType().getFieldNames().size() > 1) { prefixedForStar = true; } @@ -164,7 +162,7 @@ public class StarColumnConverter extends BasePrelVisitor<Prel, Void, RuntimeExce ProjectPrel newProj = (ProjectPrel) proj.copy(proj.getTraitSet(), child, proj.getProjects(), rowType); - if (RemoveTrivialProjectRule.isTrivial(newProj)) { + if (ProjectRemoveRule.isTrivial(newProj)) { return (Prel) child; } else { return newProj; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SwapHashJoinVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SwapHashJoinVisitor.java index 18d5e6043..96c79028e 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SwapHashJoinVisitor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SwapHashJoinVisitor.java @@ -23,9 +23,9 @@ import org.apache.drill.exec.planner.physical.HashJoinPrel; import org.apache.drill.exec.planner.physical.JoinPrel; import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.planner.physical.PrelUtil; -import org.eigenbase.rel.JoinRelType; -import org.eigenbase.rel.RelNode; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.core.JoinRelType; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rex.RexNode; import java.util.List; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/Checker.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/Checker.java index a22da177b..42aa72872 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/Checker.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/Checker.java @@ -17,10 +17,10 @@ */ package org.apache.drill.exec.planner.sql; -import org.eigenbase.sql.SqlCallBinding; -import org.eigenbase.sql.SqlOperandCountRange; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.type.SqlOperandTypeChecker; +import org.apache.calcite.sql.SqlCallBinding; +import org.apache.calcite.sql.SqlOperandCountRange; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.type.SqlOperandTypeChecker; class Checker implements SqlOperandTypeChecker { private SqlOperandCountRange range; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillConvertletTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillConvertletTable.java index 7c8989762..78404d4ea 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillConvertletTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillConvertletTable.java @@ -19,12 +19,12 @@ package org.apache.drill.exec.planner.sql; import java.util.HashMap; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.fun.SqlStdOperatorTable; -import org.eigenbase.sql2rel.SqlRexConvertlet; -import org.eigenbase.sql2rel.SqlRexConvertletTable; -import org.eigenbase.sql2rel.StandardConvertletTable; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.sql2rel.SqlRexConvertlet; +import org.apache.calcite.sql2rel.SqlRexConvertletTable; +import org.apache.calcite.sql2rel.StandardConvertletTable; public class DrillConvertletTable implements SqlRexConvertletTable{ diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillExtractConvertlet.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillExtractConvertlet.java index 31aa36458..7bf2584c2 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillExtractConvertlet.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillExtractConvertlet.java @@ -20,15 +20,15 @@ package org.apache.drill.exec.planner.sql; import java.util.LinkedList; import java.util.List; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.type.SqlTypeName; -import org.eigenbase.sql2rel.SqlRexContext; -import org.eigenbase.sql2rel.SqlRexConvertlet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.type.SqlTypeName; +import org.apache.calcite.sql2rel.SqlRexContext; +import org.apache.calcite.sql2rel.SqlRexConvertlet; public class DrillExtractConvertlet implements SqlRexConvertlet { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillOperatorTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillOperatorTable.java index 97d873c50..b319863a0 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillOperatorTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillOperatorTable.java @@ -20,12 +20,12 @@ package org.apache.drill.exec.planner.sql; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Lists; import org.apache.drill.exec.expr.fn.FunctionImplementationRegistry; -import org.eigenbase.sql.SqlFunctionCategory; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.SqlOperatorTable; -import org.eigenbase.sql.SqlSyntax; -import org.eigenbase.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.sql.SqlFunctionCategory; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.SqlOperatorTable; +import org.apache.calcite.sql.SqlSyntax; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; import java.util.List; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlAggOperator.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlAggOperator.java index 7ab2e9fb7..213620162 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlAggOperator.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlAggOperator.java @@ -19,17 +19,17 @@ package org.apache.drill.exec.planner.sql; import java.util.List; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.sql.SqlAggFunction; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlFunctionCategory; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.parser.SqlParserPos; -import org.eigenbase.sql.type.SqlTypeName; -import org.eigenbase.sql.validate.SqlValidator; -import org.eigenbase.sql.validate.SqlValidatorScope; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.sql.SqlAggFunction; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlFunctionCategory; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.parser.SqlParserPos; +import org.apache.calcite.sql.type.SqlTypeName; +import org.apache.calcite.sql.validate.SqlValidator; +import org.apache.calcite.sql.validate.SqlValidatorScope; import com.google.common.collect.ImmutableList; @@ -51,13 +51,13 @@ public class DrillSqlAggOperator extends SqlAggFunction { // return new RelDataTypeDrillImpl(new RelDataTypeHolder(), factory); } - @Override - public List<RelDataType> getParameterTypes(RelDataTypeFactory typeFactory) { - return ImmutableList.of(typeFactory.createSqlType(SqlTypeName.ANY)); - } - - @Override - public RelDataType getReturnType(RelDataTypeFactory typeFactory) { - return getAny(typeFactory); - } +// @Override +// public List<RelDataType> getParameterTypes(RelDataTypeFactory typeFactory) { +// return ImmutableList.of(typeFactory.createSqlType(SqlTypeName.ANY)); +// } +// +// @Override +// public RelDataType getReturnType(RelDataTypeFactory typeFactory) { +// return getAny(typeFactory); +// } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlOperator.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlOperator.java index 7bd48c80a..776da3fc4 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlOperator.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlOperator.java @@ -21,17 +21,17 @@ package org.apache.drill.exec.planner.sql; import com.google.common.base.Preconditions; import org.apache.drill.common.types.TypeProtos.MajorType; import org.apache.drill.common.types.TypeProtos.MinorType; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlFunction; -import org.eigenbase.sql.SqlFunctionCategory; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlOperatorBinding; -import org.eigenbase.sql.parser.SqlParserPos; -import org.eigenbase.sql.type.SqlTypeName; -import org.eigenbase.sql.validate.SqlValidator; -import org.eigenbase.sql.validate.SqlValidatorScope; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlFunction; +import org.apache.calcite.sql.SqlFunctionCategory; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlOperatorBinding; +import org.apache.calcite.sql.parser.SqlParserPos; +import org.apache.calcite.sql.type.SqlTypeName; +import org.apache.calcite.sql.validate.SqlValidator; +import org.apache.calcite.sql.validate.SqlValidatorScope; public class DrillSqlOperator extends SqlFunction { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(DrillSqlOperator.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlWorker.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlWorker.java index d56f1dbcf..ebe7aeb44 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlWorker.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlWorker.java @@ -21,13 +21,14 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import net.hydromatic.optiq.config.Lex; -import net.hydromatic.optiq.tools.FrameworkConfig; -import net.hydromatic.optiq.tools.Frameworks; -import net.hydromatic.optiq.tools.Planner; -import net.hydromatic.optiq.tools.RelConversionException; -import net.hydromatic.optiq.tools.RuleSet; -import net.hydromatic.optiq.tools.ValidationException; +import org.apache.calcite.config.Lex; +import org.apache.calcite.rel.rules.ProjectToWindowRule; +import org.apache.calcite.tools.FrameworkConfig; +import org.apache.calcite.tools.Frameworks; +import org.apache.calcite.tools.Planner; +import org.apache.calcite.tools.RelConversionException; +import org.apache.calcite.tools.RuleSet; +import org.apache.calcite.tools.ValidationException; import org.apache.drill.common.exceptions.UserException; import org.apache.drill.exec.ops.QueryContext; @@ -44,23 +45,25 @@ import org.apache.drill.exec.planner.sql.handlers.SqlHandlerConfig; import org.apache.drill.exec.planner.sql.parser.DrillSqlCall; import org.apache.drill.exec.planner.sql.parser.SqlCreateTable; import org.apache.drill.exec.planner.sql.parser.impl.DrillParserWithCompoundIdConverter; +import org.apache.drill.exec.proto.UserBitShared.DrillPBError.ErrorType; +import org.apache.drill.exec.planner.types.DrillRelDataTypeSystem; import org.apache.drill.exec.store.StoragePluginRegistry; import org.apache.drill.exec.testing.ExecutionControlsInjector; import org.apache.drill.exec.util.Pointer; import org.apache.drill.exec.work.foreman.ForemanException; import org.apache.drill.exec.work.foreman.ForemanSetupException; -import org.apache.hadoop.security.AccessControlException; -import org.eigenbase.rel.RelCollationTraitDef; -import org.eigenbase.rel.rules.ReduceExpressionsRule; -import org.eigenbase.rel.rules.WindowedAggSplitterRule; -import org.eigenbase.relopt.ConventionTraitDef; -import org.eigenbase.relopt.RelOptCostFactory; -import org.eigenbase.relopt.RelTraitDef; -import org.eigenbase.relopt.hep.HepPlanner; -import org.eigenbase.relopt.hep.HepProgramBuilder; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.parser.SqlParseException; -import org.eigenbase.sql.parser.SqlParser; +import org.apache.calcite.rel.RelCollationTraitDef; +import org.apache.calcite.rel.rules.ReduceExpressionsRule; +import org.apache.calcite.plan.ConventionTraitDef; +import org.apache.calcite.plan.RelOptCostFactory; +import org.apache.calcite.plan.RelTraitDef; +import org.apache.calcite.plan.hep.HepPlanner; +import org.apache.calcite.plan.hep.HepProgramBuilder; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.parser.SqlAbstractParserImpl; +import org.apache.calcite.sql.parser.SqlParseException; +import org.apache.calcite.sql.parser.SqlParser; +import org.apache.calcite.sql.parser.SqlParserImplFactory; public class DrillSqlWorker { // private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(DrillSqlWorker.class); @@ -84,8 +87,11 @@ public class DrillSqlWorker { int idMaxLength = (int)context.getPlannerSettings().getIdentifierMaxLength(); FrameworkConfig config = Frameworks.newConfigBuilder() // - .parserConfig(new SqlParser.ParserConfigImpl(Lex.MYSQL, idMaxLength)) // - .parserFactory(DrillParserWithCompoundIdConverter.FACTORY) // + .parserConfig(SqlParser.configBuilder() + .setLex(Lex.MYSQL) + .setIdentifierMaxLength(idMaxLength) + .setParserFactory(DrillParserWithCompoundIdConverter.FACTORY) + .build()) // .defaultSchema(context.getNewDefaultSchema()) // .operatorTable(context.getDrillOperatorTable()) // .traitDefs(traitDefs) // @@ -94,14 +100,15 @@ public class DrillSqlWorker { .ruleSets(getRules(context)) // .costFactory(costFactory) // .executor(new DrillConstExecutor(context.getFunctionRegistry(), context)) + .typeSystem(DrillRelDataTypeSystem.DRILL_REL_DATATYPE_SYSTEM) // .build(); this.planner = Frameworks.getPlanner(config); HepProgramBuilder builder = new HepProgramBuilder(); builder.addRuleClass(ReduceExpressionsRule.class); - builder.addRuleClass(WindowedAggSplitterRule.class); + builder.addRuleClass(ProjectToWindowRule.class); this.hepPlanner = new HepPlanner(builder.build()); hepPlanner.addRule(ReduceExpressionsRule.CALC_INSTANCE); - hepPlanner.addRule(WindowedAggSplitterRule.PROJECT); + hepPlanner.addRule(ProjectToWindowRule.PROJECT); } private RuleSet[] getRules(QueryContext context) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DynamicReturnType.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DynamicReturnType.java index 1fe1d27de..c43a8a24b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DynamicReturnType.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DynamicReturnType.java @@ -17,7 +17,7 @@ */ package org.apache.drill.exec.planner.sql; -import org.eigenbase.sql.type.ExplicitReturnTypeInference; +import org.apache.calcite.sql.type.ExplicitReturnTypeInference; class DynamicReturnType extends ExplicitReturnTypeInference { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DynamicType.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DynamicType.java index 7255dae99..8bd5532a0 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DynamicType.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DynamicType.java @@ -17,10 +17,10 @@ */ package org.apache.drill.exec.planner.sql; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.reltype.RelProtoDataType; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelProtoDataType; +import org.apache.calcite.sql.type.SqlTypeName; class DynamicType implements RelProtoDataType { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/FixedRange.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/FixedRange.java index 91a7c65d1..16527452b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/FixedRange.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/FixedRange.java @@ -17,7 +17,7 @@ */ package org.apache.drill.exec.planner.sql; -import org.eigenbase.sql.SqlOperandCountRange; +import org.apache.calcite.sql.SqlOperandCountRange; class FixedRange implements SqlOperandCountRange{ diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/AbstractSqlHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/AbstractSqlHandler.java index 56c2a42cd..96fd877a7 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/AbstractSqlHandler.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/AbstractSqlHandler.java @@ -20,14 +20,14 @@ package org.apache.drill.exec.planner.sql.handlers; import java.io.IOException; import java.util.List; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.tools.RelConversionException; -import net.hydromatic.optiq.tools.ValidationException; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.tools.RelConversionException; +import org.apache.calcite.tools.ValidationException; import org.apache.drill.exec.physical.PhysicalPlan; import org.apache.drill.exec.store.AbstractSchema; import org.apache.drill.exec.work.foreman.ForemanSetupException; -import org.eigenbase.sql.SqlNode; +import org.apache.calcite.sql.SqlNode; import com.google.common.base.Joiner; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/CreateTableHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/CreateTableHandler.java index 3e990c6bd..f2097bef1 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/CreateTableHandler.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/CreateTableHandler.java @@ -19,9 +19,10 @@ package org.apache.drill.exec.planner.sql.handlers; import java.io.IOException; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.tools.RelConversionException; -import net.hydromatic.optiq.tools.ValidationException; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.tools.Planner; +import org.apache.calcite.tools.RelConversionException; +import org.apache.calcite.tools.ValidationException; import org.apache.drill.exec.physical.PhysicalPlan; import org.apache.drill.exec.physical.base.PhysicalOperator; @@ -36,8 +37,11 @@ import org.apache.drill.exec.planner.sql.parser.SqlCreateTable; import org.apache.drill.exec.store.AbstractSchema; import org.apache.drill.exec.util.Pointer; import org.apache.drill.exec.work.foreman.ForemanSetupException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.sql.SqlNode; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.plan.hep.HepPlanner; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.sql.SqlNode; public class CreateTableHandler extends DefaultSqlHandler { public CreateTableHandler(SqlHandlerConfig config, Pointer<String> textPlan) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java index 5ee502d27..22f9803bb 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java @@ -22,9 +22,9 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import net.hydromatic.optiq.tools.Planner; -import net.hydromatic.optiq.tools.RelConversionException; -import net.hydromatic.optiq.tools.ValidationException; +import org.apache.calcite.tools.Planner; +import org.apache.calcite.tools.RelConversionException; +import org.apache.calcite.tools.ValidationException; import org.apache.drill.common.JSONOptions; import org.apache.drill.common.logical.PlanProperties; @@ -66,13 +66,13 @@ import org.apache.drill.exec.util.Pointer; import org.apache.drill.exec.work.foreman.ForemanSetupException; import org.apache.drill.exec.work.foreman.SqlUnsupportedException; import org.apache.drill.exec.work.foreman.UnsupportedRelOperatorException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptPlanner; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.relopt.hep.HepPlanner; -import org.eigenbase.sql.SqlExplainLevel; -import org.eigenbase.sql.SqlNode; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptPlanner; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.plan.hep.HepPlanner; +import org.apache.calcite.sql.SqlExplainLevel; +import org.apache.calcite.sql.SqlNode; import com.fasterxml.jackson.core.JsonProcessingException; import com.google.common.base.Preconditions; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeTableHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeTableHandler.java index 709a77fa5..15721d52d 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeTableHandler.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeTableHandler.java @@ -22,9 +22,9 @@ import static org.apache.drill.exec.planner.sql.parser.DrillParserUtil.CHARSET; import java.util.List; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.tools.Planner; -import net.hydromatic.optiq.tools.RelConversionException; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.tools.Planner; +import org.apache.calcite.tools.RelConversionException; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.planner.sql.parser.DrillParserUtil; @@ -32,15 +32,15 @@ import org.apache.drill.exec.planner.sql.parser.SqlDescribeTable; import org.apache.drill.exec.store.AbstractSchema; import org.apache.drill.exec.store.ischema.InfoSchemaConstants; import org.apache.drill.exec.work.foreman.ForemanSetupException; -import org.eigenbase.relopt.hep.HepPlanner; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlNodeList; -import org.eigenbase.sql.SqlSelect; -import org.eigenbase.sql.fun.SqlStdOperatorTable; -import org.eigenbase.sql.parser.SqlParserPos; -import org.eigenbase.util.Util; +import org.apache.calcite.plan.hep.HepPlanner; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlNodeList; +import org.apache.calcite.sql.SqlSelect; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.sql.parser.SqlParserPos; +import org.apache.calcite.util.Util; import com.google.common.collect.ImmutableList; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ExplainHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ExplainHandler.java index 1cce6a57e..d1420dff9 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ExplainHandler.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ExplainHandler.java @@ -19,8 +19,8 @@ package org.apache.drill.exec.planner.sql.handlers; import java.io.IOException; -import net.hydromatic.optiq.tools.RelConversionException; -import net.hydromatic.optiq.tools.ValidationException; +import org.apache.calcite.tools.RelConversionException; +import org.apache.calcite.tools.ValidationException; import org.apache.drill.common.logical.LogicalPlan; import org.apache.drill.common.logical.PlanProperties.Generator.ResultMode; @@ -34,12 +34,12 @@ import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.planner.physical.explain.PrelSequencer; import org.apache.drill.exec.planner.sql.DirectPlan; import org.apache.drill.exec.work.foreman.ForemanSetupException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.sql.SqlExplain; -import org.eigenbase.sql.SqlExplainLevel; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.sql.SqlExplain; +import org.apache.calcite.sql.SqlExplainLevel; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; public class ExplainHandler extends DefaultSqlHandler { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ExplainHandler.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/SetOptionHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/SetOptionHandler.java index dc63ef95c..19c9f7fb5 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/SetOptionHandler.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/SetOptionHandler.java @@ -19,17 +19,17 @@ package org.apache.drill.exec.planner.sql.handlers; import java.io.IOException; -import net.hydromatic.optiq.tools.RelConversionException; -import net.hydromatic.optiq.tools.ValidationException; +import org.apache.calcite.tools.RelConversionException; +import org.apache.calcite.tools.ValidationException; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.physical.PhysicalPlan; import org.apache.drill.exec.planner.sql.DirectPlan; import org.apache.drill.exec.server.options.OptionValue; import org.apache.drill.exec.work.foreman.ForemanSetupException; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlSetOption; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlSetOption; public class SetOptionHandler extends AbstractSqlHandler { // private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(SetOptionHandler.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowFileHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowFileHandler.java index 2504ed99f..706237544 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowFileHandler.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowFileHandler.java @@ -21,9 +21,9 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.tools.RelConversionException; -import net.hydromatic.optiq.tools.ValidationException; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.tools.RelConversionException; +import org.apache.calcite.tools.ValidationException; import org.apache.drill.exec.physical.PhysicalPlan; import org.apache.drill.exec.planner.sql.DirectPlan; @@ -33,8 +33,8 @@ import org.apache.drill.exec.store.dfs.WorkspaceSchemaFactory.WorkspaceSchema; import org.apache.drill.exec.store.dfs.DrillFileSystem; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.Path; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlNode; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlNode; public class ShowFileHandler extends DefaultSqlHandler { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowSchemasHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowSchemasHandler.java index ef3e1b04a..a037be3db 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowSchemasHandler.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowSchemasHandler.java @@ -20,18 +20,18 @@ package org.apache.drill.exec.planner.sql.handlers; import java.util.List; -import net.hydromatic.optiq.tools.RelConversionException; +import org.apache.calcite.tools.RelConversionException; import org.apache.drill.exec.planner.sql.parser.DrillParserUtil; import org.apache.drill.exec.planner.sql.parser.SqlShowSchemas; import org.apache.drill.exec.store.ischema.InfoSchemaConstants; import org.apache.drill.exec.work.foreman.ForemanSetupException; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlNodeList; -import org.eigenbase.sql.SqlSelect; -import org.eigenbase.sql.fun.SqlStdOperatorTable; -import org.eigenbase.sql.parser.SqlParserPos; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlNodeList; +import org.apache.calcite.sql.SqlSelect; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.sql.parser.SqlParserPos; import com.google.common.collect.ImmutableList; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowTablesHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowTablesHandler.java index be53c8428..4ac81e98d 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowTablesHandler.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowTablesHandler.java @@ -22,21 +22,21 @@ import static org.apache.drill.exec.planner.sql.parser.DrillParserUtil.CHARSET; import java.util.List; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.tools.RelConversionException; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.tools.RelConversionException; import org.apache.drill.exec.planner.sql.parser.DrillParserUtil; import org.apache.drill.exec.planner.sql.parser.SqlShowTables; import org.apache.drill.exec.store.AbstractSchema; import org.apache.drill.exec.store.ischema.InfoSchemaConstants; import org.apache.drill.exec.work.foreman.ForemanSetupException; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlNodeList; -import org.eigenbase.sql.SqlSelect; -import org.eigenbase.sql.fun.SqlStdOperatorTable; -import org.eigenbase.sql.parser.SqlParserPos; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlNodeList; +import org.apache.calcite.sql.SqlSelect; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.sql.parser.SqlParserPos; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/SqlHandlerConfig.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/SqlHandlerConfig.java index 132a2c97b..4027fe6c4 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/SqlHandlerConfig.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/SqlHandlerConfig.java @@ -18,9 +18,9 @@ package org.apache.drill.exec.planner.sql.handlers; -import net.hydromatic.optiq.tools.Planner; +import org.apache.calcite.tools.Planner; import org.apache.drill.exec.ops.QueryContext; -import org.eigenbase.relopt.hep.HepPlanner; +import org.apache.calcite.plan.hep.HepPlanner; public class SqlHandlerConfig { private final QueryContext context; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/SqlHandlerUtil.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/SqlHandlerUtil.java index c347bef6c..2572ace2a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/SqlHandlerUtil.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/SqlHandlerUtil.java @@ -17,19 +17,21 @@ */ package org.apache.drill.exec.planner.sql.handlers; -import net.hydromatic.optiq.Table; -import net.hydromatic.optiq.tools.Planner; -import net.hydromatic.optiq.tools.RelConversionException; -import net.hydromatic.optiq.tools.ValidationException; +import org.apache.calcite.schema.Table; +import org.apache.calcite.tools.Planner; +import org.apache.calcite.tools.RelConversionException; import org.apache.drill.common.exceptions.DrillException; import org.apache.drill.exec.planner.common.DrillRelOptUtil; import org.apache.drill.exec.planner.sql.DirectPlan; import org.apache.drill.exec.planner.types.DrillFixedRelDataTypeImpl; import org.apache.drill.exec.store.AbstractSchema; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptUtil; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.sql.SqlNode; + +import org.apache.calcite.tools.ValidationException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.sql.SqlNode; +import org.apache.drill.exec.store.ischema.Records; import java.util.List; @@ -81,7 +83,8 @@ public class SqlHandlerUtil { // SELECT col1, median(col2), avg(col3) FROM sourcetbl GROUP BY col1 ; // Similary for CREATE VIEW. - return DrillRelOptUtil.createRename(validatedQueryRelNode, tableFieldNames); + return RelOptUtil.createRename(validatedQueryRelNode, tableFieldNames); + // return DrillRelOptUtil.createRename(validatedQueryRelNode, tableFieldNames); } return validatedQueryRelNode; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/UseSchemaHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/UseSchemaHandler.java index f99aea383..e17e275d5 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/UseSchemaHandler.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/UseSchemaHandler.java @@ -19,15 +19,15 @@ package org.apache.drill.exec.planner.sql.handlers; import java.io.IOException; -import net.hydromatic.optiq.tools.RelConversionException; -import net.hydromatic.optiq.tools.ValidationException; +import org.apache.calcite.tools.RelConversionException; +import org.apache.calcite.tools.ValidationException; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.physical.PhysicalPlan; import org.apache.drill.exec.planner.sql.DirectPlan; import org.apache.drill.exec.planner.sql.parser.SqlUseSchema; import org.apache.drill.exec.work.foreman.ForemanSetupException; -import org.eigenbase.sql.SqlNode; +import org.apache.calcite.sql.SqlNode; public class UseSchemaHandler extends AbstractSqlHandler { QueryContext context; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ViewHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ViewHandler.java index 00fc5228e..2428b45f0 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ViewHandler.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ViewHandler.java @@ -20,12 +20,12 @@ package org.apache.drill.exec.planner.sql.handlers; import java.io.IOException; import java.util.List; -import net.hydromatic.optiq.Schema.TableType; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.Table; -import net.hydromatic.optiq.tools.Planner; -import net.hydromatic.optiq.tools.RelConversionException; -import net.hydromatic.optiq.tools.ValidationException; +import org.apache.calcite.schema.Schema; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.schema.Table; +import org.apache.calcite.tools.Planner; +import org.apache.calcite.tools.RelConversionException; +import org.apache.calcite.tools.ValidationException; import org.apache.drill.exec.dotdrill.View; import org.apache.drill.exec.ops.QueryContext; @@ -36,8 +36,8 @@ import org.apache.drill.exec.planner.sql.parser.SqlDropView; import org.apache.drill.exec.store.AbstractSchema; import org.apache.drill.exec.store.dfs.WorkspaceSchemaFactory.WorkspaceSchema; import org.apache.drill.exec.work.foreman.ForemanSetupException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.sql.SqlNode; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.sql.SqlNode; import com.google.common.collect.ImmutableList; @@ -92,14 +92,14 @@ public abstract class ViewHandler extends AbstractSqlHandler { final Table existingTable = SqlHandlerUtil.getTableFromSchema(drillSchema, viewName); if (existingTable != null) { - if (existingTable.getJdbcTableType() != TableType.VIEW) { + if (existingTable.getJdbcTableType() != Schema.TableType.VIEW) { // existing table is not a view throw new ValidationException( String.format("A non-view table with given name [%s] already exists in schema [%s]", viewName, schemaPath)); } - if (existingTable.getJdbcTableType() == TableType.VIEW && !createView.getReplace()) { + if (existingTable.getJdbcTableType() == Schema.TableType.VIEW && !createView.getReplace()) { // existing table is a view and create view has no "REPLACE" clause throw new ValidationException( String.format("A view with given name [%s] already exists in schema [%s]", diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/CompoundIdentifierConverter.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/CompoundIdentifierConverter.java index eb9794167..bfa89a501 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/CompoundIdentifierConverter.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/CompoundIdentifierConverter.java @@ -20,14 +20,14 @@ package org.apache.drill.exec.planner.sql.parser; import java.util.List; import java.util.Map; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlJoin; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlOrderBy; -import org.eigenbase.sql.SqlSelect; -import org.eigenbase.sql.util.SqlShuttle; -import org.eigenbase.sql.util.SqlVisitor; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlJoin; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlOrderBy; +import org.apache.calcite.sql.SqlSelect; +import org.apache.calcite.sql.util.SqlShuttle; +import org.apache.calcite.sql.util.SqlVisitor; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillCompoundIdentifier.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillCompoundIdentifier.java index d5fa215f0..fe96be437 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillCompoundIdentifier.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillCompoundIdentifier.java @@ -20,12 +20,12 @@ package org.apache.drill.exec.planner.sql.parser; import java.util.Collections; import java.util.List; -import org.eigenbase.sql.SqlBasicCall; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.fun.SqlStdOperatorTable; -import org.eigenbase.sql.parser.SqlParserPos; +import org.apache.calcite.sql.SqlBasicCall; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.sql.parser.SqlParserPos; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillParserUtil.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillParserUtil.java index cba5a1865..b6eb31afc 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillParserUtil.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillParserUtil.java @@ -20,10 +20,10 @@ package org.apache.drill.exec.planner.sql.parser; import java.util.List; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.parser.SqlParserPos; -import org.eigenbase.sql.parser.SqlParserUtil; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.parser.SqlParserPos; +import org.apache.calcite.sql.parser.SqlParserUtil; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillSqlCall.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillSqlCall.java index 3e8d4f1dc..007b75406 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillSqlCall.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillSqlCall.java @@ -17,16 +17,16 @@ */ package org.apache.drill.exec.planner.sql.parser; -import net.hydromatic.optiq.tools.Planner; +import org.apache.calcite.tools.Planner; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.planner.sql.handlers.AbstractSqlHandler; import org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler; import org.apache.drill.exec.planner.sql.handlers.SqlHandlerConfig; +import org.apache.calcite.plan.hep.HepPlanner; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.parser.SqlParserPos; import org.apache.drill.exec.util.Pointer; -import org.eigenbase.relopt.hep.HepPlanner; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.parser.SqlParserPos; /** * SqlCall interface with addition of method to get the handler. @@ -44,4 +44,4 @@ public abstract class DrillSqlCall extends SqlCall { public AbstractSqlHandler getSqlHandler(SqlHandlerConfig config, Pointer<String> textPlan) { return new DefaultSqlHandler(config, textPlan); } -}
\ No newline at end of file +} diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlCreateTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlCreateTable.java index ae1c744c5..9fd9d92aa 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlCreateTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlCreateTable.java @@ -19,27 +19,27 @@ package org.apache.drill.exec.planner.sql.parser; import java.util.List; -import net.hydromatic.optiq.tools.Planner; +import org.apache.calcite.tools.Planner; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.planner.sql.handlers.AbstractSqlHandler; import org.apache.drill.exec.planner.sql.handlers.CreateTableHandler; import org.apache.drill.exec.planner.sql.handlers.SqlHandlerConfig; -import org.apache.drill.exec.util.Pointer; -import org.eigenbase.relopt.hep.HepPlanner; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlNodeList; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.SqlSpecialOperator; -import org.eigenbase.sql.SqlWriter; -import org.eigenbase.sql.parser.SqlParserPos; +import org.apache.calcite.plan.hep.HepPlanner; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlNodeList; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.SqlSpecialOperator; +import org.apache.calcite.sql.SqlWriter; +import org.apache.calcite.sql.parser.SqlParserPos; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; +import org.apache.drill.exec.util.Pointer; public class SqlCreateTable extends DrillSqlCall { public static final SqlSpecialOperator OPERATOR = new SqlSpecialOperator("CREATE_TABLE", SqlKind.OTHER) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlCreateView.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlCreateView.java index b7352b4b4..57cfde905 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlCreateView.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlCreateView.java @@ -22,16 +22,16 @@ import com.google.common.collect.Lists; import org.apache.drill.exec.planner.sql.handlers.AbstractSqlHandler; import org.apache.drill.exec.planner.sql.handlers.SqlHandlerConfig; import org.apache.drill.exec.planner.sql.handlers.ViewHandler; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlNodeList; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.SqlSpecialOperator; -import org.eigenbase.sql.SqlWriter; -import org.eigenbase.sql.parser.SqlParserPos; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlNodeList; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.SqlSpecialOperator; +import org.apache.calcite.sql.SqlWriter; +import org.apache.calcite.sql.parser.SqlParserPos; import java.util.List; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDescribeTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDescribeTable.java index 7d464e144..3a09aeaf5 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDescribeTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDescribeTable.java @@ -19,22 +19,22 @@ package org.apache.drill.exec.planner.sql.parser; import java.util.List; -import net.hydromatic.optiq.tools.Planner; +import org.apache.calcite.tools.Planner; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.planner.sql.handlers.AbstractSqlHandler; import org.apache.drill.exec.planner.sql.handlers.DescribeTableHandler; import org.apache.drill.exec.planner.sql.handlers.SqlHandlerConfig; -import org.eigenbase.relopt.hep.HepPlanner; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.SqlSpecialOperator; -import org.eigenbase.sql.SqlWriter; -import org.eigenbase.sql.parser.SqlParserPos; +import org.apache.calcite.plan.hep.HepPlanner; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.SqlSpecialOperator; +import org.apache.calcite.sql.SqlWriter; +import org.apache.calcite.sql.parser.SqlParserPos; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDropView.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDropView.java index a0d6f7b2d..473dbcbde 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDropView.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDropView.java @@ -20,22 +20,22 @@ package org.apache.drill.exec.planner.sql.parser; import java.util.Collections; import java.util.List; -import net.hydromatic.optiq.tools.Planner; +import org.apache.calcite.tools.Planner; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.planner.sql.handlers.AbstractSqlHandler; import org.apache.drill.exec.planner.sql.handlers.SqlHandlerConfig; import org.apache.drill.exec.planner.sql.handlers.ViewHandler.DropView; -import org.eigenbase.relopt.hep.HepPlanner; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.SqlSpecialOperator; -import org.eigenbase.sql.SqlWriter; -import org.eigenbase.sql.parser.SqlParserPos; +import org.apache.calcite.plan.hep.HepPlanner; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.SqlSpecialOperator; +import org.apache.calcite.sql.SqlWriter; +import org.apache.calcite.sql.parser.SqlParserPos; import com.google.common.collect.ImmutableList; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlShowFiles.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlShowFiles.java index 38abfeb83..8df33241b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlShowFiles.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlShowFiles.java @@ -20,22 +20,22 @@ package org.apache.drill.exec.planner.sql.parser; import java.util.Collections; import java.util.List; -import net.hydromatic.optiq.tools.Planner; +import org.apache.calcite.tools.Planner; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.planner.sql.handlers.AbstractSqlHandler; import org.apache.drill.exec.planner.sql.handlers.ShowFileHandler; import org.apache.drill.exec.planner.sql.handlers.SqlHandlerConfig; -import org.eigenbase.relopt.hep.HepPlanner; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.SqlSpecialOperator; -import org.eigenbase.sql.SqlWriter; -import org.eigenbase.sql.parser.SqlParserPos; +import org.apache.calcite.plan.hep.HepPlanner; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.SqlSpecialOperator; +import org.apache.calcite.sql.SqlWriter; +import org.apache.calcite.sql.parser.SqlParserPos; /** * Sql parse tree node to represent statement: diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlShowSchemas.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlShowSchemas.java index 9d8771a11..6e95e100c 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlShowSchemas.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlShowSchemas.java @@ -19,21 +19,21 @@ package org.apache.drill.exec.planner.sql.parser; import java.util.List; -import net.hydromatic.optiq.tools.Planner; +import org.apache.calcite.tools.Planner; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.planner.sql.handlers.AbstractSqlHandler; import org.apache.drill.exec.planner.sql.handlers.ShowSchemasHandler; import org.apache.drill.exec.planner.sql.handlers.SqlHandlerConfig; -import org.eigenbase.relopt.hep.HepPlanner; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.SqlSpecialOperator; -import org.eigenbase.sql.SqlWriter; -import org.eigenbase.sql.parser.SqlParserPos; +import org.apache.calcite.plan.hep.HepPlanner; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.SqlSpecialOperator; +import org.apache.calcite.sql.SqlWriter; +import org.apache.calcite.sql.parser.SqlParserPos; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlShowTables.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlShowTables.java index da3f0fd1b..4d4ab09e7 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlShowTables.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlShowTables.java @@ -21,15 +21,15 @@ import com.google.common.collect.Lists; import org.apache.drill.exec.planner.sql.handlers.AbstractSqlHandler; import org.apache.drill.exec.planner.sql.handlers.ShowTablesHandler; import org.apache.drill.exec.planner.sql.handlers.SqlHandlerConfig; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.SqlSpecialOperator; -import org.eigenbase.sql.SqlWriter; -import org.eigenbase.sql.parser.SqlParserPos; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.SqlSpecialOperator; +import org.apache.calcite.sql.SqlWriter; +import org.apache.calcite.sql.parser.SqlParserPos; import java.util.List; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlUseSchema.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlUseSchema.java index c8af0021d..2f8eeb8ee 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlUseSchema.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlUseSchema.java @@ -20,15 +20,15 @@ package org.apache.drill.exec.planner.sql.parser; import org.apache.drill.exec.planner.sql.handlers.AbstractSqlHandler; import org.apache.drill.exec.planner.sql.handlers.SqlHandlerConfig; import org.apache.drill.exec.planner.sql.handlers.UseSchemaHandler; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlIdentifier; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.SqlOperator; -import org.eigenbase.sql.SqlSpecialOperator; -import org.eigenbase.sql.SqlWriter; -import org.eigenbase.sql.parser.SqlParserPos; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlIdentifier; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.SqlSpecialOperator; +import org.apache.calcite.sql.SqlWriter; +import org.apache.calcite.sql.parser.SqlParserPos; import java.util.Collections; import java.util.List; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/UnsupportedOperatorsVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/UnsupportedOperatorsVisitor.java index 4830fe188..45bf26ffa 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/UnsupportedOperatorsVisitor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/UnsupportedOperatorsVisitor.java @@ -21,15 +21,15 @@ import org.apache.drill.exec.ExecConstants; import org.apache.drill.exec.exception.UnsupportedOperatorCollector; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.work.foreman.SqlUnsupportedException; -import org.eigenbase.sql.SqlCall; -import org.eigenbase.sql.SqlKind; -import org.eigenbase.sql.SqlJoin; -import org.eigenbase.sql.JoinType; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.type.SqlTypeName; -import org.eigenbase.sql.util.SqlShuttle; -import org.eigenbase.sql.SqlDataTypeSpec; -import org.eigenbase.sql.SqlSetOperator; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlJoin; +import org.apache.calcite.sql.JoinType; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.type.SqlTypeName; +import org.apache.calcite.sql.util.SqlShuttle; +import org.apache.calcite.sql.SqlDataTypeSpec; +import org.apache.calcite.sql.SqlSetOperator; import java.util.List; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/impl/DrillParserWithCompoundIdConverter.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/impl/DrillParserWithCompoundIdConverter.java index be333c08b..6048d847a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/impl/DrillParserWithCompoundIdConverter.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/impl/DrillParserWithCompoundIdConverter.java @@ -21,15 +21,15 @@ import java.io.Reader; import org.apache.drill.exec.planner.physical.PlannerSettings; import org.apache.drill.exec.planner.sql.parser.CompoundIdentifierConverter; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.parser.SqlAbstractParserImpl; -import org.eigenbase.sql.parser.SqlParserImplFactory; -import org.eigenbase.sql.util.SqlVisitor; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.parser.SqlAbstractParserImpl; +import org.apache.calcite.sql.parser.SqlParserImplFactory; +import org.apache.calcite.sql.util.SqlVisitor; public class DrillParserWithCompoundIdConverter extends DrillParserImpl { /** - * {@link org.eigenbase.sql.parser.SqlParserImplFactory} implementation for creating parser. + * {@link org.apache.calcite.sql.parser.SqlParserImplFactory} implementation for creating parser. */ public static final SqlParserImplFactory FACTORY = new SqlParserImplFactory() { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/torel/ConversionContext.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/torel/ConversionContext.java index 5f9061a35..4c027e1fc 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/torel/ConversionContext.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/torel/ConversionContext.java @@ -20,8 +20,7 @@ package org.apache.drill.exec.planner.torel; import java.util.List; import java.util.Map; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.prepare.Prepare; +import org.apache.calcite.prepare.Prepare; import org.apache.drill.common.expression.LogicalExpression; import org.apache.drill.common.logical.LogicalPlan; @@ -43,16 +42,16 @@ import org.apache.drill.exec.planner.logical.DrillSortRel; import org.apache.drill.exec.planner.logical.DrillUnionRel; import org.apache.drill.exec.planner.logical.ScanFieldDeterminer; import org.apache.drill.exec.planner.logical.ScanFieldDeterminer.FieldList; -import org.eigenbase.rel.InvalidRelException; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptCluster; -import org.eigenbase.relopt.RelOptTable; -import org.eigenbase.relopt.RelOptTable.ToRelContext; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.InvalidRelException; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptTable; +import org.apache.calcite.plan.RelOptTable.ToRelContext; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexNode; public class ConversionContext implements ToRelContext { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ConversionContext.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/DrillFixedRelDataTypeImpl.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/DrillFixedRelDataTypeImpl.java index d88f883b0..e23b35328 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/DrillFixedRelDataTypeImpl.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/DrillFixedRelDataTypeImpl.java @@ -20,13 +20,13 @@ package org.apache.drill.exec.planner.types; import java.util.Collections; import java.util.List; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.reltype.RelDataTypeFieldImpl; -import org.eigenbase.reltype.RelDataTypeImpl; -import org.eigenbase.reltype.RelDataTypePrecedenceList; -import org.eigenbase.sql.type.SqlTypeExplicitPrecedenceList; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rel.type.RelDataTypeFieldImpl; +import org.apache.calcite.rel.type.RelDataTypeImpl; +import org.apache.calcite.rel.type.RelDataTypePrecedenceList; +import org.apache.calcite.sql.type.SqlTypeExplicitPrecedenceList; +import org.apache.calcite.sql.type.SqlTypeName; import com.google.common.collect.Lists; @@ -54,17 +54,7 @@ public class DrillFixedRelDataTypeImpl extends RelDataTypeImpl { } @Override - public List<RelDataTypeField> getFieldList() { - return fields; - } - - @Override - public int getFieldCount() { - return fields.size(); - } - - @Override - public RelDataTypeField getField(String fieldName, boolean caseSensitive) { + public RelDataTypeField getField(String fieldName, boolean caseSensitive, boolean elideRecord) { // return the field with given name if available. for (RelDataTypeField f : fields) { if (fieldName.equalsIgnoreCase(f.getName())) { @@ -75,6 +65,16 @@ public class DrillFixedRelDataTypeImpl extends RelDataTypeImpl { } @Override + public List<RelDataTypeField> getFieldList() { + return fields; + } + + @Override + public int getFieldCount() { + return fields.size(); + } + + @Override public List<String> getFieldNames() { List<String> fieldNames = Lists.newArrayList(); for (RelDataTypeField f : fields) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/DrillRelDataTypeSystem.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/DrillRelDataTypeSystem.java new file mode 100644 index 000000000..d4c868bdc --- /dev/null +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/DrillRelDataTypeSystem.java @@ -0,0 +1,39 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.drill.exec.planner.types; + +import org.apache.calcite.rel.type.RelDataTypeSystem; +import org.apache.calcite.rel.type.RelDataTypeSystemImpl; +import org.apache.calcite.sql.type.SqlTypeName; + +public class DrillRelDataTypeSystem extends RelDataTypeSystemImpl { + + public static final RelDataTypeSystem DRILL_REL_DATATYPE_SYSTEM = new DrillRelDataTypeSystem(); + + @Override + public int getMaxNumericScale() { + return 38; + } + + @Override + public int getMaxNumericPrecision() { + return 38; + } + +} diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeDrillImpl.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeDrillImpl.java index 559cf68ee..25ce5931c 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeDrillImpl.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeDrillImpl.java @@ -20,13 +20,13 @@ package org.apache.drill.exec.planner.types; import java.util.Collections; import java.util.List; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.reltype.RelDataTypeFamily; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.reltype.RelDataTypeImpl; -import org.eigenbase.reltype.RelDataTypePrecedenceList; -import org.eigenbase.sql.type.SqlTypeExplicitPrecedenceList; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataTypeFamily; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rel.type.RelDataTypeImpl; +import org.apache.calcite.rel.type.RelDataTypePrecedenceList; +import org.apache.calcite.sql.type.SqlTypeExplicitPrecedenceList; +import org.apache.calcite.sql.type.SqlTypeName; /* We use an instance of this class as the row type for * Drill table. Since we don't know the schema before hand @@ -57,7 +57,7 @@ public class RelDataTypeDrillImpl extends RelDataTypeImpl { } @Override - public RelDataTypeField getField(String fieldName, boolean caseSensitive) { + public RelDataTypeField getField(String fieldName, boolean caseSensitive, boolean elideRecord) { return holder.getField(typeFactory, fieldName); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeHolder.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeHolder.java index 1485aa32e..483b2776f 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeHolder.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeHolder.java @@ -19,10 +19,10 @@ package org.apache.drill.exec.planner.types; import java.util.List; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.reltype.RelDataTypeFieldImpl; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rel.type.RelDataTypeFieldImpl; +import org.apache.calcite.sql.type.SqlTypeName; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/UserSession.java b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/UserSession.java index e6317929a..527bac073 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/UserSession.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/UserSession.java @@ -20,7 +20,7 @@ package org.apache.drill.exec.rpc.user; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; -import net.hydromatic.optiq.SchemaPlus; +import org.apache.calcite.schema.SchemaPlus; import org.apache.drill.exec.proto.UserBitShared.UserCredentials; import org.apache.drill.exec.proto.UserProtos.Property; @@ -145,7 +145,7 @@ public class UserSession { /** * Get default schema from current default schema path and given schema tree. * @param rootSchema - * @return A {@link net.hydromatic.optiq.SchemaPlus} object. + * @return A {@link org.apache.calcite.schema.SchemaPlus} object. */ public SchemaPlus getDefaultSchema(SchemaPlus rootSchema) { return findSchema(rootSchema, getProp(SCHEMA)); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/FallbackOptionManager.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/FallbackOptionManager.java index 682bfea79..0af816df2 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/FallbackOptionManager.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/FallbackOptionManager.java @@ -20,7 +20,7 @@ package org.apache.drill.exec.server.options; import java.util.Iterator; import org.apache.drill.exec.server.options.OptionValue.OptionType; -import org.eigenbase.sql.SqlLiteral; +import org.apache.calcite.sql.SqlLiteral; import com.google.common.collect.Iterables; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionManager.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionManager.java index 0fed1fb12..1bdc10810 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionManager.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionManager.java @@ -17,12 +17,7 @@ */ package org.apache.drill.exec.server.options; -import org.apache.drill.exec.server.options.OptionValue.OptionType; -import org.apache.drill.exec.server.options.TypeValidators.BooleanValidator; -import org.apache.drill.exec.server.options.TypeValidators.DoubleValidator; -import org.apache.drill.exec.server.options.TypeValidators.LongValidator; -import org.apache.drill.exec.server.options.TypeValidators.StringValidator; -import org.eigenbase.sql.SqlLiteral; +import org.apache.calcite.sql.SqlLiteral; public interface OptionManager extends Iterable<OptionValue> { public OptionValue getOption(String name); @@ -32,15 +27,15 @@ public interface OptionManager extends Iterable<OptionValue> { public OptionManager getSystemManager(); public OptionList getOptionList(); - public boolean getOption(BooleanValidator validator); - public double getOption(DoubleValidator validator); - public long getOption(LongValidator validator); - public String getOption(StringValidator validator); + public boolean getOption(TypeValidators.BooleanValidator validator); + public double getOption(TypeValidators.DoubleValidator validator); + public long getOption(TypeValidators.LongValidator validator); + public String getOption(TypeValidators.StringValidator validator); public interface OptionAdmin { public void registerOptionType(OptionValidator validator); public OptionValidator getValidator(String name); public void validate(OptionValue v) throws SetOptionException; - public OptionValue validate(String name, SqlLiteral value, OptionType optionType) throws SetOptionException; + public OptionValue validate(String name, SqlLiteral value, OptionValue.OptionType optionType) throws SetOptionException; } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionValidator.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionValidator.java index 90ce3a169..31a25fc5e 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionValidator.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/OptionValidator.java @@ -18,8 +18,7 @@ package org.apache.drill.exec.server.options; import org.apache.drill.common.exceptions.ExpressionParsingException; -import org.apache.drill.exec.server.options.OptionValue.OptionType; -import org.eigenbase.sql.SqlLiteral; +import org.apache.calcite.sql.SqlLiteral; /** * Validates the values provided to Drill options. @@ -47,7 +46,7 @@ public abstract class OptionValidator { * while allowing some flexibility for users * @throws ExpressionParsingException - message to describe error with value, including range or list of expected values */ - public abstract OptionValue validate(SqlLiteral value, OptionType optionType) throws ExpressionParsingException; + public abstract OptionValue validate(SqlLiteral value, OptionValue.OptionType optionType) throws ExpressionParsingException; public String getOptionName() { return optionName; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java index 3dc7c14f2..a394efe8c 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java @@ -37,7 +37,7 @@ import org.apache.drill.exec.server.options.TypeValidators.StringValidator; import org.apache.drill.exec.store.sys.PStore; import org.apache.drill.exec.store.sys.PStoreConfig; import org.apache.drill.exec.store.sys.PStoreProvider; -import org.eigenbase.sql.SqlLiteral; +import org.apache.calcite.sql.SqlLiteral; import com.google.common.collect.Maps; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/TypeValidators.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/TypeValidators.java index e7b1eb3d1..b8597b724 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/TypeValidators.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/TypeValidators.java @@ -26,9 +26,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.drill.common.exceptions.ExpressionParsingException; import org.apache.drill.exec.server.options.OptionValue.Kind; import org.apache.drill.exec.server.options.OptionValue.OptionType; -import org.eigenbase.sql.SqlLiteral; -import org.eigenbase.sql.type.SqlTypeName; -import org.eigenbase.util.NlsString; + +import org.apache.calcite.sql.type.SqlTypeName; +import org.apache.calcite.sql.SqlLiteral; +import org.apache.calcite.util.NlsString; public class TypeValidators { // private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(TypeValidators.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/AbstractSchema.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/AbstractSchema.java index 9477a5957..2d6ac4f06 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/AbstractSchema.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/AbstractSchema.java @@ -22,12 +22,12 @@ import java.util.Collections; import java.util.List; import java.util.Set; -import net.hydromatic.linq4j.expressions.DefaultExpression; -import net.hydromatic.linq4j.expressions.Expression; -import net.hydromatic.optiq.Function; -import net.hydromatic.optiq.Schema; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.Table; +import org.apache.calcite.linq4j.tree.DefaultExpression; +import org.apache.calcite.linq4j.tree.Expression; +import org.apache.calcite.schema.Function; +import org.apache.calcite.schema.Schema; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.schema.Table; import org.apache.drill.exec.planner.logical.CreateTableEntry; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/PartitionExplorerImpl.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/PartitionExplorerImpl.java index 024ca09ff..b092ff374 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/PartitionExplorerImpl.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/PartitionExplorerImpl.java @@ -17,7 +17,7 @@ ******************************************************************************/ package org.apache.drill.exec.store; -import net.hydromatic.optiq.SchemaPlus; +import org.apache.calcite.schema.SchemaPlus; import java.util.List; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/RecordDataType.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/RecordDataType.java index 889db12aa..a562b77ce 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/RecordDataType.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/RecordDataType.java @@ -18,9 +18,9 @@ package org.apache.drill.exec.store; import com.google.common.collect.Lists; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.sql.type.SqlTypeName; import java.util.List; @@ -30,7 +30,7 @@ import java.util.List; public abstract class RecordDataType { /** - * @return the {@link org.eigenbase.sql.type.SqlTypeName} of columns in the table + * @return the {@link org.apache.calcite.sql.type.SqlTypeName} of columns in the table */ public abstract List<SqlTypeName> getFieldSqlTypeNames(); @@ -40,10 +40,10 @@ public abstract class RecordDataType { public abstract List<String> getFieldNames(); /** - * This method constructs a {@link org.eigenbase.reltype.RelDataType} based on the + * This method constructs a {@link org.apache.calcite.rel.type.RelDataType} based on the * {@link org.apache.drill.exec.store.RecordDataType}'s field sql types and field names. * - * @param factory helps construct a {@link org.eigenbase.reltype.RelDataType} + * @param factory helps construct a {@link org.apache.calcite.rel.type.RelDataType} * @return the constructed type */ public final RelDataType getRowType(RelDataTypeFactory factory) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/SchemaFactory.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/SchemaFactory.java index e2dc6135d..b28c3c208 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/SchemaFactory.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/SchemaFactory.java @@ -17,7 +17,7 @@ */ package org.apache.drill.exec.store; -import net.hydromatic.optiq.SchemaPlus; +import org.apache.calcite.schema.SchemaPlus; import org.apache.drill.exec.ops.QueryContext; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/StoragePluginOptimizerRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/StoragePluginOptimizerRule.java index 32ec6fffa..8b4f0e648 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/StoragePluginOptimizerRule.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/StoragePluginOptimizerRule.java @@ -17,8 +17,8 @@ */ package org.apache.drill.exec.store; -import org.eigenbase.relopt.RelOptRule; -import org.eigenbase.relopt.RelOptRuleOperand; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleOperand; public abstract class StoragePluginOptimizerRule extends RelOptRule { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/StoragePluginRegistry.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/StoragePluginRegistry.java index bda4cc844..80a0876ad 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/StoragePluginRegistry.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/StoragePluginRegistry.java @@ -31,8 +31,8 @@ import java.util.Set; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.TimeUnit; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.tools.RuleSet; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.tools.RuleSet; import org.apache.drill.common.config.DrillConfig; import org.apache.drill.common.exceptions.DrillRuntimeException; @@ -56,7 +56,7 @@ import org.apache.drill.exec.store.sys.PStore; import org.apache.drill.exec.store.sys.PStoreConfig; import org.apache.drill.exec.store.sys.SystemTablePlugin; import org.apache.drill.exec.store.sys.SystemTablePluginConfig; -import org.eigenbase.relopt.RelOptRule; +import org.apache.calcite.plan.RelOptRule; import com.google.common.base.Charsets; import com.google.common.base.Stopwatch; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/SubSchemaWrapper.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/SubSchemaWrapper.java index c79255092..4e50bc1cb 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/SubSchemaWrapper.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/SubSchemaWrapper.java @@ -21,8 +21,9 @@ import java.util.Collection; import java.util.List; import java.util.Set; -import net.hydromatic.optiq.Function; -import net.hydromatic.optiq.Table; +import org.apache.calcite.schema.Function; +import org.apache.calcite.schema.Schema; +import org.apache.calcite.schema.Table; import org.apache.drill.exec.planner.logical.CreateTableEntry; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/FileSystemPlugin.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/FileSystemPlugin.java index 93fb0a08e..4ae0cc8d6 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/FileSystemPlugin.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/FileSystemPlugin.java @@ -22,7 +22,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import net.hydromatic.optiq.SchemaPlus; +import org.apache.calcite.schema.SchemaPlus; import org.apache.drill.common.JSONOptions; import org.apache.drill.common.exceptions.ExecutionSetupException; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/FileSystemSchemaFactory.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/FileSystemSchemaFactory.java index 30d8d2592..fa9aa892b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/FileSystemSchemaFactory.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/FileSystemSchemaFactory.java @@ -23,9 +23,10 @@ import java.util.List; import java.util.Map; import java.util.Set; -import net.hydromatic.optiq.Function; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.Table; +import org.apache.calcite.schema.Function; +import org.apache.calcite.schema.Schema; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.schema.Table; import org.apache.drill.exec.ops.QueryContext; import org.apache.drill.exec.planner.logical.CreateTableEntry; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/WorkspaceSchemaFactory.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/WorkspaceSchemaFactory.java index 7cd50b02b..916564df7 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/WorkspaceSchemaFactory.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/WorkspaceSchemaFactory.java @@ -27,7 +27,7 @@ import java.util.regex.Pattern; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; -import net.hydromatic.optiq.Table; +import org.apache.calcite.schema.Table; import org.apache.drill.common.config.DrillConfig; import org.apache.drill.common.exceptions.ExecutionSetupException; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaDrillTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaDrillTable.java index ab94727ac..423294057 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaDrillTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaDrillTable.java @@ -19,8 +19,8 @@ package org.apache.drill.exec.store.ischema; import org.apache.drill.common.logical.StoragePluginConfig; import org.apache.drill.exec.planner.logical.DrillTable; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; public class InfoSchemaDrillTable extends DrillTable{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(InfoSchemaDrillTable.class); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaPushFilterIntoRecordGenerator.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaPushFilterIntoRecordGenerator.java index 61cc47b22..0cf12b4b5 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaPushFilterIntoRecordGenerator.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaPushFilterIntoRecordGenerator.java @@ -27,10 +27,10 @@ import org.apache.drill.exec.planner.physical.FilterPrel; import org.apache.drill.exec.planner.physical.ProjectPrel; import org.apache.drill.exec.planner.physical.ScanPrel; import org.apache.drill.exec.store.StoragePluginOptimizerRule; -import org.eigenbase.rel.RelNode; -import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelOptRuleOperand; -import org.eigenbase.rex.RexNode; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRuleOperand; +import org.apache.calcite.rex.RexNode; import com.google.common.collect.ImmutableList; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaStoragePlugin.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaStoragePlugin.java index 4dfde7d3d..0a9c32cc9 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaStoragePlugin.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaStoragePlugin.java @@ -23,8 +23,8 @@ import java.util.Map; import java.util.Set; import com.google.common.collect.ImmutableSet; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.Table; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.schema.Table; import org.apache.drill.common.JSONOptions; import org.apache.drill.common.expression.SchemaPath; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaTable.java index 66ba2e3c0..0e9ca538c 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaTable.java @@ -22,9 +22,9 @@ import java.util.List; import org.apache.drill.common.types.TypeProtos.MajorType; import org.apache.drill.common.types.TypeProtos.MinorType; import org.apache.drill.common.types.Types; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.sql.type.SqlTypeName; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/RecordGenerator.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/RecordGenerator.java index 5b132c635..772b9e447 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/RecordGenerator.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/RecordGenerator.java @@ -21,18 +21,18 @@ import java.util.List; import java.util.Map; import com.google.common.collect.ImmutableMap; -import net.hydromatic.optiq.Schema.TableType; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.Table; -import net.hydromatic.optiq.jdbc.JavaTypeFactoryImpl; +import org.apache.calcite.schema.Schema.TableType; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.schema.Table; +import org.apache.calcite.jdbc.JavaTypeFactoryImpl; import org.apache.drill.exec.planner.logical.DrillViewInfoProvider; import org.apache.drill.exec.store.AbstractSchema; import org.apache.drill.exec.store.RecordReader; import org.apache.drill.exec.store.ischema.InfoSchemaFilter.Result; import org.apache.drill.exec.store.pojo.PojoRecordReader; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeField; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeField; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/Records.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/Records.java index ec8ee2bb7..f14fa7ec0 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/Records.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/Records.java @@ -18,9 +18,9 @@ package org.apache.drill.exec.store.ischema; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeField; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.sql.type.SqlTypeName; public class Records { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/SelectedTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/SelectedTable.java index 2c0a50318..088736b00 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/SelectedTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/SelectedTable.java @@ -17,7 +17,7 @@ */ package org.apache.drill.exec.store.ischema; -import net.hydromatic.optiq.SchemaPlus; +import org.apache.calcite.schema.SchemaPlus; import org.apache.drill.exec.store.RecordReader; import org.apache.drill.exec.store.ischema.InfoSchemaTable.Catalogs; @@ -25,8 +25,8 @@ import org.apache.drill.exec.store.ischema.InfoSchemaTable.Columns; import org.apache.drill.exec.store.ischema.InfoSchemaTable.Schemata; import org.apache.drill.exec.store.ischema.InfoSchemaTable.Tables; import org.apache.drill.exec.store.ischema.InfoSchemaTable.Views; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; public enum SelectedTable{ CATALOGS(new Catalogs()), diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/mock/MockStorageEngine.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/mock/MockStorageEngine.java index 1689300e3..d68fd5288 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/mock/MockStorageEngine.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/mock/MockStorageEngine.java @@ -21,7 +21,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import net.hydromatic.optiq.SchemaPlus; +import org.apache.calcite.schema.SchemaPlus; import org.apache.drill.common.JSONOptions; import org.apache.drill.common.expression.SchemaPath; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/pojo/PojoDataType.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/pojo/PojoDataType.java index 2acb72760..9b04fd84e 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/pojo/PojoDataType.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/pojo/PojoDataType.java @@ -22,10 +22,12 @@ import java.lang.reflect.Modifier; import java.sql.Timestamp; import java.util.List; -import org.apache.drill.exec.store.RecordDataType; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.sql.type.SqlTypeName; import com.google.common.collect.Lists; +import org.apache.drill.exec.store.RecordDataType; /** * This class uses reflection of a Java class to construct a {@link org.apache.drill.exec.store.RecordDataType}. diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/StaticDrillTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/StaticDrillTable.java index d9374cb0e..8b7225ebb 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/StaticDrillTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/StaticDrillTable.java @@ -20,8 +20,9 @@ package org.apache.drill.exec.store.sys; import org.apache.drill.exec.planner.logical.DrillTable; import org.apache.drill.exec.store.RecordDataType; import org.apache.drill.exec.store.StoragePlugin; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.reltype.RelDataTypeFactory; +import org.apache.drill.exec.store.pojo.PojoDataType; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; /** * A {@link org.apache.drill.exec.planner.logical.DrillTable} with a defined schema diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTable.java index e2ac9ed37..9a5aa655b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTable.java @@ -22,6 +22,10 @@ import org.apache.drill.exec.ops.FragmentContext; import org.apache.drill.exec.server.options.DrillConfigIterator; import org.apache.drill.exec.server.options.OptionManager; import org.apache.drill.exec.server.options.OptionValue; +import org.apache.drill.exec.store.RecordDataType; +import org.apache.drill.exec.store.pojo.PojoDataType; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeFactory; import java.util.Iterator; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTablePlugin.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTablePlugin.java index a13c945f0..bac02cada 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTablePlugin.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/sys/SystemTablePlugin.java @@ -25,7 +25,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; -import net.hydromatic.optiq.SchemaPlus; +import org.apache.calcite.schema.SchemaPlus; import org.apache.drill.common.JSONOptions; import org.apache.drill.common.expression.SchemaPath; import org.apache.drill.common.logical.StoragePluginConfig; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/UnsupportedDataTypeException.java b/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/UnsupportedDataTypeException.java index 305e6d3d2..ca1628377 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/UnsupportedDataTypeException.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/UnsupportedDataTypeException.java @@ -17,7 +17,7 @@ */ package org.apache.drill.exec.work.foreman; -import org.eigenbase.sql.SqlDataTypeSpec; +import org.apache.calcite.sql.SqlDataTypeSpec; public class UnsupportedDataTypeException extends SqlUnsupportedException { public UnsupportedDataTypeException(String drillJiraNumber, String message) { diff --git a/exec/java-exec/src/test/java/org/apache/drill/PlanTestBase.java b/exec/java-exec/src/test/java/org/apache/drill/PlanTestBase.java index 474497851..f9096814a 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/PlanTestBase.java +++ b/exec/java-exec/src/test/java/org/apache/drill/PlanTestBase.java @@ -31,8 +31,8 @@ import org.apache.drill.exec.record.VectorWrapper; import org.apache.drill.exec.rpc.user.QueryDataBatch; import org.apache.drill.exec.vector.NullableVarCharVector; import org.apache.drill.exec.vector.ValueVector; -import org.eigenbase.sql.SqlExplain.Depth; -import org.eigenbase.sql.SqlExplainLevel; +import org.apache.calcite.sql.SqlExplain.Depth; +import org.apache.calcite.sql.SqlExplainLevel; import com.google.common.base.Strings; diff --git a/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java b/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java index e7f689617..e0ca68e26 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java +++ b/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java @@ -22,8 +22,8 @@ import java.net.URL; import mockit.Mocked; import mockit.NonStrictExpectations; -import net.hydromatic.optiq.SchemaPlus; -import net.hydromatic.optiq.jdbc.SimpleOptiqSchema; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.jdbc.SimpleCalciteSchema; import org.apache.drill.common.config.DrillConfig; import org.apache.drill.common.util.TestTools; diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/FilterSplitTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/FilterSplitTest.java index 7c85c1978..41414c903 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/FilterSplitTest.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/FilterSplitTest.java @@ -21,15 +21,15 @@ import static org.junit.Assert.*; import java.util.BitSet; -import net.hydromatic.optiq.impl.java.JavaTypeFactory; -import net.hydromatic.optiq.jdbc.JavaTypeFactoryImpl; +import org.apache.calcite.adapter.java.JavaTypeFactory; +import org.apache.calcite.jdbc.JavaTypeFactoryImpl; import org.apache.drill.exec.planner.logical.partition.FindPartitionConditions; -import org.eigenbase.reltype.RelDataType; -import org.eigenbase.rex.RexBuilder; -import org.eigenbase.rex.RexNode; -import org.eigenbase.sql.fun.SqlStdOperatorTable; -import org.eigenbase.sql.type.SqlTypeName; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.sql.type.SqlTypeName; import org.junit.Test; public class FilterSplitTest { diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java index a5bcdecb0..4a3323d03 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java @@ -17,19 +17,19 @@ */ package org.apache.drill.exec.sql; -import net.hydromatic.optiq.config.Lex; -import net.hydromatic.optiq.jdbc.SimpleOptiqSchema; -import net.hydromatic.optiq.tools.FrameworkConfig; -import net.hydromatic.optiq.tools.Frameworks; -import net.hydromatic.optiq.tools.Planner; +import org.apache.calcite.config.Lex; +import org.apache.calcite.jdbc.SimpleCalciteSchema; +import org.apache.calcite.tools.FrameworkConfig; +import org.apache.calcite.tools.Frameworks; +import org.apache.calcite.tools.Planner; import org.apache.drill.exec.planner.physical.PlannerSettings; import org.apache.drill.exec.planner.sql.DrillConvertletTable; import org.apache.drill.exec.planner.sql.parser.CompoundIdentifierConverter; import org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl; import org.apache.drill.test.DrillAssert; -import org.eigenbase.sql.SqlNode; -import org.eigenbase.sql.parser.SqlParser; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.parser.SqlParser; import org.junit.Test; public class TestSqlBracketlessSyntax { @@ -38,9 +38,12 @@ public class TestSqlBracketlessSyntax { @Test public void checkComplexExpressionParsing() throws Exception{ FrameworkConfig config = Frameworks.newConfigBuilder() // - .parserConfig(new SqlParser.ParserConfigImpl(Lex.MYSQL, PlannerSettings.DEFAULT_IDENTIFIER_MAX_LENGTH)) - .parserFactory(DrillParserImpl.FACTORY) // - .defaultSchema(SimpleOptiqSchema.createRootSchema(false)) // + .parserConfig(SqlParser.configBuilder() + .setLex(Lex.MYSQL) + .setIdentifierMaxLength(PlannerSettings.DEFAULT_IDENTIFIER_MAX_LENGTH) + .setParserFactory(DrillParserImpl.FACTORY) + .build()) // + .defaultSchema(SimpleCalciteSchema.createRootSchema(false)) // .convertletTable(new DrillConvertletTable()) // .build(); Planner planner = Frameworks.getPlanner(config); |