aboutsummaryrefslogtreecommitdiff
path: root/exec/java-exec/src/main/java/org
diff options
context:
space:
mode:
authorJason Altekruse <altekrusejason@gmail.com>2016-02-10 17:36:47 -0800
committerJason Altekruse <altekrusejason@gmail.com>2016-04-20 08:10:40 -0700
commitd24205d4e795a1aab54b64708dde1e7deeca668b (patch)
treea20ba3e0c3bfb5f77cba770ca53af95aaced7cd5 /exec/java-exec/src/main/java/org
parentc6a03eb1708f3cea6cea2f9530057ad707c374c0 (diff)
DRILL-4445: Standardize the Physical and Logical plan nodes to use Lists instead of arrays for their inputs
Remove some extra translation logic used to move between the two representations. TODO - look back the the Join logical node, has two JsonCreator annotations, but only one will be used. Not sure if the behavior of which is chosen is considered documented behavior, should just fix it on our end.
Diffstat (limited to 'exec/java-exec/src/main/java/org')
-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));