diff options
Diffstat (limited to 'exec/java-exec/src')
20 files changed, 85 insertions, 79 deletions
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 3f064d4c5..27c853a4c 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,15 +56,12 @@ 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.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; -import java.util.Arrays; import java.util.Collection; -import java.util.Iterator; import java.util.List; public class BasicOptimizer extends Optimizer { @@ -139,7 +136,7 @@ public class BasicOptimizer extends Optimizer { final List<Ordering> orderDefs = Lists.newArrayList(); PhysicalOperator input = groupBy.getInput().accept(this, value); - if (groupBy.getKeys().length > 0) { + if (groupBy.getKeys().size() > 0) { for(NamedExpression e : groupBy.getKeys()) { orderDefs.add(new Ordering(Direction.ASCENDING, e.getExpr(), NullDirection.FIRST)); } @@ -197,8 +194,7 @@ public class BasicOptimizer extends Optimizer { rightOp = new Sort(rightOp, rightOrderDefs, false); rightOp = new SelectionVectorRemover(rightOp); - final MergeJoinPOP mjp = new MergeJoinPOP(leftOp, rightOp, Arrays.asList(join.getConditions()), - join.getJoinType()); + final MergeJoinPOP mjp = new MergeJoinPOP(leftOp, rightOp, join.getConditions(), join.getJoinType()); return new SelectionVectorRemover(mjp); } @@ -221,17 +217,17 @@ public class BasicOptimizer extends Optimizer { @Override public PhysicalOperator visitStore(final Store store, final Object obj) throws OptimizerException { - final Iterator<LogicalOperator> iterator = store.iterator(); - if (!iterator.hasNext()) { + LogicalOperator input = store.getInput(); + if (input == null) { throw new OptimizerException("Store node in logical plan does not have a child."); } - return new Screen(iterator.next().accept(this, obj), queryContext.getCurrentEndpoint()); + return new Screen(store.getInput().accept(this, obj), queryContext.getCurrentEndpoint()); } @Override public PhysicalOperator visitProject(final Project project, final Object obj) throws OptimizerException { return new org.apache.drill.exec.physical.config.Project( - Arrays.asList(project.getSelections()), project.iterator().next().accept(this, obj)); + project.getSelections(), project.getInput().accept(this, obj)); } @Override @@ -239,7 +235,7 @@ public class BasicOptimizer extends Optimizer { final TypeProtos.MajorType.Builder b = TypeProtos.MajorType.getDefaultInstance().newBuilderForType(); b.setMode(DataMode.REQUIRED); b.setMinorType(MinorType.BIGINT); - final PhysicalOperator child = filter.iterator().next().accept(this, obj); + final PhysicalOperator child = filter.getInput().accept(this, obj); return new SelectionVectorRemover(new org.apache.drill.exec.physical.config.Filter(child, filter.getExpr(), 1.0f)); } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/AbstractMultiple.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/AbstractMultiple.java index 909a15232..075643d3b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/AbstractMultiple.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/AbstractMultiple.java @@ -18,6 +18,7 @@ package org.apache.drill.exec.physical.base; import java.util.Iterator; +import java.util.List; import com.google.common.collect.Iterators; @@ -27,19 +28,19 @@ import com.google.common.collect.Iterators; public abstract class AbstractMultiple extends AbstractBase{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(AbstractMultiple.class); - protected final PhysicalOperator[] children; + protected final List<PhysicalOperator> children; - protected AbstractMultiple(PhysicalOperator[] children) { + protected AbstractMultiple(List<PhysicalOperator> children) { this.children = children; } - public PhysicalOperator[] getChildren() { + public List<PhysicalOperator> getChildren() { return children; } @Override public Iterator<PhysicalOperator> iterator() { - return Iterators.forArray(children); + return children.iterator(); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/HashAggregate.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/HashAggregate.java index 694570cdc..4dafbe8a2 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/HashAggregate.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/HashAggregate.java @@ -27,29 +27,34 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonTypeName; +import java.util.List; + @JsonTypeName("hash-aggregate") public class HashAggregate extends AbstractSingle { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(HashAggregate.class); - private final NamedExpression[] groupByExprs; - private final NamedExpression[] aggrExprs; + private final List<NamedExpression> groupByExprs; + private final List<NamedExpression> aggrExprs; private final float cardinality; @JsonCreator - public HashAggregate(@JsonProperty("child") PhysicalOperator child, @JsonProperty("keys") NamedExpression[] groupByExprs, @JsonProperty("exprs") NamedExpression[] aggrExprs, @JsonProperty("cardinality") float cardinality) { + public HashAggregate(@JsonProperty("child") PhysicalOperator child, + @JsonProperty("keys") List<NamedExpression> groupByExprs, + @JsonProperty("exprs") List<NamedExpression> aggrExprs, + @JsonProperty("cardinality") float cardinality) { super(child); this.groupByExprs = groupByExprs; this.aggrExprs = aggrExprs; this.cardinality = cardinality; } - public NamedExpression[] getGroupByExprs() { + public List<NamedExpression> getGroupByExprs() { return groupByExprs; } - public NamedExpression[] getAggrExprs() { + public List<NamedExpression> getAggrExprs() { return aggrExprs; } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/StreamingAggregate.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/StreamingAggregate.java index 9486f6d09..566916664 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/StreamingAggregate.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/StreamingAggregate.java @@ -27,29 +27,31 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonTypeName; +import java.util.List; + @JsonTypeName("streaming-aggregate") public class StreamingAggregate extends AbstractSingle { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(StreamingAggregate.class); - private final NamedExpression[] keys; - private final NamedExpression[] exprs; + private final List<NamedExpression> keys; + private final List<NamedExpression> exprs; private final float cardinality; @JsonCreator - public StreamingAggregate(@JsonProperty("child") PhysicalOperator child, @JsonProperty("keys") NamedExpression[] keys, @JsonProperty("exprs") NamedExpression[] exprs, @JsonProperty("cardinality") float cardinality) { + public StreamingAggregate(@JsonProperty("child") PhysicalOperator child, @JsonProperty("keys") List<NamedExpression> keys, @JsonProperty("exprs") List<NamedExpression> exprs, @JsonProperty("cardinality") float cardinality) { super(child); this.keys = keys; this.exprs = exprs; this.cardinality = cardinality; } - public NamedExpression[] getKeys() { + public List<NamedExpression> getKeys() { return keys; } - public NamedExpression[] getExprs() { + public List<NamedExpression> getExprs() { return exprs; } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/UnionAll.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/UnionAll.java index b703a9d1d..54ba58890 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/UnionAll.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/UnionAll.java @@ -35,7 +35,7 @@ public class UnionAll extends AbstractMultiple { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(Filter.class); @JsonCreator - public UnionAll(@JsonProperty("children") PhysicalOperator[] children) { + public UnionAll(@JsonProperty("children") List<PhysicalOperator> children) { super(children); } @@ -46,7 +46,7 @@ public class UnionAll extends AbstractMultiple { @Override public PhysicalOperator getNewWithChildren(List<PhysicalOperator> children) { - return new UnionAll(children.toArray(new PhysicalOperator[children.size()])); + return new UnionAll(children); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/WindowPOP.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/WindowPOP.java index ec5f36103..e98585dd4 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/WindowPOP.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/WindowPOP.java @@ -29,20 +29,22 @@ import org.apache.drill.exec.physical.base.PhysicalOperator; import org.apache.drill.exec.physical.base.PhysicalVisitor; import org.apache.drill.exec.proto.UserBitShared; +import java.util.List; + @JsonTypeName("window") public class WindowPOP extends AbstractSingle { - private final NamedExpression[] withins; - private final NamedExpression[] aggregations; - private final Order.Ordering[] orderings; + private final List<NamedExpression> withins; + private final List<NamedExpression> aggregations; + private final List<Order.Ordering> orderings; private final boolean frameUnitsRows; private final Bound start; private final Bound end; public WindowPOP(@JsonProperty("child") PhysicalOperator child, - @JsonProperty("within") NamedExpression[] withins, - @JsonProperty("aggregations") NamedExpression[] aggregations, - @JsonProperty("orderings") Order.Ordering[] orderings, + @JsonProperty("within") List<NamedExpression> withins, + @JsonProperty("aggregations") List<NamedExpression> aggregations, + @JsonProperty("orderings") List<Order.Ordering> orderings, @JsonProperty("frameUnitsRows") boolean frameUnitsRows, @JsonProperty("start") Bound start, @JsonProperty("end") Bound end) { @@ -78,15 +80,15 @@ public class WindowPOP extends AbstractSingle { return end; } - public NamedExpression[] getAggregations() { + public List<NamedExpression> getAggregations() { return aggregations; } - public NamedExpression[] getWithins() { + public List<NamedExpression> getWithins() { return withins; } - public Order.Ordering[] getOrderings() { + public List<Order.Ordering> getOrderings() { return orderings; } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggBatch.java index 3595ecfa1..d8269226e 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggBatch.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggBatch.java @@ -182,8 +182,8 @@ public class HashAggBatch extends AbstractRecordBatch<HashAggregate> { container.clear(); - int numGroupByExprs = (popConfig.getGroupByExprs() != null) ? popConfig.getGroupByExprs().length : 0; - int numAggrExprs = (popConfig.getAggrExprs() != null) ? popConfig.getAggrExprs().length : 0; + int numGroupByExprs = (popConfig.getGroupByExprs() != null) ? popConfig.getGroupByExprs().size() : 0; + int numAggrExprs = (popConfig.getAggrExprs() != null) ? popConfig.getAggrExprs().size() : 0; aggrExprs = new LogicalExpression[numAggrExprs]; groupByOutFieldIds = new TypedFieldId[numGroupByExprs]; aggrOutFieldIds = new TypedFieldId[numAggrExprs]; @@ -193,7 +193,7 @@ public class HashAggBatch extends AbstractRecordBatch<HashAggregate> { int i; for (i = 0; i < numGroupByExprs; i++) { - NamedExpression ne = popConfig.getGroupByExprs()[i]; + NamedExpression ne = popConfig.getGroupByExprs().get(i); final LogicalExpression expr = ExpressionTreeMaterializer.materialize(ne.getExpr(), incoming, collector, context.getFunctionRegistry()); if (expr == null) { @@ -208,7 +208,7 @@ public class HashAggBatch extends AbstractRecordBatch<HashAggregate> { } for (i = 0; i < numAggrExprs; i++) { - NamedExpression ne = popConfig.getAggrExprs()[i]; + NamedExpression ne = popConfig.getAggrExprs().get(i); final LogicalExpression expr = ExpressionTreeMaterializer.materialize(ne.getExpr(), incoming, collector, context.getFunctionRegistry()); @@ -239,7 +239,8 @@ public class HashAggBatch extends AbstractRecordBatch<HashAggregate> { HashAggregator agg = context.getImplementationClass(top); HashTableConfig htConfig = - new HashTableConfig(context.getOptions().getOption(ExecConstants.MIN_HASH_TABLE_SIZE_KEY).num_val.intValue(), + // TODO - fix the validator on this option + new HashTableConfig((int)context.getOptions().getOption(ExecConstants.MIN_HASH_TABLE_SIZE), HashTable.DEFAULT_LOAD_FACTOR, popConfig.getGroupByExprs(), null /* no probe exprs */); agg.setup(popConfig, htConfig, context, this.stats, diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java index 9ff874ff4..5e081638c 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java @@ -247,7 +247,7 @@ public abstract class HashAggTemplate implements HashAggregator { // e.g SELECT COUNT(DISTINCT a1) FROM t1 ; // we need to build a hash table on the aggregation column a1. // TODO: This functionality will be added later. - if (hashAggrConfig.getGroupByExprs().length == 0) { + if (hashAggrConfig.getGroupByExprs().size() == 0) { throw new IllegalArgumentException("Currently, hash aggregation is only applicable if there are group-by " + "expressions."); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/StreamingAggBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/StreamingAggBatch.java index 19232f808..9d883f3f1 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/StreamingAggBatch.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/StreamingAggBatch.java @@ -139,7 +139,7 @@ public class StreamingAggBatch extends AbstractRecordBatch<StreamingAggregate> { logger.debug("Next outcome of {}", outcome); switch (outcome) { case NONE: - if (first && popConfig.getKeys().length == 0) { + if (first && popConfig.getKeys().size() == 0) { // if we have a straight aggregate and empty input batch, we need to handle it in a different way constructSpecialBatch(); first = false; @@ -225,7 +225,7 @@ public class StreamingAggBatch extends AbstractRecordBatch<StreamingAggregate> { * buffer */ throw new DrillRuntimeException("FixedWidth vectors is the expected output vector type. " + - "Corresponding expression: " + popConfig.getExprs()[exprIndex].toString()); + "Corresponding expression: " + popConfig.getExprs().get(exprIndex).toString()); } } exprIndex++; @@ -260,14 +260,14 @@ public class StreamingAggBatch extends AbstractRecordBatch<StreamingAggregate> { ClassGenerator<StreamingAggregator> cg = CodeGenerator.getRoot(StreamingAggTemplate.TEMPLATE_DEFINITION, context.getFunctionRegistry()); container.clear(); - LogicalExpression[] keyExprs = new LogicalExpression[popConfig.getKeys().length]; - LogicalExpression[] valueExprs = new LogicalExpression[popConfig.getExprs().length]; - TypedFieldId[] keyOutputIds = new TypedFieldId[popConfig.getKeys().length]; + LogicalExpression[] keyExprs = new LogicalExpression[popConfig.getKeys().size()]; + LogicalExpression[] valueExprs = new LogicalExpression[popConfig.getExprs().size()]; + TypedFieldId[] keyOutputIds = new TypedFieldId[popConfig.getKeys().size()]; ErrorCollector collector = new ErrorCollectorImpl(); for (int i = 0; i < keyExprs.length; i++) { - final NamedExpression ne = popConfig.getKeys()[i]; + final NamedExpression ne = popConfig.getKeys().get(i); final LogicalExpression expr = ExpressionTreeMaterializer.materialize(ne.getExpr(), incoming, collector,context.getFunctionRegistry() ); if (expr == null) { continue; @@ -279,7 +279,7 @@ public class StreamingAggBatch extends AbstractRecordBatch<StreamingAggregate> { } for (int i = 0; i < valueExprs.length; i++) { - final NamedExpression ne = popConfig.getExprs()[i]; + final NamedExpression ne = popConfig.getExprs().get(i); final LogicalExpression expr = ExpressionTreeMaterializer.materialize(ne.getExpr(), incoming, collector, context.getFunctionRegistry()); if (expr instanceof IfExpression) { throw UserException.unsupportedError(new UnsupportedOperationException("Union type not supported in aggregate functions")).build(logger); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/ChainedHashTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/ChainedHashTable.java index bd34d7645..cfd95e92e 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/ChainedHashTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/ChainedHashTable.java @@ -143,17 +143,17 @@ public class ChainedHashTable { ClassGenerator<HashTable> cg = top.getRoot(); ClassGenerator<HashTable> cgInner = cg.getInnerGenerator("BatchHolder"); - LogicalExpression[] keyExprsBuild = new LogicalExpression[htConfig.getKeyExprsBuild().length]; + LogicalExpression[] keyExprsBuild = new LogicalExpression[htConfig.getKeyExprsBuild().size()]; LogicalExpression[] keyExprsProbe = null; boolean isProbe = (htConfig.getKeyExprsProbe() != null); if (isProbe) { - keyExprsProbe = new LogicalExpression[htConfig.getKeyExprsProbe().length]; + keyExprsProbe = new LogicalExpression[htConfig.getKeyExprsProbe().size()]; } ErrorCollector collector = new ErrorCollectorImpl(); VectorContainer htContainerOrig = new VectorContainer(); // original ht container from which others may be cloned - LogicalExpression[] htKeyExprs = new LogicalExpression[htConfig.getKeyExprsBuild().length]; - TypedFieldId[] htKeyFieldIds = new TypedFieldId[htConfig.getKeyExprsBuild().length]; + LogicalExpression[] htKeyExprs = new LogicalExpression[htConfig.getKeyExprsBuild().size()]; + TypedFieldId[] htKeyFieldIds = new TypedFieldId[htConfig.getKeyExprsBuild().size()]; int i = 0; for (NamedExpression ne : htConfig.getKeyExprsBuild()) { @@ -210,7 +210,7 @@ public class ChainedHashTable { setupSetValue(cgInner, keyExprsBuild, htKeyFieldIds); if (outgoing != null) { - if (outKeyFieldIds.length > htConfig.getKeyExprsBuild().length) { + if (outKeyFieldIds.length > htConfig.getKeyExprsBuild().size()) { throw new IllegalArgumentException("Mismatched number of output key fields."); } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableConfig.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableConfig.java index fa6d4b5e9..a6b2587c3 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableConfig.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableConfig.java @@ -23,6 +23,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonTypeName; +import java.util.List; + @JsonTypeName("hashtable-config") public class HashTableConfig { @@ -30,13 +32,13 @@ public class HashTableConfig { private final int initialCapacity; private final float loadFactor; - private final NamedExpression[] keyExprsBuild; - private final NamedExpression[] keyExprsProbe; + private final List<NamedExpression> keyExprsBuild; + private final List<NamedExpression> keyExprsProbe; @JsonCreator public HashTableConfig(@JsonProperty("initialCapacity") int initialCapacity, @JsonProperty("loadFactor") float loadFactor, - @JsonProperty("keyExprsBuild") NamedExpression[] keyExprsBuild, - @JsonProperty("keyExprsProbe") NamedExpression[] keyExprsProbe) { + @JsonProperty("keyExprsBuild") List<NamedExpression> keyExprsBuild, + @JsonProperty("keyExprsProbe") List<NamedExpression> keyExprsProbe) { this.initialCapacity = initialCapacity; this.loadFactor = loadFactor; this.keyExprsBuild = keyExprsBuild; @@ -51,11 +53,11 @@ public class HashTableConfig { return loadFactor; } - public NamedExpression[] getKeyExprsBuild() { + public List<NamedExpression> getKeyExprsBuild() { return keyExprsBuild; } - public NamedExpression[] getKeyExprsProbe() { + public List<NamedExpression> getKeyExprsProbe() { return keyExprsProbe; } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableTemplate.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableTemplate.java index 7d9f568cc..efd695e86 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableTemplate.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableTemplate.java @@ -447,7 +447,7 @@ public abstract class HashTableTemplate implements HashTable { throw new IllegalArgumentException("The initial capacity must be less than maximum capacity allowed"); } - if (htConfig.getKeyExprsBuild() == null || htConfig.getKeyExprsBuild().length == 0) { + if (htConfig.getKeyExprsBuild() == null || htConfig.getKeyExprsBuild().size() == 0) { throw new IllegalArgumentException("Hash table must have at least 1 key expression"); } 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 3ea97c658..2ba54ddc0 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 @@ -18,6 +18,7 @@ package org.apache.drill.exec.physical.impl.join; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import org.apache.drill.common.expression.FieldReference; @@ -281,14 +282,14 @@ public class HashJoinBatch extends AbstractRecordBatch<HashJoinPOP> { public void setupHashTable() throws IOException, SchemaChangeException, ClassTransformationException { // Setup the hash table configuration object int conditionsSize = conditions.size(); - final NamedExpression rightExpr[] = new NamedExpression[conditionsSize]; - NamedExpression leftExpr[] = new NamedExpression[conditionsSize]; + final List<NamedExpression> rightExpr = new ArrayList<>(conditionsSize); + List<NamedExpression> leftExpr = new ArrayList<>(conditionsSize); JoinComparator comparator = JoinComparator.NONE; // Create named expressions from the conditions for (int i = 0; i < conditionsSize; i++) { - rightExpr[i] = new NamedExpression(conditions.get(i).getRight(), new FieldReference("build_side_" + i)); - leftExpr[i] = new NamedExpression(conditions.get(i).getLeft(), new FieldReference("probe_side_" + i)); + rightExpr.add(new NamedExpression(conditions.get(i).getRight(), new FieldReference("build_side_" + i))); + leftExpr.add(new NamedExpression(conditions.get(i).getLeft(), new FieldReference("probe_side_" + i))); // Hash join only supports certain types of comparisons comparator = JoinUtils.checkAndSetComparison(conditions.get(i), comparator); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/WindowFrameRecordBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/WindowFrameRecordBatch.java index 46a6c0ea2..d2c9e4580 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/WindowFrameRecordBatch.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/WindowFrameRecordBatch.java @@ -260,7 +260,7 @@ public class WindowFrameRecordBatch extends AbstractRecordBatch<WindowPOP> { boolean useDefaultFrame = false; // at least one window function uses the DefaultFrameTemplate boolean useCustomFrame = false; // at least one window function uses the CustomFrameTemplate - hasOrderBy = popConfig.getOrderings().length > 0; + hasOrderBy = popConfig.getOrderings().size() > 0; // all existing vectors will be transferred to the outgoing container in framer.doWork() for (final VectorWrapper<?> wrapper : batch) { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/WindowFunction.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/WindowFunction.java index 191dad113..cd14b8abc 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/WindowFunction.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/WindowFunction.java @@ -157,7 +157,7 @@ public abstract class WindowFunction { @Override public boolean requiresFullPartition(final WindowPOP pop) { - return pop.getOrderings().length == 0 || pop.getEnd().isUnbounded(); + return pop.getOrderings().isEmpty() || pop.getEnd().isUnbounded(); } @Override @@ -451,7 +451,7 @@ public abstract class WindowFunction { @Override public boolean requiresFullPartition(final WindowPOP pop) { - return pop.getOrderings().length == 0 || pop.getEnd().isUnbounded(); + return pop.getOrderings().isEmpty() || pop.getEnd().isUnbounded(); } @Override 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 637fb8e81..44bf170c3 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 @@ -73,10 +73,7 @@ public class HashAggPrel extends AggPrelBase implements Prel{ public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { Prel child = (Prel) this.getInput(); - HashAggregate g = new HashAggregate(child.getPhysicalOperator(creator), - keys.toArray(new NamedExpression[keys.size()]), - aggExprs.toArray(new NamedExpression[aggExprs.size()]), - 1.0f); + HashAggregate g = new HashAggregate(child.getPhysicalOperator(creator), keys, aggExprs, 1.0f); return creator.addMetadata(this, g); 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 80fe1a1fc..c3e8afa54 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 @@ -87,8 +87,7 @@ public class StreamAggPrel extends AggPrelBase implements Prel{ public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { 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); + StreamingAggregate g = new StreamingAggregate(child.getPhysicalOperator(creator), keys, aggExprs, 1.0f); return creator.addMetadata(this, g); 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 ff2ad1bdf..4282a3f5c 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 @@ -79,7 +79,7 @@ public class UnionAllPrel extends UnionPrel { inputPops.add( ((Prel)this.getInputs().get(i)).getPhysicalOperator(creator)); } - UnionAll unionall = new UnionAll(inputPops.toArray(new PhysicalOperator[inputPops.size()])); + UnionAll unionall = new UnionAll(inputPops); return creator.addMetadata(this, unionall); } 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 4ef33756c..5cda5a6ce 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 @@ -78,7 +78,7 @@ public class UnionDistinctPrel extends UnionPrel { } ///TODO: change this to UnionDistinct once implemented end-to-end.. - UnionAll unionAll = new UnionAll(inputPops.toArray(new PhysicalOperator[inputPops.size()])); + UnionAll unionAll = new UnionAll(inputPops); return creator.addMetadata(this, unionAll); } 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 1a89bd738..bf5236608 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 @@ -102,9 +102,9 @@ public class WindowPrel extends DrillWindowRelBase implements Prel { WindowPOP windowPOP = new WindowPOP( childPOP, - withins.toArray(new NamedExpression[withins.size()]), - aggs.toArray(new NamedExpression[aggs.size()]), - orderings.toArray(new Order.Ordering[orderings.size()]), + withins, + aggs, + orderings, window.isRows, WindowPOP.newBound(window.lowerBound), WindowPOP.newBound(window.upperBound)); |