aboutsummaryrefslogtreecommitdiff
path: root/exec/java-exec/src
diff options
context:
space:
mode:
Diffstat (limited to 'exec/java-exec/src')
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/opt/BasicOptimizer.java18
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/AbstractMultiple.java9
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/HashAggregate.java15
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/StreamingAggregate.java12
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/UnionAll.java4
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/config/WindowPOP.java20
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggBatch.java11
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java2
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/StreamingAggBatch.java14
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/ChainedHashTable.java10
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableConfig.java14
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableTemplate.java2
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinBatch.java9
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/WindowFrameRecordBatch.java2
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/WindowFunction.java4
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/HashAggPrel.java5
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/StreamAggPrel.java3
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionAllPrel.java2
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/UnionDistinctPrel.java2
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrel.java6
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));