http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillStoreRel.java ---------------------------------------------------------------------- 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 830c34b..6295eab 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 @@ -23,8 +23,6 @@ import net.hydromatic.optiq.prepare.Prepare.CatalogReader; import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.exec.planner.common.DrillStoreRelBase; -import org.apache.drill.exec.planner.logical.DrillImplementor; -import org.apache.drill.exec.planner.logical.DrillRel; import org.eigenbase.rel.RelNode; import org.eigenbase.relopt.RelOptCluster; import org.eigenbase.relopt.RelOptTable; @@ -36,7 +34,7 @@ public class DrillStoreRel extends DrillStoreRelBase implements DrillRel{ protected DrillStoreRel(RelOptCluster cluster, RelTraitSet traits, RelOptTable table, CatalogReader catalogReader, RelNode child, Operation operation, List<String> updateColumnList, boolean flattened) { super(cluster, traits, table, catalogReader, child, operation, updateColumnList, flattened); - + } @Override
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillTable.java ---------------------------------------------------------------------- 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 8e6b914..2e7f9f2 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 @@ -33,18 +33,18 @@ import org.eigenbase.relopt.RelOptTable; public abstract class DrillTable implements Table{ - - private final String storageEngineName; + + private final String storageEngineName; public final StoragePluginConfig storageEngineConfig; private Object selection; private StoragePlugin plugin; - private GroupScan scan; - + private GroupScan scan; + /** Creates a DrillTable. */ public DrillTable(String storageEngineName, StoragePlugin plugin, Object selection) { this.selection = selection; this.plugin = plugin; - + this.storageEngineConfig = plugin.getConfig(); this.storageEngineName = storageEngineName; } @@ -55,19 +55,19 @@ public abstract class DrillTable implements Table{ } return scan; } - + public StoragePluginConfig getStorageEngineConfig(){ return storageEngineConfig; } - + public StoragePlugin getPlugin(){ return plugin; } - + public Object getSelection() { return selection; } - + public String getStorageEngineName() { return storageEngineName; } @@ -125,6 +125,6 @@ public abstract class DrillTable implements Table{ return true; } - - + + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRel.java ---------------------------------------------------------------------- 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 fdf43dd..1fa7001 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 @@ -24,7 +24,6 @@ import net.hydromatic.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.logical.DrillImplementor; import org.apache.drill.exec.planner.torel.ConversionContext; import org.eigenbase.rel.InvalidRelException; import org.eigenbase.rel.RelNode; @@ -46,7 +45,7 @@ public class DrillUnionRel extends DrillUnionRelBase implements DrillRel { @Override public DrillUnionRel copy(RelTraitSet traitSet, List<RelNode> inputs, boolean all) { - try { + try { return new DrillUnionRel(getCluster(), traitSet, inputs, all); } catch (InvalidRelException e) { throw new AssertionError(e) ; @@ -68,7 +67,7 @@ public class DrillUnionRel extends DrillUnionRelBase implements DrillRel { builder.setDistinct(!all); return builder.build(); } - + public static DrillUnionRel convert(Union union, ConversionContext context) throws InvalidRelException{ throw new UnsupportedOperationException(); } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRule.java ---------------------------------------------------------------------- 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 86ced35..93a0391 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 @@ -51,7 +51,7 @@ public class DrillUnionRule extends RelOptRule { final RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL)); convertedInputs.add(convertedInput); } - try { + try { call.transformTo(new DrillUnionRel(union.getCluster(), traits, convertedInputs, union.all)); } catch (InvalidRelException e) { tracer.warning(e.toString()) ; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DynamicDrillTable.java ---------------------------------------------------------------------- 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 e7ff266..843db58 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 @@ -17,7 +17,6 @@ */ package org.apache.drill.exec.planner.logical; -import org.apache.drill.common.logical.StoragePluginConfig; import org.apache.drill.exec.planner.types.RelDataTypeDrillImpl; import org.apache.drill.exec.planner.types.RelDataTypeHolder; import org.apache.drill.exec.store.StoragePlugin; @@ -28,7 +27,7 @@ public class DynamicDrillTable extends DrillTable{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(DynamicDrillTable.class); private RelDataTypeHolder holder = new RelDataTypeHolder(); - + public DynamicDrillTable(StoragePlugin plugin, String storageEngineName, Object selection) { super(storageEngineName, plugin, selection); } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/EnumerableDrillRule.java ---------------------------------------------------------------------- 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 efc29f4..131c60f 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 @@ -29,8 +29,8 @@ import org.eigenbase.rel.convert.ConverterRule; public class EnumerableDrillRule extends ConverterRule { public static EnumerableDrillRule INSTANCE = new EnumerableDrillRule(); - - + + private EnumerableDrillRule() { super(RelNode.class, DrillRel.DRILL_LOGICAL, EnumerableConvention.INSTANCE, "EnumerableDrillRule."); } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/ExprHelper.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/ExprHelper.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/ExprHelper.java index 128ba28..d4321bc 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/ExprHelper.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/ExprHelper.java @@ -21,7 +21,6 @@ import java.util.List; import org.apache.drill.common.expression.FunctionCall; import org.apache.drill.common.expression.LogicalExpression; -import org.apache.drill.common.expression.SchemaPath; public class ExprHelper { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ExprHelper.class); http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/FileSystemCreateTableEntry.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/FileSystemCreateTableEntry.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/FileSystemCreateTableEntry.java index 88d17a3..6784888 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/FileSystemCreateTableEntry.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/FileSystemCreateTableEntry.java @@ -17,10 +17,8 @@ */ package org.apache.drill.exec.planner.logical; -import com.fasterxml.jackson.annotation.JacksonInject; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeName; +import java.io.IOException; + import org.apache.drill.common.exceptions.ExecutionSetupException; import org.apache.drill.common.logical.FormatPluginConfig; import org.apache.drill.exec.physical.base.PhysicalOperator; @@ -29,7 +27,10 @@ import org.apache.drill.exec.store.StoragePluginRegistry; import org.apache.drill.exec.store.dfs.FileSystemConfig; import org.apache.drill.exec.store.dfs.FormatPlugin; -import java.io.IOException; +import com.fasterxml.jackson.annotation.JacksonInject; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; /** * Implements <code>CreateTableEntry</code> interface to create new tables in FileSystem storage. http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/RelOptHelper.java ---------------------------------------------------------------------- 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 2e253ab..172ee2a 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 @@ -24,7 +24,7 @@ import org.eigenbase.relopt.RelTrait; public class RelOptHelper { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(RelOptHelper.class); - + public static RelOptRuleOperand any(Class<? extends RelNode> first, RelTrait trait){ return RelOptRule.operand(first, trait, RelOptRule.any()); } @@ -36,7 +36,7 @@ public class RelOptHelper { public static RelOptRuleOperand any(Class<? extends RelNode> first, Class<? extends RelNode> second) { return RelOptRule.operand(first, RelOptRule.operand(second, RelOptRule.any())); } - + public static RelOptRuleOperand some(Class<? extends RelNode> rel, RelOptRuleOperand first, RelOptRuleOperand... rest){ return RelOptRule.operand(rel, RelOptRule.some(first, rest)); } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/RewriteProjectRel.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/RewriteProjectRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/RewriteProjectRel.java index 0e4c71d..f0ff70c 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/RewriteProjectRel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/RewriteProjectRel.java @@ -17,6 +17,9 @@ */ package org.apache.drill.exec.planner.logical; +import java.util.ArrayList; +import java.util.List; + import org.apache.drill.exec.planner.sql.DrillOperatorTable; import org.eigenbase.rel.ProjectRel; import org.eigenbase.rel.RelNode; @@ -30,9 +33,6 @@ import org.eigenbase.sql.SqlFunction; import org.eigenbase.sql.SqlOperator; import org.eigenbase.util.NlsString; -import java.util.ArrayList; -import java.util.List; - /** * This class rewrites all the project expression that contain convert_to/ convert_from * to actual implementations. http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/ScanFieldDeterminer.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/ScanFieldDeterminer.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/ScanFieldDeterminer.java index 9809770..59c65f9 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/ScanFieldDeterminer.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/ScanFieldDeterminer.java @@ -56,7 +56,7 @@ public class ScanFieldDeterminer extends AbstractLogicalVisitor<Void, ScanFieldD private FieldReferenceFinder finder = new FieldReferenceFinder(); private Map<Scan, FieldList> scanFields = Maps.newHashMap(); - + public static Map<Scan, FieldList> getFieldLists(LogicalPlan plan){ Collection<SinkOperator> ops = plan.getGraph().getRoots(); Preconditions.checkArgument(ops.size() == 1, "Scan Field determiner currently only works with plans that have a single root."); @@ -64,10 +64,10 @@ public class ScanFieldDeterminer extends AbstractLogicalVisitor<Void, ScanFieldD ops.iterator().next().accept(sfd, new FieldList()); return sfd.scanFields; } - + private ScanFieldDeterminer(){ } - + public static class FieldList { private Set<SchemaPath> projected = Sets.newHashSet(); private Set<SchemaPath> referenced = Sets.newHashSet(); @@ -88,6 +88,7 @@ public class ScanFieldDeterminer extends AbstractLogicalVisitor<Void, ScanFieldD projected.addAll(paths); } + @Override public FieldList clone() { FieldList newList = new FieldList(); for (SchemaPath p : projected) { @@ -166,7 +167,7 @@ public class ScanFieldDeterminer extends AbstractLogicalVisitor<Void, ScanFieldD } join.getLeft().accept(this, leftList); } - + { FieldList rightList = fl.clone(); for (JoinCondition c : join.getConditions()) { @@ -191,7 +192,7 @@ public class ScanFieldDeterminer extends AbstractLogicalVisitor<Void, ScanFieldD return null; } - + /** * Search through a LogicalExpression, finding all internal schema path references and returning them in a set. */ http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/AggPruleBase.java ---------------------------------------------------------------------- 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 a61bfd6..e6c815b 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 @@ -69,7 +69,7 @@ public abstract class AggPruleBase extends Prule { for (AggregateCall aggCall : aggregate.getAggCallList()) { String name = aggCall.getAggregation().getName(); - if ( ! (name.equals("SUM") || name.equals("MIN") || name.equals("MAX") || name.equals("COUNT") + if ( ! (name.equals("SUM") || name.equals("MIN") || name.equals("MAX") || name.equals("COUNT") || name.equals("$SUM0"))) { return false; } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/BroadcastExchangePrel.java ---------------------------------------------------------------------- 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 39ab26b..0c76de4 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 @@ -19,8 +19,6 @@ package org.apache.drill.exec.planner.physical; import java.io.IOException; -import java.util.Collections; -import java.util.Iterator; import java.util.List; import org.apache.drill.exec.physical.base.PhysicalOperator; @@ -29,7 +27,6 @@ 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.SingleRel; import org.eigenbase.rel.metadata.RelMetadataQuery; import org.eigenbase.relopt.RelOptCluster; import org.eigenbase.relopt.RelOptCost; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ComplexToJsonPrel.java ---------------------------------------------------------------------- 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 35e8278..bec3704 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 @@ -35,7 +35,7 @@ public class ComplexToJsonPrel extends SingleRel implements Prel { super(phyRelNode.getCluster(), phyRelNode.getTraitSet(), phyRelNode); } - @Override + @Override public final RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) { return new ComplexToJsonPrel((Prel) sole(inputs)); } @@ -70,5 +70,5 @@ public class ComplexToJsonPrel extends SingleRel implements Prel { public boolean needsFinalColumnReordering() { return true; } - + } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ConvertCountToDirectScan.java ---------------------------------------------------------------------- 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 ce3227d..620cf1f 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 @@ -27,10 +27,6 @@ import org.apache.drill.exec.planner.logical.DrillAggregateRel; import org.apache.drill.exec.planner.logical.DrillProjectRel; import org.apache.drill.exec.planner.logical.DrillScanRel; import org.apache.drill.exec.planner.logical.RelOptHelper; -import org.apache.drill.exec.planner.physical.DrillDistributionTrait; -import org.apache.drill.exec.planner.physical.Prel; -import org.apache.drill.exec.planner.physical.ProjectPrel; -import org.apache.drill.exec.planner.physical.ScanPrel; import org.apache.drill.exec.store.direct.DirectGroupScan; import org.apache.drill.exec.store.pojo.PojoRecordReader; import org.eigenbase.rel.AggregateCall; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTrait.java ---------------------------------------------------------------------- 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 df49ee3..c45ae17 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 @@ -35,7 +35,7 @@ public class DrillDistributionTrait implements RelTrait { private DistributionType type; private final ImmutableList<DistributionField> fields; - + public DrillDistributionTrait(DistributionType type) { assert (type == DistributionType.SINGLETON || type == DistributionType.RANDOM_DISTRIBUTED || type == DistributionType.ANY || type == DistributionType.ROUND_ROBIN_DISTRIBUTED || type == DistributionType.BROADCAST_DISTRIBUTED); @@ -68,7 +68,7 @@ public class DrillDistributionTrait implements RelTrait { // Following can satisfy the requirements: {a}, {b}, {c}, {a, b}, {b, c}, {a, c} or {a, b, c} // New: Use equals for subsumes check of hash distribution. If we uses subsumes, - // a join may end up with hash-distributions using different keys. This would + // a join may end up with hash-distributions using different keys. This would // cause incorrect query result. return this.equals(trait); } @@ -93,10 +93,12 @@ public class DrillDistributionTrait implements RelTrait { return fields; } + @Override public int hashCode() { return fields == null ? type.hashCode() : type.hashCode() | fields.hashCode() << 4 ; } + @Override public boolean equals(Object obj) { if (this == obj) { return true; @@ -124,6 +126,7 @@ public class DrillDistributionTrait implements RelTrait { this.fieldId = fieldId; } + @Override public boolean equals(Object obj) { if (!(obj instanceof DistributionField)) { return false; @@ -132,6 +135,7 @@ public class DrillDistributionTrait implements RelTrait { return this.fieldId == other.fieldId; } + @Override public int hashCode() { return this.fieldId; } @@ -140,6 +144,7 @@ public class DrillDistributionTrait implements RelTrait { return this.fieldId; } + @Override public String toString() { return String.format("[$%s]", this.fieldId); } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTraitDef.java ---------------------------------------------------------------------- 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 06c2319..6a1dbb7 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 @@ -23,56 +23,61 @@ import org.eigenbase.relopt.RelTraitDef; public class DrillDistributionTraitDef extends RelTraitDef<DrillDistributionTrait>{ public static final DrillDistributionTraitDef INSTANCE = new DrillDistributionTraitDef(); - + private DrillDistributionTraitDef() { super(); } - + + @Override public boolean canConvert( RelOptPlanner planner, DrillDistributionTrait fromTrait, DrillDistributionTrait toTrait) { return true; - } + } + @Override public Class<DrillDistributionTrait> getTraitClass(){ return DrillDistributionTrait.class; } - + + @Override public DrillDistributionTrait getDefault() { return DrillDistributionTrait.DEFAULT; } + @Override public String getSimpleName() { return this.getClass().getSimpleName(); } - + // implement RelTraitDef + @Override public RelNode convert( RelOptPlanner planner, RelNode rel, DrillDistributionTrait toDist, boolean allowInfiniteCostConverters) { - + DrillDistributionTrait currentDist = rel.getTraitSet().getTrait(DrillDistributionTraitDef.INSTANCE); - + // Source and Target have the same trait. if (currentDist.equals(toDist)) { return rel; } - + // Source trait is "ANY", which is abstract type of distribution. - // We do not want to convert from "ANY", since it's abstract. + // We do not want to convert from "ANY", since it's abstract. // Source trait should be concrete type: SINGLETON, HASH_DISTRIBUTED, etc. if (currentDist.equals(DrillDistributionTrait.DEFAULT)) { return null; } - + switch(toDist.getType()){ // UnionExchange, HashToRandomExchange, OrderedPartitionExchange and BroadcastExchange destroy the ordering property, // therefore RelCollation is set to default, which is EMPTY. - case SINGLETON: + case SINGLETON: return new UnionExchangePrel(rel.getCluster(), planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel); case HASH_DISTRIBUTED: - return new HashToRandomExchangePrel(rel.getCluster(), planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel, + return new HashToRandomExchangePrel(rel.getCluster(), planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel, toDist.getFields()); case RANGE_DISTRIBUTED: return new OrderedPartitionExchangePrel(rel.getCluster(), planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel); http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillScanPrel.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillScanPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillScanPrel.java index b026c22..a452bac 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillScanPrel.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillScanPrel.java @@ -20,7 +20,7 @@ package org.apache.drill.exec.planner.physical; import org.apache.drill.exec.physical.base.GroupScan; public interface DrillScanPrel extends Prel{ - + public GroupScan getGroupScan(); - + } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/FilterPrel.java ---------------------------------------------------------------------- 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 996e80a..99d000c 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 @@ -25,16 +25,11 @@ import java.util.List; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.Filter; import org.apache.drill.exec.planner.common.DrillFilterRelBase; -import org.apache.drill.exec.planner.cost.DrillCostBase; -import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; 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.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; @@ -84,5 +79,5 @@ public class FilterPrel extends DrillFilterRelBase implements Prel { public boolean needsFinalColumnReordering() { return true; } - + } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashAggPrel.java ---------------------------------------------------------------------- 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 c1b1fba..0b9dcb6 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 @@ -17,6 +17,10 @@ */ package org.apache.drill.exec.planner.physical; +import java.io.IOException; +import java.util.BitSet; +import java.util.List; + import org.apache.drill.common.logical.data.NamedExpression; import org.apache.drill.exec.ExecConstants; import org.apache.drill.exec.expr.holders.IntHolder; @@ -35,10 +39,6 @@ import org.eigenbase.relopt.RelOptCost; import org.eigenbase.relopt.RelOptPlanner; import org.eigenbase.relopt.RelTraitSet; -import java.io.IOException; -import java.util.BitSet; -import java.util.List; - public class HashAggPrel extends AggPrelBase implements Prel{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(HashAggPrel.class); @@ -48,6 +48,7 @@ public class HashAggPrel extends AggPrelBase implements Prel{ super(cluster, traits, child, groupSet, aggCalls, phase); } + @Override public AggregateRelBase copy(RelTraitSet traitSet, RelNode input, BitSet groupSet, List<AggregateCall> aggCalls) { try { return new HashAggPrel(getCluster(), traitSet, input, getGroupSet(), aggCalls, http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashAggPrule.java ---------------------------------------------------------------------- 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 e2ee57f..0439bbb 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 @@ -17,7 +17,8 @@ */ package org.apache.drill.exec.planner.physical; -import com.google.common.collect.ImmutableList; +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; @@ -29,7 +30,7 @@ import org.eigenbase.relopt.RelTrait; import org.eigenbase.relopt.RelTraitSet; import org.eigenbase.trace.EigenbaseTrace; -import java.util.logging.Logger; +import com.google.common.collect.ImmutableList; public class HashAggPrule extends AggPruleBase { public static final RelOptRule INSTANCE = new HashAggPrule(); http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashJoinPrel.java ---------------------------------------------------------------------- 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 aaf18b1..d9a7277 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 @@ -17,7 +17,9 @@ */ package org.apache.drill.exec.planner.physical; -import com.google.common.collect.Lists; +import java.io.IOException; +import java.util.List; + import org.apache.drill.common.expression.FieldReference; import org.apache.drill.common.logical.data.JoinCondition; import org.apache.drill.exec.ExecConstants; @@ -40,8 +42,7 @@ import org.eigenbase.relopt.RelTraitSet; import org.eigenbase.rex.RexNode; import org.eigenbase.util.Pair; -import java.io.IOException; -import java.util.List; +import com.google.common.collect.Lists; public class HashJoinPrel extends JoinPrel { http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashJoinPrule.java ---------------------------------------------------------------------- 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 8588425..61321c1 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 @@ -17,6 +17,8 @@ */ package org.apache.drill.exec.planner.physical; +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; @@ -25,8 +27,6 @@ import org.eigenbase.relopt.RelOptRule; import org.eigenbase.relopt.RelOptRuleCall; import org.eigenbase.trace.EigenbaseTrace; -import java.util.logging.Logger; - public class HashJoinPrule extends JoinPruleBase { public static final RelOptRule INSTANCE = new HashJoinPrule(); protected static final Logger tracer = EigenbaseTrace.getPlannerTracer(); @@ -41,7 +41,7 @@ public class HashJoinPrule extends JoinPruleBase { PlannerSettings settings = PrelUtil.getPlannerSettings(call.getPlanner()); return settings.isMemoryEstimationEnabled() || settings.isHashJoinEnabled(); } - + @Override public void onMatch(RelOptRuleCall call) { if (!PrelUtil.getPlannerSettings(call.getPlanner()).isHashJoinEnabled()) return; @@ -49,23 +49,23 @@ public class HashJoinPrule extends JoinPruleBase { final DrillJoinRel join = (DrillJoinRel) call.rel(0); final RelNode left = join.getLeft(); final RelNode right = join.getRight(); - + if (!checkPreconditions(join, left, right)) { return; } - + boolean hashSingleKey = PrelUtil.getPlannerSettings(call.getPlanner()).isHashSingleKey(); - + try { createDistBothPlan(call, join, PhysicalJoinType.HASH_JOIN, left, right, null /* left collation */, null /* right collation */, hashSingleKey); - + if (checkBroadcastConditions(call.getPlanner(), join, left, right)) { createBroadcastPlan(call, join, PhysicalJoinType.HASH_JOIN, left, right, null /* left collation */, null /* right collation */); // createBroadcastPlan1(call, join, PhysicalJoinType.HASH_JOIN, left, right, null, null); } - + } catch (InvalidRelException e) { tracer.warning(e.toString()); } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashToMergeExchangePrel.java ---------------------------------------------------------------------- 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 4518e17..95ef876 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 @@ -18,25 +18,21 @@ package org.apache.drill.exec.planner.physical; import java.io.IOException; -import java.util.Iterator; import java.util.List; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.HashToMergeExchange; -import org.apache.drill.exec.physical.config.SelectionVectorRemover; 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.SingleRel; 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.reltype.RelDataTypeField; public class HashToMergeExchangePrel extends ExchangePrel { http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashToRandomExchangePrel.java ---------------------------------------------------------------------- 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 b78e64c..30107bb 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 @@ -24,21 +24,17 @@ import net.hydromatic.linq4j.Ord; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.HashToRandomExchange; -import org.apache.drill.exec.physical.config.SelectionVectorRemover; 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.SingleRel; 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.reltype.RelDataTypeField; -import org.eigenbase.rex.RexNode; public class HashToRandomExchangePrel extends ExchangePrel { @@ -57,8 +53,8 @@ public class HashToRandomExchangePrel extends ExchangePrel { * If there are N nodes (endpoints), we can assume for costing purposes * on average each sender will send M/N rows to 1 destination endpoint. * (See DrillCostBase for symbol notations) - * Include impact of skewness of distribution : the more keys used, the less likely the distribution will be skewed. - * The hash cpu cost will be proportional to 1 / #_keys. + * Include impact of skewness of distribution : the more keys used, the less likely the distribution will be skewed. + * The hash cpu cost will be proportional to 1 / #_keys. * C = CPU cost of hashing k fields of M/N rows * + CPU cost of SV remover for M/N rows * + Network cost of sending M/N rows to 1 destination. http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/JoinPrel.java ---------------------------------------------------------------------- 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 cf996dc..d5473f2 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 @@ -99,6 +99,6 @@ public abstract class JoinPrel extends DrillJoinRelBase implements Prel{ @Override public boolean needsFinalColumnReordering() { return true; - } - + } + } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/JoinPruleBase.java ---------------------------------------------------------------------- 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 d6bd711..babf005 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 @@ -28,12 +28,10 @@ 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.RelOptRule; import org.eigenbase.relopt.RelOptRuleCall; import org.eigenbase.relopt.RelOptRuleOperand; import org.eigenbase.relopt.RelOptUtil; import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.relopt.volcano.RelSubset; import org.eigenbase.rex.RexNode; import com.google.common.collect.ImmutableList; @@ -189,6 +187,7 @@ public abstract class JoinPruleBase extends Prule { new SubsetTransformer<DrillJoinRel, InvalidRelException>(call){ + @Override public RelNode convertChild(final DrillJoinRel join, final RelNode rel) throws InvalidRelException { DrillDistributionTrait toDist = rel.getTraitSet().getTrait(DrillDistributionTraitDef.INSTANCE); RelTraitSet newTraitsLeft; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/LimitPrel.java ---------------------------------------------------------------------- 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 a4bb503..5060195 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 @@ -18,28 +18,19 @@ package org.apache.drill.exec.planner.physical; import java.io.IOException; -import java.math.BigDecimal; import java.util.Iterator; import java.util.List; -import org.apache.drill.common.logical.data.LogicalOperator; import org.apache.drill.exec.physical.base.PhysicalOperator; -import org.apache.drill.exec.physical.config.Filter; import org.apache.drill.exec.physical.config.Limit; import org.apache.drill.exec.planner.common.DrillLimitRelBase; -import org.apache.drill.exec.planner.logical.DrillImplementor; -import org.apache.drill.exec.planner.logical.DrillParseContext; -import org.apache.drill.exec.planner.logical.DrillRel; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; -import org.apache.drill.exec.planner.torel.ConversionContext; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; -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; public class LimitPrel extends DrillLimitRelBase implements Prel { @@ -93,7 +84,7 @@ public class LimitPrel extends DrillLimitRelBase implements Prel { public boolean needsFinalColumnReordering() { return true; } - + // @Override // public LogicalOperator implement(DrillImplementor implementor) { // LogicalOperator inputOp = implementor.visitChild(this, 0, getChild()); http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/LimitPrule.java ---------------------------------------------------------------------- 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 aad2976..94685c1 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 @@ -17,10 +17,8 @@ */ package org.apache.drill.exec.planner.physical; -import org.apache.drill.exec.planner.common.DrillScreenRelBase; import org.apache.drill.exec.planner.logical.DrillLimitRel; 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; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/MergeJoinPrule.java ---------------------------------------------------------------------- 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 a11e389..faffa63 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 @@ -27,14 +27,10 @@ import org.eigenbase.rel.RelCollation; import org.eigenbase.rel.RelCollationImpl; import org.eigenbase.rel.RelFieldCollation; import org.eigenbase.rel.RelNode; -import org.eigenbase.rel.metadata.RelMetadataQuery; import org.eigenbase.relopt.RelOptRule; import org.eigenbase.relopt.RelOptRuleCall; -import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.relopt.volcano.RelSubset; import org.eigenbase.trace.EigenbaseTrace; -import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; public class MergeJoinPrule extends JoinPruleBase { @@ -51,7 +47,7 @@ public class MergeJoinPrule extends JoinPruleBase { public boolean matches(RelOptRuleCall call) { return PrelUtil.getPlannerSettings(call.getPlanner()).isMergeJoinEnabled(); } - + @Override public void onMatch(RelOptRuleCall call) { final DrillJoinRel join = (DrillJoinRel) call.rel(0); @@ -61,10 +57,10 @@ public class MergeJoinPrule extends JoinPruleBase { if (!checkPreconditions(join, left, right)) { return; } - + boolean hashSingleKey = PrelUtil.getPlannerSettings(call.getPlanner()).isHashSingleKey(); - - try { + + try { RelCollation collationLeft = getCollation(join.getLeftKeys()); RelCollation collationRight = getCollation(join.getRightKeys()); @@ -78,8 +74,8 @@ public class MergeJoinPrule extends JoinPruleBase { tracer.warning(e.toString()); } } - - private RelCollation getCollation(List<Integer> keys){ + + private RelCollation getCollation(List<Integer> keys){ List<RelFieldCollation> fields = Lists.newArrayList(); for (int key : keys) { fields.add(new RelFieldCollation(key)); http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/OrderedPartitionExchangePrel.java ---------------------------------------------------------------------- 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 36a67cb..7bb4822 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 @@ -18,7 +18,6 @@ package org.apache.drill.exec.planner.physical; import java.io.IOException; -import java.util.Iterator; import java.util.List; import org.apache.drill.exec.physical.base.PhysicalOperator; @@ -26,7 +25,6 @@ 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.SingleRel; import org.eigenbase.rel.metadata.RelMetadataQuery; import org.eigenbase.relopt.RelOptCluster; import org.eigenbase.relopt.RelOptCost; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PhysicalPlanCreator.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PhysicalPlanCreator.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PhysicalPlanCreator.java index 130ac87..6094221 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PhysicalPlanCreator.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PhysicalPlanCreator.java @@ -31,7 +31,6 @@ import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.planner.physical.explain.PrelSequencer.OpId; import com.google.common.collect.Lists; -import com.google.common.collect.Maps; public class PhysicalPlanCreator { http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProducerConsumerPrel.java ---------------------------------------------------------------------- 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 6903767..a9edd0c 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 @@ -17,6 +17,10 @@ */ package org.apache.drill.exec.planner.physical; +import java.io.IOException; +import java.util.Iterator; +import java.util.List; + import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.ProducerConsumer; import org.apache.drill.exec.planner.common.DrillRelNode; @@ -24,13 +28,8 @@ 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 java.io.IOException; -import java.util.Iterator; -import java.util.List; - public class ProducerConsumerPrel extends SingleRel implements DrillRelNode, Prel { private int queueSize; @@ -75,10 +74,10 @@ public class ProducerConsumerPrel extends SingleRel implements DrillRelNode, Pre public SelectionVectorMode getEncoding() { return SelectionVectorMode.NONE; } - + @Override public boolean needsFinalColumnReordering() { return true; } - + } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectAllowDupPrel.java ---------------------------------------------------------------------- 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 a67dbf2..57dfdb4 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,7 +28,6 @@ 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.apache.drill.exec.planner.physical.ProjectPrel; import org.eigenbase.rel.RelNode; import org.eigenbase.relopt.RelOptCluster; import org.eigenbase.relopt.RelTraitSet; @@ -55,6 +54,7 @@ public class ProjectAllowDupPrel extends ProjectPrel { return creator.addMetadata(this, p); } + @Override protected List<NamedExpression> getProjectExpressions(DrillParseContext context) { List<NamedExpression> expressions = Lists.newArrayList(); for (Pair<RexNode, String> pair : Pair.zip(exps, getRowType().getFieldNames())) { http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectPrel.java ---------------------------------------------------------------------- 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 ae21c2c..1f621da 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 @@ -18,14 +18,11 @@ package org.apache.drill.exec.planner.physical; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; 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.physical.config.SelectionVectorRemover; 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; @@ -46,6 +43,7 @@ public class ProjectPrel extends DrillProjectRelBase implements Prel{ super(DRILL_PHYSICAL, cluster, traits, child, exps, rowType); } + @Override public ProjectRelBase copy(RelTraitSet traitSet, RelNode input, List<RexNode> exps, RelDataType rowType) { return new ProjectPrel(getCluster(), traitSet, input, exps, rowType); } @@ -85,5 +83,5 @@ public class ProjectPrel extends DrillProjectRelBase implements Prel{ public boolean needsFinalColumnReordering() { return false; } - + } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ProjectPrule.java ---------------------------------------------------------------------- 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 833aaae..6d26419 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 @@ -35,7 +35,6 @@ import org.eigenbase.rel.RelNode; import org.eigenbase.relopt.RelOptRule; import org.eigenbase.relopt.RelOptRuleCall; import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.relopt.volcano.RelSubset; import org.eigenbase.rex.RexCall; import org.eigenbase.rex.RexInputRef; import org.eigenbase.rex.RexNode; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScanPrule.java ---------------------------------------------------------------------- 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 606bbcb..1d915b7 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 @@ -17,9 +17,6 @@ */ package org.apache.drill.exec.planner.physical; -import java.util.List; - -import org.apache.drill.common.expression.SchemaPath; import org.apache.drill.exec.physical.base.GroupScan; import org.apache.drill.exec.planner.logical.DrillScanRel; import org.apache.drill.exec.planner.logical.RelOptHelper; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/ScreenPrel.java ---------------------------------------------------------------------- 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 1a4da8a..4356515 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 @@ -23,7 +23,6 @@ import java.util.List; import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.Screen; -import org.apache.drill.exec.physical.config.SelectionVectorRemover; 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; @@ -74,7 +73,7 @@ public class ScreenPrel extends DrillScreenRelBase implements Prel { public SelectionVectorMode getEncoding() { return SelectionVectorMode.NONE; } - + @Override public boolean needsFinalColumnReordering() { return false; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SelectionVectorRemoverPrel.java ---------------------------------------------------------------------- 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 042809f..aea5192 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 @@ -26,8 +26,6 @@ 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.reltype.RelDataType; -import org.eigenbase.rex.RexNode; public class SelectionVectorRemoverPrel extends SinglePrel{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(SelectionVectorRemoverPrel.class); @@ -40,6 +38,7 @@ public class SelectionVectorRemoverPrel extends SinglePrel{ super(cluster, traits, child); } + @Override public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) { return new SelectionVectorRemoverPrel(this.getCluster(), traitSet, inputs.get(0)); } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SingleMergeExchangePrel.java ---------------------------------------------------------------------- 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 bea5500..16bfd88 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 @@ -31,7 +31,6 @@ import org.eigenbase.rel.RelCollation; import org.eigenbase.rel.RelFieldCollation; import org.eigenbase.rel.RelNode; import org.eigenbase.rel.RelWriter; -import org.eigenbase.rel.SingleRel; import org.eigenbase.rel.metadata.RelMetadataQuery; import org.eigenbase.relopt.RelOptCluster; import org.eigenbase.relopt.RelOptCost; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SinglePrel.java ---------------------------------------------------------------------- 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 3199943..914ee04 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 @@ -17,7 +17,6 @@ */ package org.apache.drill.exec.planner.physical; -import java.util.Collections; import java.util.Iterator; import org.apache.drill.exec.planner.physical.visitor.PrelVisitor; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortConvertPrule.java ---------------------------------------------------------------------- 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 f2723cf..a9955a3 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,8 +17,6 @@ */ package org.apache.drill.exec.planner.physical; -import org.apache.drill.exec.planner.logical.DrillRel; -import org.apache.drill.exec.planner.logical.DrillSortRel; import org.eigenbase.rel.RelNode; import org.eigenbase.rel.SortRel; import org.eigenbase.rel.convert.ConverterRule; @@ -28,9 +26,9 @@ import org.eigenbase.relopt.RelOptRuleCall; /** * Rule that converts an {@link SortRel} 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. - * Drill uses this rule to convert such sort enforcer into physical {@link SortPrel}. + * + * The {@link SortRel} 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 { public static final RelOptRule INSTANCE = new SortConvertPrule("SortConvertPrule", Convention.NONE); @@ -49,9 +47,9 @@ public class SortConvertPrule extends ConverterRule { @Override public RelNode convert(RelNode r) { SortRel rel = (SortRel) 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)), + 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.getCollation()); } } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortPrel.java ---------------------------------------------------------------------- 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 0926f60..8156843 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 @@ -17,6 +17,9 @@ */ package org.apache.drill.exec.planner.physical; +import java.io.IOException; +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; @@ -35,9 +38,6 @@ import org.eigenbase.relopt.RelOptPlanner; import org.eigenbase.relopt.RelTraitSet; import org.eigenbase.rex.RexNode; -import java.io.IOException; -import java.util.Iterator; - public class SortPrel extends SortRel implements Prel { /** Creates a DrillSortRel. */ @@ -86,6 +86,7 @@ public class SortPrel extends SortRel implements Prel { return creator.addMetadata(this, g); } + @Override public SortPrel copy( RelTraitSet traitSet, RelNode newInput, @@ -114,10 +115,10 @@ public class SortPrel extends SortRel implements Prel { public SelectionVectorMode getEncoding() { return SelectionVectorMode.FOUR_BYTE; } - + @Override public boolean needsFinalColumnReordering() { return true; } - + } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/SortPrule.java ---------------------------------------------------------------------- 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 94b70c4..2ebd015 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 @@ -19,17 +19,12 @@ package org.apache.drill.exec.planner.physical; import java.util.List; -import net.hydromatic.optiq.util.BitSets; - -import org.apache.drill.exec.planner.common.DrillProjectRelBase; -import org.apache.drill.exec.planner.logical.DrillAggregateRel; 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.rel.SortRel; import org.eigenbase.relopt.RelOptRule; import org.eigenbase.relopt.RelOptRuleCall; import org.eigenbase.relopt.RelTraitSet; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/StreamAggPrel.java ---------------------------------------------------------------------- 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 eaef94b..e8a70f2 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 @@ -27,7 +27,6 @@ import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.config.StreamingAggregate; import org.apache.drill.exec.planner.cost.DrillCostBase; import org.apache.drill.exec.planner.cost.DrillCostBase.DrillCostFactory; -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.AggregateCall; @@ -51,6 +50,7 @@ public class StreamAggPrel extends AggPrelBase implements Prel{ super(cluster, traits, child, groupSet, aggCalls, phase); } + @Override public AggregateRelBase copy(RelTraitSet traitSet, RelNode input, BitSet groupSet, List<AggregateCall> aggCalls) { try { return new StreamAggPrel(getCluster(), traitSet, input, getGroupSet(), aggCalls, http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/StreamAggPrule.java ---------------------------------------------------------------------- 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 b5b0364..89b133a 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 @@ -23,7 +23,6 @@ import java.util.logging.Logger; import net.hydromatic.optiq.util.BitSets; import org.apache.drill.exec.planner.logical.DrillAggregateRel; -import org.apache.drill.exec.planner.logical.DrillJoinRel; import org.apache.drill.exec.planner.logical.RelOptHelper; import org.apache.drill.exec.planner.physical.AggPrelBase.OperatorPhase; import org.eigenbase.rel.InvalidRelException; @@ -34,7 +33,6 @@ import org.eigenbase.rel.RelNode; import org.eigenbase.relopt.RelOptRule; import org.eigenbase.relopt.RelOptRuleCall; import org.eigenbase.relopt.RelTraitSet; -import org.eigenbase.relopt.volcano.RelSubset; import org.eigenbase.trace.EigenbaseTrace; import com.google.common.collect.ImmutableList; @@ -76,6 +74,7 @@ public class StreamAggPrule extends AggPruleBase { RelNode convertedInput = convert(input, traits); new SubsetTransformer<DrillAggregateRel, InvalidRelException>(call){ + @Override public RelNode convertChild(final DrillAggregateRel join, final RelNode rel) throws InvalidRelException { DrillDistributionTrait toDist = rel.getTraitSet().getTrait(DrillDistributionTraitDef.INSTANCE); RelTraitSet traits = newTraitSet(Prel.DRILL_PHYSICAL, toDist); @@ -127,6 +126,7 @@ public class StreamAggPrule extends AggPruleBase { new SubsetTransformer<DrillAggregateRel, InvalidRelException>(call){ + @Override public RelNode convertChild(final DrillAggregateRel aggregate, final RelNode rel) throws InvalidRelException { DrillDistributionTrait toDist = rel.getTraitSet().getTrait(DrillDistributionTraitDef.INSTANCE); RelTraitSet traits = newTraitSet(Prel.DRILL_PHYSICAL, collation, toDist); http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/TopNPrel.java ---------------------------------------------------------------------- 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 997c1c7..ac1811b 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 @@ -18,7 +18,6 @@ package org.apache.drill.exec.planner.physical; import java.io.IOException; -import java.util.Iterator; import java.util.List; import org.apache.drill.exec.physical.base.PhysicalOperator; @@ -29,14 +28,11 @@ 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.SingleRel; 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.RexLiteral; -import org.eigenbase.rex.RexNode; public class TopNPrel extends SinglePrel { http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionAllPrule.java ---------------------------------------------------------------------- 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 bcddce6..869493f 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 @@ -43,27 +43,27 @@ public class UnionAllPrule extends Prule { @Override public boolean matches(RelOptRuleCall call) { DrillUnionRel union = (DrillUnionRel) call.rel(0); - return (! union.isDistinct()); + return (! union.isDistinct()); } - + @Override public void onMatch(RelOptRuleCall call) { final DrillUnionRel union = (DrillUnionRel) call.rel(0); final List<RelNode> inputs = union.getInputs(); List<RelNode> convertedInputList = Lists.newArrayList(); RelTraitSet traits = call.getPlanner().emptyTraitSet().plus(Prel.DRILL_PHYSICAL); - + try { for (int i = 0; i < inputs.size(); i++) { RelNode convertedInput = convert(inputs.get(i), PrelUtil.fixTraits(call, traits)); - convertedInputList.add(convertedInput); + convertedInputList.add(convertedInput); } - + traits = call.getPlanner().emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(DrillDistributionTrait.SINGLETON); UnionAllPrel unionAll = new UnionAllPrel(union.getCluster(), traits, convertedInputList); call.transformTo(unionAll); - + } catch (InvalidRelException e) { tracer.warning(e.toString()); } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionDistinctPrule.java ---------------------------------------------------------------------- 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 7cd5733..67a817e 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 @@ -45,25 +45,25 @@ public class UnionDistinctPrule extends Prule { DrillUnionRel union = (DrillUnionRel) call.rel(0); return (union.isDistinct() && union.isHomogeneous(false /* don't compare names */)); } - + @Override public void onMatch(RelOptRuleCall call) { final DrillUnionRel union = (DrillUnionRel) call.rel(0); final List<RelNode> inputs = union.getInputs(); List<RelNode> convertedInputList = Lists.newArrayList(); RelTraitSet traits = call.getPlanner().emptyTraitSet().plus(Prel.DRILL_PHYSICAL); - + try { for (int i = 0; i < inputs.size(); i++) { RelNode convertedInput = convert(inputs.get(i), PrelUtil.fixTraits(call, traits)); - convertedInputList.add(convertedInput); + convertedInputList.add(convertedInput); } - + traits = call.getPlanner().emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(DrillDistributionTrait.SINGLETON); UnionDistinctPrel unionDistinct = new UnionDistinctPrel(union.getCluster(), traits, convertedInputList); call.transformTo(unionDistinct); - + } catch (InvalidRelException e) { tracer.warning(e.toString()); } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionExchangePrel.java ---------------------------------------------------------------------- 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 3fd6e32..8b0c251 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 @@ -21,14 +21,11 @@ import java.io.IOException; import java.util.List; import org.apache.drill.exec.physical.base.PhysicalOperator; -import org.apache.drill.exec.physical.config.Screen; -import org.apache.drill.exec.physical.config.SelectionVectorRemover; 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.SingleRel; import org.eigenbase.rel.metadata.RelMetadataQuery; import org.eigenbase.relopt.RelOptCluster; import org.eigenbase.relopt.RelOptCost; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionPrel.java ---------------------------------------------------------------------- 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 dd1d018..a1f300b 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 @@ -27,7 +27,6 @@ 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; public abstract class UnionPrel extends DrillUnionRelBase implements Prel{ @@ -44,7 +43,7 @@ public abstract class UnionPrel extends DrillUnionRelBase implements Prel{ public Iterator<Prel> iterator() { return PrelUtil.iter(this.getInputs()); } - + @Override public boolean needsFinalColumnReordering() { return false; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WriterPrel.java ---------------------------------------------------------------------- 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 d9db36e..dc3d6df 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 @@ -29,11 +29,6 @@ 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.reltype.RelDataType; -import org.eigenbase.sql.type.SqlTypeName; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; public class WriterPrel extends DrillWriterRelBase implements Prel { @@ -77,10 +72,10 @@ public class WriterPrel extends DrillWriterRelBase implements Prel { public SelectionVectorMode getEncoding() { return SelectionVectorMode.NONE; } - + @Override public boolean needsFinalColumnReordering() { return true; } - + } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WriterPrule.java ---------------------------------------------------------------------- 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 f3057e6..6bd89b0 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 @@ -60,11 +60,11 @@ public class WriterPrule extends Prule{ public RelNode convertChild(DrillWriterRelBase writer, RelNode rel) throws RuntimeException { DrillDistributionTrait childDist = rel.getTraitSet().getTrait(DrillDistributionTraitDef.INSTANCE); - // Create the Writer with the child's distribution because the degree of parallelism for the writer - // should correspond to the number of child minor fragments. The Writer itself is not concerned with - // the collation of the child. Note that the Writer's output RowType consists of - // {fragment_id varchar(255), number_of_records_written bigint} which are very different from the - // child's output RowType. + // Create the Writer with the child's distribution because the degree of parallelism for the writer + // should correspond to the number of child minor fragments. The Writer itself is not concerned with + // the collation of the child. Note that the Writer's output RowType consists of + // {fragment_id varchar(255), number_of_records_written bigint} which are very different from the + // child's output RowType. return new WriterPrel(writer.getCluster(), writer.getTraitSet().plus(childDist).plus(Prel.DRILL_PHYSICAL), rel, writer.getCreateTableEntry()); http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/PrelSequencer.java ---------------------------------------------------------------------- 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 ebff287..c3020cf 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 @@ -25,7 +25,6 @@ import java.util.Map; import java.util.Queue; import org.apache.drill.exec.planner.physical.ExchangePrel; -import org.apache.drill.exec.planner.physical.JoinPrel; import org.apache.drill.exec.planner.physical.Prel; import org.apache.drill.exec.planner.physical.visitor.BasePrelVisitor; import org.eigenbase.rel.RelWriter; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ExcessiveExchangeIdentifier.java ---------------------------------------------------------------------- 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 06b72f9..eb8eab3 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 @@ -25,7 +25,6 @@ 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.eigenbase.relopt.RelOptCost; import com.google.common.collect.Lists; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/FinalColumnReorderer.java ---------------------------------------------------------------------- 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 85f5ba3..c0556e3 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 @@ -47,11 +47,11 @@ public class FinalColumnReorderer extends BasePrelVisitor<Prel, Void, RuntimeExc } private Prel addTrivialOrderedProjectPrel(Prel prel){ - + if ( !prel.needsFinalColumnReordering()) { return prel; } - + RelDataType t = prel.getRowType(); RexBuilder b = prel.getCluster().getRexBuilder(); http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/ProducerConsumerPrelVisitor.java ---------------------------------------------------------------------- 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 575b4b4..2cbf790 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 @@ -17,15 +17,14 @@ */ package org.apache.drill.exec.planner.physical.visitor; -import com.google.common.collect.Lists; +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.apache.drill.exec.planner.physical.SelectionVectorRemoverPrel; -import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; import org.eigenbase.rel.RelNode; -import java.util.List; +import com.google.common.collect.Lists; public class ProducerConsumerPrelVisitor extends BasePrelVisitor<Prel, Void, RuntimeException>{ http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/39990292/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RelUniqifier.java ---------------------------------------------------------------------- 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 c5bf293..4f7f348 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 @@ -23,8 +23,8 @@ import java.util.Set; import org.apache.drill.exec.planner.physical.Prel; import org.eigenbase.rel.RelNode; -import com.google.common.collect.Sets; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; public class RelUniqifier extends BasePrelVisitor<Prel, Set<Prel>, RuntimeException>{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(RelUniqifier.class);