You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by ja...@apache.org on 2015/11/13 03:38:08 UTC
[38/45] drill git commit: DRILL-3987: (MOVE) Move logical expressions
and operators out of common. Move to new drill-logical model.
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/expression/visitors/ExpressionValidator.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/expression/visitors/ExpressionValidator.java b/common/src/main/java/org/apache/drill/common/expression/visitors/ExpressionValidator.java
deleted file mode 100644
index eb1394c..0000000
--- a/common/src/main/java/org/apache/drill/common/expression/visitors/ExpressionValidator.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.expression.visitors;
-
-import org.apache.drill.common.expression.BooleanOperator;
-import org.apache.drill.common.expression.CastExpression;
-import org.apache.drill.common.expression.ConvertExpression;
-import org.apache.drill.common.expression.ErrorCollector;
-import org.apache.drill.common.expression.FunctionCall;
-import org.apache.drill.common.expression.FunctionHolderExpression;
-import org.apache.drill.common.expression.IfExpression;
-import org.apache.drill.common.expression.IfExpression.IfCondition;
-import org.apache.drill.common.expression.LogicalExpression;
-import org.apache.drill.common.expression.NullExpression;
-import org.apache.drill.common.expression.SchemaPath;
-import org.apache.drill.common.expression.TypedNullConstant;
-import org.apache.drill.common.expression.ValueExpressions;
-import org.apache.drill.common.expression.ValueExpressions.BooleanExpression;
-import org.apache.drill.common.expression.ValueExpressions.DateExpression;
-import org.apache.drill.common.expression.ValueExpressions.Decimal18Expression;
-import org.apache.drill.common.expression.ValueExpressions.Decimal28Expression;
-import org.apache.drill.common.expression.ValueExpressions.Decimal38Expression;
-import org.apache.drill.common.expression.ValueExpressions.Decimal9Expression;
-import org.apache.drill.common.expression.ValueExpressions.DoubleExpression;
-import org.apache.drill.common.expression.ValueExpressions.IntervalDayExpression;
-import org.apache.drill.common.expression.ValueExpressions.IntervalYearExpression;
-import org.apache.drill.common.expression.ValueExpressions.LongExpression;
-import org.apache.drill.common.expression.ValueExpressions.QuotedString;
-import org.apache.drill.common.expression.ValueExpressions.TimeExpression;
-import org.apache.drill.common.expression.ValueExpressions.TimeStampExpression;
-import org.apache.drill.common.types.TypeProtos.DataMode;
-import org.apache.drill.common.types.TypeProtos.MajorType;
-import org.apache.drill.common.types.TypeProtos.MinorType;
-
-public class ExpressionValidator implements ExprVisitor<Void, ErrorCollector, RuntimeException> {
- static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ExpressionValidator.class);
-
- @Override
- public Void visitFunctionCall(FunctionCall call, ErrorCollector errors) throws RuntimeException {
- // we throw an exception here because this is a fundamental operator programming problem as opposed to an expression
- // problem. At this point in an expression's lifecycle, all function calls should have been converted into
- // FunctionHolders.
- throw new UnsupportedOperationException("FunctionCall is not expected here. "
- + "It should have been converted to FunctionHolderExpression in materialization");
- }
-
- @Override
- public Void visitFunctionHolderExpression(FunctionHolderExpression holder, ErrorCollector errors)
- throws RuntimeException {
- // make sure aggregate functions are not nested inside aggregate functions
- AggregateChecker.isAggregating(holder, errors);
-
- // make sure arguments are constant if the function implementation expects constants for any arguments
- ConstantChecker.checkConstants(holder, errors);
-
- return null;
- }
-
- @Override
- public Void visitBooleanOperator(BooleanOperator op, ErrorCollector errors) throws RuntimeException {
- int i = 0;
- for (LogicalExpression arg : op.args) {
- if ( arg.getMajorType().getMinorType() != MinorType.BIT) {
- errors
- .addGeneralError(
- arg.getPosition(),
- String
- .format(
- "Failure composing boolean operator %s. All conditions must return a boolean type. Condition %d was of Type %s.",
- op.getName(), i, arg.getMajorType().getMinorType()));
- }
- i++;
- }
-
- return null;
- }
-
- @Override
- public Void visitIfExpression(IfExpression ifExpr, ErrorCollector errors) throws RuntimeException {
- // confirm that all conditions are required boolean values.
- IfCondition cond = ifExpr.ifCondition;
- MajorType majorType = cond.condition.getMajorType();
- if ( majorType
- .getMinorType() != MinorType.BIT) {
- errors
- .addGeneralError(
- cond.condition.getPosition(),
- String
- .format(
- "Failure composing If Expression. All conditions must return a boolean type. Condition was of Type %s.",
- majorType.getMinorType()));
- }
-
- // confirm that all outcomes are the same type.
- final MajorType mt = ifExpr.elseExpression.getMajorType();
- cond = ifExpr.ifCondition;
- MajorType innerT = cond.expression.getMajorType();
- if ((innerT.getMode() == DataMode.REPEATED && mt.getMode() != DataMode.REPEATED) || //
- ((innerT.getMinorType() != mt.getMinorType()) &&
- (innerT.getMode() != DataMode.OPTIONAL && mt.getMode() != DataMode.OPTIONAL &&
- (innerT.getMinorType() != MinorType.NULL && mt.getMinorType() != MinorType.NULL)))) {
- errors
- .addGeneralError(
- cond.condition.getPosition(),
- String
- .format(
- "Failure composing If Expression. All expressions must return the same MinorType as the else expression. The if condition returned type type %s but the else expression was of type %s",
- innerT, mt));
- }
- return null;
- }
-
- @Override
- public Void visitSchemaPath(SchemaPath path, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitIntConstant(ValueExpressions.IntExpression intExpr, ErrorCollector value) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitFloatConstant(ValueExpressions.FloatExpression fExpr, ErrorCollector value) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitLongConstant(LongExpression intExpr, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitDecimal9Constant(Decimal9Expression decExpr, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitDecimal18Constant(Decimal18Expression decExpr, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitDecimal28Constant(Decimal28Expression decExpr, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitDecimal38Constant(Decimal38Expression decExpr, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitDateConstant(DateExpression intExpr, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitTimeConstant(TimeExpression intExpr, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitIntervalYearConstant(IntervalYearExpression intExpr, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitIntervalDayConstant(IntervalDayExpression intExpr, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitTimeStampConstant(TimeStampExpression intExpr, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitDoubleConstant(DoubleExpression dExpr, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitBooleanConstant(BooleanExpression e, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitQuotedStringConstant(QuotedString e, ErrorCollector errors) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitUnknown(LogicalExpression e, ErrorCollector value) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitCastExpression(CastExpression e, ErrorCollector value) throws RuntimeException {
- return e.getInput().accept(this, value);
- }
-
- @Override
- public Void visitNullConstant(TypedNullConstant e, ErrorCollector value) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitNullExpression(NullExpression e, ErrorCollector value) throws RuntimeException {
- return null;
- }
-
- @Override
- public Void visitConvertExpression(ConvertExpression e, ErrorCollector value)
- throws RuntimeException {
- return e.getInput().accept(this, value);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/expression/visitors/OpVisitor.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/expression/visitors/OpVisitor.java b/common/src/main/java/org/apache/drill/common/expression/visitors/OpVisitor.java
deleted file mode 100644
index b3c7879..0000000
--- a/common/src/main/java/org/apache/drill/common/expression/visitors/OpVisitor.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.expression.visitors;
-
-import org.apache.drill.common.graph.GraphVisitor;
-import org.apache.drill.common.logical.data.LogicalOperator;
-
-public interface OpVisitor extends GraphVisitor<LogicalOperator> {
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/expression/visitors/SimpleExprVisitor.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/expression/visitors/SimpleExprVisitor.java b/common/src/main/java/org/apache/drill/common/expression/visitors/SimpleExprVisitor.java
deleted file mode 100644
index 5f83e93..0000000
--- a/common/src/main/java/org/apache/drill/common/expression/visitors/SimpleExprVisitor.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.expression.visitors;
-
-import org.apache.drill.common.expression.FunctionCall;
-import org.apache.drill.common.expression.FunctionHolderExpression;
-import org.apache.drill.common.expression.IfExpression;
-import org.apache.drill.common.expression.SchemaPath;
-import org.apache.drill.common.expression.ValueExpressions.BooleanExpression;
-import org.apache.drill.common.expression.ValueExpressions.DateExpression;
-import org.apache.drill.common.expression.ValueExpressions.Decimal18Expression;
-import org.apache.drill.common.expression.ValueExpressions.Decimal28Expression;
-import org.apache.drill.common.expression.ValueExpressions.Decimal38Expression;
-import org.apache.drill.common.expression.ValueExpressions.Decimal9Expression;
-import org.apache.drill.common.expression.ValueExpressions.DoubleExpression;
-import org.apache.drill.common.expression.ValueExpressions.FloatExpression;
-import org.apache.drill.common.expression.ValueExpressions.IntExpression;
-import org.apache.drill.common.expression.ValueExpressions.IntervalDayExpression;
-import org.apache.drill.common.expression.ValueExpressions.IntervalYearExpression;
-import org.apache.drill.common.expression.ValueExpressions.LongExpression;
-import org.apache.drill.common.expression.ValueExpressions.QuotedString;
-import org.apache.drill.common.expression.ValueExpressions.TimeExpression;
-import org.apache.drill.common.expression.ValueExpressions.TimeStampExpression;
-
-public abstract class SimpleExprVisitor<T> implements ExprVisitor<T, Void, RuntimeException>{
-
- @Override
- public T visitFunctionCall(FunctionCall call, Void value) throws RuntimeException {
- return visitFunctionCall(call);
- }
-
- @Override
- public T visitFunctionHolderExpression(FunctionHolderExpression holder, Void value) throws RuntimeException {
- return visitFunctionHolderExpression(holder);
- }
-
- @Override
- public T visitIfExpression(IfExpression ifExpr, Void value) throws RuntimeException {
- return visitIfExpression(ifExpr);
- }
-
- @Override
- public T visitSchemaPath(SchemaPath path, Void value) throws RuntimeException {
- return visitSchemaPath(path);
- }
-
- @Override
- public T visitIntConstant(IntExpression intExpr, Void value) throws RuntimeException {
- return visitIntConstant(intExpr);
- }
-
- @Override
- public T visitFloatConstant(FloatExpression fExpr, Void value) throws RuntimeException {
- return visitFloatConstant(fExpr);
- }
-
- @Override
- public T visitLongConstant(LongExpression intExpr, Void value) throws RuntimeException {
- return visitLongConstant(intExpr);
- }
-
- @Override
- public T visitDateConstant(DateExpression intExpr, Void value) throws RuntimeException {
- return visitDateConstant(intExpr);
- }
-
-
- @Override
- public T visitTimeConstant(TimeExpression intExpr, Void value) throws RuntimeException {
- return visitTimeConstant(intExpr);
- }
-
- @Override
- public T visitIntervalYearConstant(IntervalYearExpression intExpr, Void value) throws RuntimeException {
- return visitIntervalYearConstant(intExpr);
- }
-
- @Override
- public T visitIntervalDayConstant(IntervalDayExpression intExpr, Void value) throws RuntimeException {
- return visitIntervalDayConstant(intExpr);
- }
-
- @Override
- public T visitTimeStampConstant(TimeStampExpression intExpr, Void value) throws RuntimeException {
- return visitTimeStampConstant(intExpr);
- }
-
- @Override
- public T visitDecimal9Constant(Decimal9Expression decExpr, Void value) throws RuntimeException {
- return visitDecimal9Constant(decExpr);
- }
-
- @Override
- public T visitDecimal18Constant(Decimal18Expression decExpr, Void value) throws RuntimeException {
- return visitDecimal18Constant(decExpr);
- }
-
- @Override
- public T visitDecimal28Constant(Decimal28Expression decExpr, Void value) throws RuntimeException {
- return visitDecimal28Constant(decExpr);
- }
-
- @Override
- public T visitDecimal38Constant(Decimal38Expression decExpr, Void value) throws RuntimeException {
- return visitDecimal38Constant(decExpr);
- }
-
- @Override
- public T visitDoubleConstant(DoubleExpression dExpr, Void value) throws RuntimeException {
- return visitDoubleConstant(dExpr);
- }
-
- @Override
- public T visitBooleanConstant(BooleanExpression e, Void value) throws RuntimeException {
- return visitBooleanConstant(e);
- }
-
- @Override
- public T visitQuotedStringConstant(QuotedString e, Void value) throws RuntimeException {
- return visitQuotedStringConstant(e);
- }
-
-
- public abstract T visitFunctionCall(FunctionCall call);
- public abstract T visitFunctionHolderExpression(FunctionHolderExpression call);
- public abstract T visitIfExpression(IfExpression ifExpr);
- public abstract T visitSchemaPath(SchemaPath path);
- public abstract T visitIntConstant(IntExpression intExpr);
- public abstract T visitFloatConstant(FloatExpression fExpr);
- public abstract T visitLongConstant(LongExpression intExpr);
- public abstract T visitDateConstant(DateExpression intExpr);
- public abstract T visitTimeConstant(TimeExpression intExpr);
- public abstract T visitIntervalYearConstant(IntervalYearExpression intExpr);
- public abstract T visitIntervalDayConstant(IntervalDayExpression intExpr);
- public abstract T visitTimeStampConstant(TimeStampExpression intExpr);
- public abstract T visitDecimal9Constant(Decimal9Expression intExpr);
- public abstract T visitDecimal18Constant(Decimal18Expression intExpr);
- public abstract T visitDecimal28Constant(Decimal28Expression intExpr);
- public abstract T visitDecimal38Constant(Decimal38Expression intExpr);
- public abstract T visitDoubleConstant(DoubleExpression dExpr);
- public abstract T visitBooleanConstant(BooleanExpression e);
- public abstract T visitQuotedStringConstant(QuotedString e);
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/expression/visitors/package-info.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/expression/visitors/package-info.java b/common/src/main/java/org/apache/drill/common/expression/visitors/package-info.java
deleted file mode 100644
index b57362e..0000000
--- a/common/src/main/java/org/apache/drill/common/expression/visitors/package-info.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- * Visitors for validating or optimizing logical expressions.
- *
- * These visitors are used to provide feedback to users on invalid expressions
- * as well as some basic optimizations applied during planning.
- */
-package org.apache.drill.common.expression.visitors;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/graph/AdjacencyList.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/graph/AdjacencyList.java b/common/src/main/java/org/apache/drill/common/graph/AdjacencyList.java
deleted file mode 100644
index a4edfc1..0000000
--- a/common/src/main/java/org/apache/drill/common/graph/AdjacencyList.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.graph;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.ListMultimap;
-import com.google.common.collect.Multimaps;
-
-class AdjacencyList<V extends GraphValue<V>> {
- private Set<Node> allNodes = new HashSet<Node>();
- private ListMultimap<Node, Edge<Node>> adjacencies = ArrayListMultimap.create();
-
- void addEdge(Node source, Node target, int weight) {
- adjacencies.put(source, new Edge<Node>(source, target, weight));
- allNodes.add(source);
- allNodes.add(target);
- }
-
- void clearVisited() {
- for (Edge<Node> e : adjacencies.values()) {
- e.from.visited = false;
- e.to.visited = false;
- }
- }
-
- Node getNewNode(V value) {
- return new Node(value);
- }
-
- public List<Edge<Node>> getAdjacent(AdjacencyList<V>.Node source) {
- return adjacencies.get(source);
- }
-
- public void printEdges() {
- for (Edge<Node> e : adjacencies.values()) {
- System.out.println(e.from.index + " -> " + e.to.index);
- }
- }
-
- public AdjacencyList<V> getReversedList() {
- AdjacencyList<V> newlist = new AdjacencyList<V>();
- for (Edge<Node> e : adjacencies.values()) {
- newlist.addEdge(e.to, e.from, e.weight);
- }
- return newlist;
- }
-
- public Set<Node> getNodeSet() {
- return adjacencies.keySet();
- }
-
-
- Collection<Node> getInternalLeafNodes() {
- // we have to use the allNodes list as otherwise destination only nodes won't be found.
- List<Node> nodes = new LinkedList<Node>(allNodes);
-
- for (Iterator<Node> i = nodes.iterator(); i.hasNext();) {
- final Node n = i.next();
-
- // remove any nodes that have one or more outbound edges.
- List<Edge<Node>> adjList = this.getAdjacent(n);
- if (adjList != null && !adjList.isEmpty()) {
- i.remove();
- }
-
- }
- return nodes;
- }
-
- /**
- * Get a list of nodes that have no outbound edges.
- *
- * @return
- */
- public Collection<V> getLeafNodes() {
- return convert(getInternalLeafNodes());
- }
-
-
- Collection<Node> getInternalRootNodes() {
- Set<Node> nodes = new HashSet<Node>(getNodeSet());
- for (Edge<Node> e : adjacencies.values()) {
- nodes.remove(e.to);
- }
- return nodes;
- }
-
- /**
- * Get a list of all nodes that have no incoming edges.
- *
- * @return
- */
- public List<V> getRootNodes() {
- return convert(getInternalRootNodes());
- }
-
- public Collection<Edge<Node>> getAllEdges() {
- return adjacencies.values();
- }
-
- public void fix(boolean requireDirected) {
- adjacencies = Multimaps.unmodifiableListMultimap(adjacencies);
- allNodes = Collections.unmodifiableSet(allNodes);
-
- if (requireDirected) {
- List<List<Node>> cyclicReferences = GraphAlgos.checkDirected(this);
- if (cyclicReferences.size() > 0) {
- throw new IllegalArgumentException(
- "A logical plan must be a valid DAG. You have cyclic references in your graph. " + cyclicReferences);
- }
- }
- }
-
- List<V> convert(Collection<Node> nodes) {
- List<V> out = new ArrayList<V>(nodes.size());
- for (Node o : nodes) {
- out.add(o.getNodeValue());
- }
- return out;
- }
-
- class Node implements Comparable<Node> {
- final V nodeValue;
- boolean visited = false; // used for Kosaraju's algorithm and Edmonds's
- // algorithm
- int lowlink = -1; // used for Tarjan's algorithm
- int index = -1; // used for Tarjan's algorithm
-
- public Node(final V operator) {
- if (operator == null) {
- throw new IllegalArgumentException("Operator node was null.");
- }
- this.nodeValue = operator;
- }
-
- public int compareTo(final Node argNode) {
- // just do an identity compare since elsewhere you should ensure that only one node exists for each nodeValue.
- return argNode == this ? 0 : -1;
- }
-
- @Override
- public int hashCode() {
- return nodeValue.hashCode();
- }
-
- public V getNodeValue() {
- return nodeValue;
- }
-
- @Override
- public String toString() {
- return "Node [val=" + nodeValue + "]";
- }
-
- }
-
- public static <V extends GraphValue<V>> AdjacencyList<V> newInstance(Collection<V> nodes) {
- AdjacencyList<V> list = new AdjacencyList<V>();
- AdjacencyListBuilder<V> builder = new AdjacencyListBuilder<V>(list);
- for (V v : nodes) {
- v.accept(builder);
- }
- return builder.getAdjacencyList();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/graph/AdjacencyListBuilder.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/graph/AdjacencyListBuilder.java b/common/src/main/java/org/apache/drill/common/graph/AdjacencyListBuilder.java
deleted file mode 100644
index e90d70a..0000000
--- a/common/src/main/java/org/apache/drill/common/graph/AdjacencyListBuilder.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.graph;
-
-import java.util.HashMap;
-import java.util.Map;
-
- class AdjacencyListBuilder<V extends GraphValue<V>> implements GraphVisitor<V> {
- static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(AdjacencyListBuilder.class);
-
- private Map<V, AdjacencyList<V>.Node> ops = new HashMap<V, AdjacencyList<V>.Node>();
- private final AdjacencyList<V> parent;
-
- public AdjacencyListBuilder(AdjacencyList<V> parent) {
- this.parent = parent;
- }
-
- protected boolean requireDirected() {
- return true;
- }
-
- public boolean enter(V o) {
- visit(o);
- return true;
- }
-
- @Override
- public void leave(V o) {
- }
-
- @Override
- public boolean visit(V o) {
- if (o == null) {
- throw new IllegalArgumentException("Null operator.");
- }
-
- if (!ops.containsKey(o)) {
- ops.put(o, parent.getNewNode(o));
- return true;
- }
-
- return true;
- }
-
- public AdjacencyList<V> getAdjacencyList() {
-// logger.debug("Values; {}", ops.values().toArray());
- AdjacencyList<V> a = new AdjacencyList<V>();
-
- for (AdjacencyList<V>.Node from : ops.values()) {
- for (V t : from.getNodeValue()) {
- AdjacencyList<V>.Node to = ops.get(t);
- a.addEdge(from, to, 0);
- }
-
- }
- a.fix(true);
- return a;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/graph/Edge.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/graph/Edge.java b/common/src/main/java/org/apache/drill/common/graph/Edge.java
deleted file mode 100644
index 7b9ca61..0000000
--- a/common/src/main/java/org/apache/drill/common/graph/Edge.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.graph;
-
-
-class Edge<N> implements Comparable<Edge<N>> {
-
- final N from, to;
- final int weight;
-
- public Edge(final N argFrom, final N argTo, final int argWeight) {
- from = argFrom;
- to = argTo;
- weight = argWeight;
- }
-
- public int compareTo(final Edge<N> argEdge) {
- return weight - argEdge.weight;
- }
-
- @Override
- public String toString() {
- return "Edge [from=" + from + ", to=" + to + "]";
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/graph/Graph.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/graph/Graph.java b/common/src/main/java/org/apache/drill/common/graph/Graph.java
deleted file mode 100644
index 3cf4e7a..0000000
--- a/common/src/main/java/org/apache/drill/common/graph/Graph.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.graph;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.drill.common.logical.UnexpectedOperatorType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-public class Graph<G extends GraphValue<G>, R extends G, T extends G> {
-
- static final Logger logger = LoggerFactory.getLogger(Graph.class);
-
- private AdjacencyList<G> adjList;
- private final List<R> roots;
- private final List<T> leaves;
-
- public Graph(List<G> operators, Class<R> root, Class<T> leaf) {
- adjList = AdjacencyList.newInstance(operators);
- roots = checkOperatorType(adjList.getRootNodes(), root, String.format("Root nodes must be a subclass of %s.", root.getSimpleName()));
- leaves = checkOperatorType(adjList.getLeafNodes(), leaf, String.format("Leaf nodes must be a subclass of %s.", leaf.getSimpleName()));
- }
-
- @SuppressWarnings("unchecked")
- private <O extends G> List<O> checkOperatorType(Collection<G> ops, Class<O> classIdentifier, String error){
- for(G o : ops){
- if(!classIdentifier.isAssignableFrom(o.getClass())){
- throw new UnexpectedOperatorType(o, error);
- }
- }
- return (List<O>) ops;
- }
-
- public AdjacencyList<G> getAdjList() {
- return adjList;
- }
-
- public Collection<R> getRoots() {
- return roots;
- }
-
- public Collection<T> getLeaves() {
- return leaves;
- }
-
- public static <G extends GraphValue<G>, R extends G, T extends G> Graph<G, R, T> newGraph(List<G> operators, Class<R> root, Class<T> leaf){
- return new Graph<G, R, T>(operators, root, leaf);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/graph/GraphAlgos.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/graph/GraphAlgos.java b/common/src/main/java/org/apache/drill/common/graph/GraphAlgos.java
deleted file mode 100644
index 0b82c7b..0000000
--- a/common/src/main/java/org/apache/drill/common/graph/GraphAlgos.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.graph;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class GraphAlgos {
- static final Logger logger = LoggerFactory.getLogger(GraphAlgos.class);
-
- public static class TopoSorter<V extends GraphValue<V>> {
- final List<AdjacencyList<V>.Node> sorted = new LinkedList<AdjacencyList<V>.Node>();
- final AdjacencyList<V> rGraph;
-
- private TopoSorter(AdjacencyList<V> graph, boolean reverse) {
- graph.clearVisited();
-
- if (reverse) {
- this.rGraph = graph.getReversedList();
- } else {
- this.rGraph = graph;
- }
- Collection<AdjacencyList<V>.Node> sourceNodes = rGraph.getInternalRootNodes();
-
- for (AdjacencyList<V>.Node n : sourceNodes) {
- visit(n);
- }
- }
-
- private void visit(AdjacencyList<V>.Node n) {
- if (n.visited) {
- return;
- }
-
- n.visited = true;
- List<Edge<AdjacencyList<V>.Node>> edges = rGraph.getAdjacent(n);
- if (edges != null) {
- for (Edge<AdjacencyList<V>.Node> e : edges) {
- visit(e.to);
- }
- }
-
- sorted.add(n);
-
- }
-
- /**
- * Execute a depth-first sort on the reversed DAG.
- *
- * @param graph
- * The adjacency list for the DAG.
- * @param sourceNodes
- * List of nodes that
- * @return
- */
- static <V extends GraphValue<V>> List<AdjacencyList<V>.Node> sortInternal(AdjacencyList<V> graph, boolean reverse) {
- TopoSorter<V> ts = new TopoSorter<V>(graph, reverse);
- return ts.sorted;
- }
-
- public static <V extends GraphValue<V>> List<V> sort(Graph<V, ?, ?> graph) {
- AdjacencyList<V> l = graph.getAdjList();
- return l.convert(sortInternal(l, true));
- }
-
- public static <V extends GraphValue<V>> List<V> sortLogical(Graph<V, ?, ?> graph) {
- AdjacencyList<V> l = graph.getAdjList();
- return l.convert(sortInternal(l, false));
- }
- }
-
- static <V extends GraphValue<V>> List<List<AdjacencyList<V>.Node>> checkDirected(AdjacencyList<V> graph) {
- Tarjan<V> t = new Tarjan<V>();
- List<List<AdjacencyList<V>.Node>> subgraphs = t.executeTarjan(graph);
- for (Iterator<List<AdjacencyList<V>.Node>> i = subgraphs.iterator(); i.hasNext();) {
- List<AdjacencyList<V>.Node> l = i.next();
- if (l.size() == 1) {
- i.remove();
- }
- }
- return subgraphs;
- }
-
- public static <V extends GraphValue<V>> List<List<AdjacencyList<V>.Node>> checkDirected(Graph<V, ?, ?> graph) {
- return checkDirected(graph.getAdjList());
- }
-
- public static class Tarjan<V extends GraphValue<V>> {
-
- private int index = 0;
- private List<AdjacencyList<V>.Node> stack = new LinkedList<AdjacencyList<V>.Node>();
- private List<List<AdjacencyList<V>.Node>> SCC = new LinkedList<List<AdjacencyList<V>.Node>>();
-
- public List<List<AdjacencyList<V>.Node>> executeTarjan(AdjacencyList<V> graph) {
- SCC.clear();
- index = 0;
- stack.clear();
- if (graph != null) {
- List<AdjacencyList<V>.Node> nodeList = new LinkedList<AdjacencyList<V>.Node>(graph.getNodeSet());
- for (AdjacencyList<V>.Node node : nodeList) {
- if (node.index == -1) {
- tarjan(node, graph);
- }
- }
- }
- return SCC;
- }
-
- private List<List<AdjacencyList<V>.Node>> tarjan(AdjacencyList<V>.Node v, AdjacencyList<V> list) {
- v.index = index;
- v.lowlink = index;
- index++;
- stack.add(0, v);
- List<Edge<AdjacencyList<V>.Node>> l = list.getAdjacent(v);
- if (l != null) {
- for (Edge<AdjacencyList<V>.Node> e : l) {
- AdjacencyList<V>.Node n = e.to;
- if (n.index == -1) {
- tarjan(n, list);
- v.lowlink = Math.min(v.lowlink, n.lowlink);
- } else if (stack.contains(n)) {
- v.lowlink = Math.min(v.lowlink, n.index);
- }
- }
- }
- if (v.lowlink == v.index) {
- AdjacencyList<V>.Node n;
- List<AdjacencyList<V>.Node> component = new LinkedList<AdjacencyList<V>.Node>();
- do {
- n = stack.remove(0);
- component.add(n);
- } while (n != v);
- SCC.add(component);
- }
- return SCC;
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/graph/GraphValue.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/graph/GraphValue.java b/common/src/main/java/org/apache/drill/common/graph/GraphValue.java
deleted file mode 100644
index a919008..0000000
--- a/common/src/main/java/org/apache/drill/common/graph/GraphValue.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.graph;
-
-
-public interface GraphValue<T> extends Iterable<T>{
- static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(GraphValue.class);
-
- public void accept(GraphVisitor<T> visitor);
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/graph/GraphVisitor.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/graph/GraphVisitor.java b/common/src/main/java/org/apache/drill/common/graph/GraphVisitor.java
deleted file mode 100644
index 810b738..0000000
--- a/common/src/main/java/org/apache/drill/common/graph/GraphVisitor.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.graph;
-
-
-public interface GraphVisitor<T> {
- public boolean enter(T o);
- public void leave(T o);
- public boolean visit(T o);
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/graph/Visitable.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/graph/Visitable.java b/common/src/main/java/org/apache/drill/common/graph/Visitable.java
deleted file mode 100644
index c97062e..0000000
--- a/common/src/main/java/org/apache/drill/common/graph/Visitable.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.graph;
-
-public interface Visitable<T extends Visitable<?>> {
- public void accept(T node);
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/graph/package-info.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/graph/package-info.java b/common/src/main/java/org/apache/drill/common/graph/package-info.java
deleted file mode 100644
index 38138d0..0000000
--- a/common/src/main/java/org/apache/drill/common/graph/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- * Connected-graph representation shared by logical and physical query graphs.
- */
-package org.apache.drill.common.graph;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/FormatPluginConfig.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/FormatPluginConfig.java b/common/src/main/java/org/apache/drill/common/logical/FormatPluginConfig.java
deleted file mode 100644
index e7d3d1f..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/FormatPluginConfig.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical;
-
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-
-/**
- * Interface for defining a Drill format plugin.
- *
- * Format plugins are contained within storage plugins to describe particular
- * data formats available in a given storage system. These formats are not
- * necessarily tied to how the data is stored. One current use of this
- * abstraction is describing different file formats like CSV and JSON that
- * can be stored in a filesystem. Some storage systems like databases may only
- * have a single format in which the data is actually stored. This interface
- * enables flexibility for configuring the different data formats that will
- * live under one storage system. The storage systems themselves are described
- * in {@see StoragePluginConfig}s.
- */
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property="type")
-public interface FormatPluginConfig {
- static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(FormatPluginConfig.class);
-
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/FormatPluginConfigBase.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/FormatPluginConfigBase.java b/common/src/main/java/org/apache/drill/common/logical/FormatPluginConfigBase.java
deleted file mode 100644
index 50de963..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/FormatPluginConfigBase.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical;
-
-import java.util.Set;
-
-import org.apache.drill.common.scanner.persistence.ScanResult;
-
-
-public abstract class FormatPluginConfigBase implements FormatPluginConfig{
- private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(FormatPluginConfigBase.class);
-
-
- /**
- * scan for implementations of {@see FormatPlugin}.
- *
- * @param classpathScan - Drill configuration object, used to find the packages to scan
- * @return - list of classes that implement the interface.
- */
- public static Set<Class<? extends FormatPluginConfig>> getSubTypes(final ScanResult classpathScan) {
- final Set<Class<? extends FormatPluginConfig>> pluginClasses = classpathScan.getImplementations(FormatPluginConfig.class);
- logger.debug("Found {} format plugin configuration classes: {}.", pluginClasses.size(), pluginClasses);
- return pluginClasses;
- }
-
- @Override
- public abstract boolean equals(Object o);
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/LogicalPlan.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/LogicalPlan.java b/common/src/main/java/org/apache/drill/common/logical/LogicalPlan.java
deleted file mode 100644
index 8a4a5ab..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/LogicalPlan.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.drill.common.config.DrillConfig;
-import org.apache.drill.common.config.LogicalPlanPersistence;
-import org.apache.drill.common.graph.Graph;
-import org.apache.drill.common.graph.GraphAlgos;
-import org.apache.drill.common.logical.data.LogicalOperator;
-import org.apache.drill.common.logical.data.SinkOperator;
-import org.apache.drill.common.logical.data.SourceOperator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-@JsonPropertyOrder({ "head", "storage", "query" })
-public class LogicalPlan {
- static final Logger logger = LoggerFactory.getLogger(LogicalPlan.class);
-
- private final PlanProperties properties;
- private final Map<String, StoragePluginConfig> storageEngineMap;
- private final Graph<LogicalOperator, SinkOperator, SourceOperator> graph;
-
-
- @JsonCreator
- public LogicalPlan(@JsonProperty("head") PlanProperties head,
- @JsonProperty("storage") Map<String, StoragePluginConfig> storageEngineMap,
- @JsonProperty("query") List<LogicalOperator> operators) {
- this.storageEngineMap = storageEngineMap != null ? storageEngineMap : new HashMap<String, StoragePluginConfig>();
- this.properties = head;
- this.graph = Graph.newGraph(operators, SinkOperator.class, SourceOperator.class);
- }
-
- @JsonProperty("query")
- public List<LogicalOperator> getSortedOperators() {
- return GraphAlgos.TopoSorter.sortLogical(graph);
- }
-
- public StoragePluginConfig getStorageEngineConfig(String name) {
- return storageEngineMap.get(name);
- }
-
- @JsonIgnore
- public Graph<LogicalOperator, SinkOperator, SourceOperator> getGraph() {
- return graph;
- }
-
- @JsonProperty("head")
- public PlanProperties getProperties() {
- return properties;
- }
-
- @JsonProperty("storage")
- public Map<String, StoragePluginConfig> getStorageEngines() {
- return storageEngineMap;
- }
-
- public String toJsonString(LogicalPlanPersistence config) throws JsonProcessingException {
- return config.getMapper().writeValueAsString(this);
- }
-
- public String toJsonStringSafe(LogicalPlanPersistence config){
- try{
- return toJsonString(config);
- }catch(JsonProcessingException e){
- logger.error("Failure while trying to get JSON representation of plan.", e);
- return "Unable to generate plan.";
- }
- }
-
- /** Parses a logical plan. */
- public static LogicalPlan parse(LogicalPlanPersistence config, String planString) {
- ObjectMapper mapper = config.getMapper();
- try {
- LogicalPlan plan = mapper.readValue(planString, LogicalPlan.class);
- return plan;
- } catch (IOException e) {
-
- throw new RuntimeException(String.format("Failure while parsing plan: \n %s}", planString), e);
- }
- }
-
- /** Converts a logical plan to a string. (Opposite of {@link #parse}.) */
- public String unparse(LogicalPlanPersistence config) {
- try {
- return config.getMapper().writeValueAsString(this);
- } catch (JsonProcessingException e) {
- throw new RuntimeException(e);
- }
- }
-
- public static LogicalPlanBuilder builder() {
- return new LogicalPlanBuilder();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/LogicalPlanBuilder.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/LogicalPlanBuilder.java b/common/src/main/java/org/apache/drill/common/logical/LogicalPlanBuilder.java
deleted file mode 100644
index 28f1402..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/LogicalPlanBuilder.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.apache.drill.common.logical;
-
-import org.apache.drill.common.logical.PlanProperties.Generator.ResultMode;
-import org.apache.drill.common.logical.PlanProperties.PlanType;
-import org.apache.drill.common.logical.data.LogicalOperator;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-
-/**
- * A programmatic builder for logical plans.
- */
-public class LogicalPlanBuilder {
- private PlanProperties planProperties;
- private ImmutableMap.Builder<String, StoragePluginConfig> storageEngines = ImmutableMap.builder();
- private ImmutableList.Builder<LogicalOperator> operators = ImmutableList.builder();
-
- public LogicalPlanBuilder planProperties(PlanProperties planProperties) {
- this.planProperties = planProperties;
- return this;
- }
-
- public LogicalPlanBuilder planProperties(PlanType type, int version, String generatorType, String generatorInfo, ResultMode mode){
- this.planProperties = PlanProperties.builder().generator(generatorType, generatorInfo).type(type).version(version).resultMode(mode).build();
- return this;
- }
-
- public LogicalPlanBuilder addStorageEngine(String name, StoragePluginConfig config) {
- this.storageEngines.put(name, config);
- return this;
- }
- public LogicalPlanBuilder addLogicalOperator(LogicalOperator operator) {
- this.operators.add(operator);
- return this;
- }
- public LogicalPlan build() {
- return new LogicalPlan(this.planProperties, this.storageEngines.build(), this.operators.build());
- }
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/PlanProperties.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/PlanProperties.java b/common/src/main/java/org/apache/drill/common/logical/PlanProperties.java
deleted file mode 100644
index ce9603e..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/PlanProperties.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.apache.drill.common.logical;
-
-import org.apache.drill.common.JSONOptions;
-import org.apache.drill.common.logical.PlanProperties.Generator.ResultMode;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/**
- * Logical plan meta properties.
- */
-public class PlanProperties {
- public static enum PlanType {APACHE_DRILL_LOGICAL, APACHE_DRILL_PHYSICAL}
-
- public PlanType type;
- public int version;
- public Generator generator;
- public ResultMode resultMode;
- public JSONOptions options;
- public int queue;
-
-// @JsonInclude(Include.NON_NULL)
- public static class Generator {
- public String type;
- public String info;
-
- public static enum ResultMode {
- EXEC, LOGICAL, PHYSICAL;
- }
-
- private Generator(@JsonProperty("type") String type, @JsonProperty("info") String info) {
- this.type = type;
- this.info = info;
- }
- }
-
- private PlanProperties(@JsonProperty("version") int version,
- @JsonProperty("generator") Generator generator,
- @JsonProperty("type") PlanType type,
- @JsonProperty("mode") ResultMode resultMode,
- @JsonProperty("options") JSONOptions options,
- @JsonProperty("queue") int queue
- ) {
- this.version = version;
- this.queue = queue;
- this.generator = generator;
- this.type = type;
- this.resultMode = resultMode == null ? ResultMode.EXEC : resultMode;
- this.options = options;
- }
-
- public static PlanPropertiesBuilder builder() {
- return new PlanPropertiesBuilder();
- }
-
- public static class PlanPropertiesBuilder {
- private int version;
- private Generator generator;
- private PlanType type;
- private ResultMode mode = ResultMode.EXEC;
- private JSONOptions options;
- private int queueNumber = 0;
-
- public PlanPropertiesBuilder type(PlanType type) {
- this.type = type;
- return this;
- }
-
- public PlanPropertiesBuilder version(int version) {
- this.version = version;
- return this;
- }
-
- public PlanPropertiesBuilder generator(String type, String info) {
- this.generator = new Generator(type, info);
- return this;
- }
-
- public PlanPropertiesBuilder resultMode(ResultMode mode) {
- this.mode = mode;
- return this;
- }
-
- public PlanPropertiesBuilder queue(int queueNumber) {
- this.queueNumber = queueNumber;
- return this;
- }
-
- public PlanPropertiesBuilder options(JSONOptions options) {
- this.options = options;
- return this;
- }
-
- public PlanPropertiesBuilder generator(Generator generator) {
- this.generator = generator;
- return this;
- }
-
- public PlanProperties build() {
- return new PlanProperties(version, generator, type, mode, options, queueNumber);
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/StoragePluginConfig.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/StoragePluginConfig.java b/common/src/main/java/org/apache/drill/common/logical/StoragePluginConfig.java
deleted file mode 100644
index a4a0f2b..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/StoragePluginConfig.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical;
-
-
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-
-
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property="type")
-public abstract class StoragePluginConfig{
-
- private boolean enabled = true;
-
- public boolean isEnabled() {
- return enabled;
- }
-
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
-
- @Override
- public abstract boolean equals(Object o);
-
- @Override
- public abstract int hashCode();
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/StoragePluginConfigBase.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/StoragePluginConfigBase.java b/common/src/main/java/org/apache/drill/common/logical/StoragePluginConfigBase.java
deleted file mode 100644
index 6075483..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/StoragePluginConfigBase.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical;
-
-import java.util.Set;
-
-import org.apache.drill.common.scanner.persistence.ScanResult;
-
-
-public abstract class StoragePluginConfigBase extends StoragePluginConfig {
- private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(StoragePluginConfigBase.class);
-
- public static Set<Class<? extends StoragePluginConfig>> getSubTypes(final ScanResult classpathScan) {
- final Set<Class<? extends StoragePluginConfig>> packages = classpathScan.getImplementations(StoragePluginConfig.class);
- logger.debug("Found {} logical operator classes: {}.", packages.size(), packages);
- return packages;
- }
-
- @Override
- public abstract boolean equals(Object o);
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/UnexpectedOperatorType.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/UnexpectedOperatorType.java b/common/src/main/java/org/apache/drill/common/logical/UnexpectedOperatorType.java
deleted file mode 100644
index ea3f4b2..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/UnexpectedOperatorType.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical;
-
-
-public class UnexpectedOperatorType extends ValidationError{
-
- public UnexpectedOperatorType(String message){
- super(message);
- }
-
- public UnexpectedOperatorType(Object operator, String message) {
- super(message + " Received node of type " + operator.getClass().getCanonicalName());
- }
-
-
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/ValidationError.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/ValidationError.java b/common/src/main/java/org/apache/drill/common/logical/ValidationError.java
deleted file mode 100644
index 54c9c82..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/ValidationError.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical;
-
-public class ValidationError extends RuntimeException{
-
- public ValidationError() {
- super();
- }
-
-
- public ValidationError(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
- super(message, cause, enableSuppression, writableStackTrace);
- }
-
- public ValidationError(String message, Throwable cause) {
- super(message, cause);
- }
-
- public ValidationError(String message) {
- super(message);
- }
-
- public ValidationError(Throwable cause) {
- super(cause);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/data/AbstractBuilder.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/data/AbstractBuilder.java b/common/src/main/java/org/apache/drill/common/logical/data/AbstractBuilder.java
deleted file mode 100644
index b178cd9..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/data/AbstractBuilder.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical.data;
-
-import java.util.List;
-
-import org.apache.drill.common.expression.FieldReference;
-import org.apache.drill.common.expression.LogicalExpression;
-
-public abstract class AbstractBuilder<T extends LogicalOperator> {
- static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(AbstractBuilder.class);
-
- public abstract T build();
-
- protected LogicalExpression[] aL(List<LogicalExpression> exprs){
- return exprs.toArray(new LogicalExpression[exprs.size()]);
- }
-
- protected FieldReference[] aF(List<FieldReference> exprs){
- return exprs.toArray(new FieldReference[exprs.size()]);
- }
-
- protected NamedExpression[] aN(List<NamedExpression> exprs){
- return exprs.toArray(new NamedExpression[exprs.size()]);
- }
-
- protected Order.Ordering[] aO(List<Order.Ordering> orderings) {
- return orderings.toArray(new Order.Ordering[orderings.size()]);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/data/AbstractSingleBuilder.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/data/AbstractSingleBuilder.java b/common/src/main/java/org/apache/drill/common/logical/data/AbstractSingleBuilder.java
deleted file mode 100644
index 3ed947e..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/data/AbstractSingleBuilder.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical.data;
-
-import com.google.common.base.Preconditions;
-
-public abstract class AbstractSingleBuilder<T extends SingleInputOperator, X extends AbstractSingleBuilder<T, X>> extends AbstractBuilder<T> {
- static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(AbstractSingleBuilder.class);
-
- private LogicalOperator input;
-
- @Override
- public final T build(){
- Preconditions.checkNotNull(input);
- T out = internalBuild();
- out.setInput(input);
- return out;
- }
-
- public X setInput(LogicalOperator input){
- this.input = input;
- return (X) this;
- }
-
- public abstract T internalBuild();
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/data/Filter.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/data/Filter.java b/common/src/main/java/org/apache/drill/common/logical/data/Filter.java
deleted file mode 100644
index 02737f8..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/data/Filter.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical.data;
-
-import java.util.Iterator;
-
-import org.apache.drill.common.expression.LogicalExpression;
-import org.apache.drill.common.logical.data.visitors.LogicalVisitor;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
-import com.google.common.collect.Iterators;
-
-@JsonTypeName("filter")
-public class Filter extends SingleInputOperator {
- private final LogicalExpression expr;
-
- @JsonCreator
- public Filter(@JsonProperty("expr") LogicalExpression expr) {
- this.expr = expr;
- }
-
- public LogicalExpression getExpr() {
- return expr;
- }
-
- @Override
- public <T, X, E extends Throwable> T accept(LogicalVisitor<T, X, E> logicalVisitor, X value) throws E {
- return logicalVisitor.visitFilter(this, value);
- }
-
- @Override
- public Iterator<LogicalOperator> iterator() {
- return Iterators.singletonIterator(getInput());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/data/Flatten.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/data/Flatten.java b/common/src/main/java/org/apache/drill/common/logical/data/Flatten.java
deleted file mode 100644
index 803a4b3..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/data/Flatten.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical.data;
-
-import java.util.Iterator;
-
-import org.apache.drill.common.expression.FieldReference;
-import org.apache.drill.common.expression.LogicalExpression;
-import org.apache.drill.common.logical.data.visitors.LogicalVisitor;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
-import com.google.common.collect.Iterators;
-
-@JsonTypeName("flatten")
-public class Flatten extends SingleInputOperator {
- private final FieldReference name;
- private final LogicalExpression expr;
- private final boolean drop;
-
- @JsonCreator
- public Flatten(@JsonProperty("name") FieldReference name, @JsonProperty("expr") LogicalExpression expr,
- @JsonProperty("drop") boolean drop) {
- this.name = name;
- this.expr = expr;
- this.drop = drop;
- }
-
- public FieldReference getName() {
- return name;
- }
-
- public LogicalExpression getExpr() {
- return expr;
- }
-
- public boolean isDrop() {
- return drop;
- }
-
- @Override
- public <T, X, E extends Throwable> T accept(LogicalVisitor<T, X, E> logicalVisitor, X value) throws E {
- return logicalVisitor.visitFlatten(this, value);
- }
-
- @Override
- public Iterator<LogicalOperator> iterator() {
- return Iterators.singletonIterator(getInput());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/data/GroupingAggregate.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/data/GroupingAggregate.java b/common/src/main/java/org/apache/drill/common/logical/data/GroupingAggregate.java
deleted file mode 100644
index 2913a7e..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/data/GroupingAggregate.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical.data;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.drill.common.expression.FieldReference;
-import org.apache.drill.common.expression.LogicalExpression;
-import org.apache.drill.common.logical.data.visitors.LogicalVisitor;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
-import com.google.common.collect.Iterators;
-import com.google.common.collect.Lists;
-
-@JsonTypeName("groupingaggregate")
-public class GroupingAggregate extends SingleInputOperator{
- static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(GroupingAggregate.class);
-
- private final NamedExpression[] keys;
- private final NamedExpression[] exprs;
-
- public GroupingAggregate(@JsonProperty("keys") NamedExpression[] keys, @JsonProperty("exprs") NamedExpression[] exprs) {
- super();
- this.keys = keys;
- this.exprs = exprs;
- }
-
- @Override
- public <T, X, E extends Throwable> T accept(LogicalVisitor<T, X, E> logicalVisitor, X value) throws E {
- return logicalVisitor.visitGroupingAggregate(this, value);
- }
-
- @Override
- public Iterator<LogicalOperator> iterator() {
- return Iterators.singletonIterator(getInput());
- }
-
- public static Builder builder(){
- return new Builder();
- }
-
- public NamedExpression[] getKeys(){
- return keys;
- }
-
- public NamedExpression[] getExprs(){
- return exprs;
- }
-
- public static class Builder extends AbstractSingleBuilder<GroupingAggregate, Builder>{
- private List<NamedExpression> keys = Lists.newArrayList();
- private List<NamedExpression> exprs = Lists.newArrayList();
-
- public Builder addKey(FieldReference ref, LogicalExpression expr){
- keys.add(new NamedExpression(expr, ref));
- return this;
- }
-
- public Builder addKey(NamedExpression expr){
- keys.add(expr);
- return this;
- }
-
- public Builder addExpr(NamedExpression expr){
- exprs.add(expr);
- return this;
- }
-
- public Builder addExpr(FieldReference ref, LogicalExpression expr){
- exprs.add(new NamedExpression(expr, ref));
- return this;
- }
-
- @Override
- public GroupingAggregate internalBuild(){
- GroupingAggregate ga = new GroupingAggregate(aN(keys), aN(exprs));
- return ga;
- }
-
- }
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/44dea433/common/src/main/java/org/apache/drill/common/logical/data/Join.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/logical/data/Join.java b/common/src/main/java/org/apache/drill/common/logical/data/Join.java
deleted file mode 100644
index 2d7e6e1..0000000
--- a/common/src/main/java/org/apache/drill/common/logical/data/Join.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.common.logical.data;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.drill.common.exceptions.ExpressionParsingException;
-import org.apache.drill.common.expression.LogicalExpression;
-import org.apache.drill.common.logical.data.visitors.LogicalVisitor;
-import org.apache.calcite.rel.core.JoinRelType;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Iterators;
-import com.google.common.collect.Lists;
-
-@JsonTypeName("join")
-public class Join extends LogicalOperatorBase {
- private final LogicalOperator left;
- private final LogicalOperator right;
- private final JoinRelType type;
- private final JoinCondition[] conditions;
-
- public static JoinRelType resolve(String val) {
- for (JoinRelType jt : JoinRelType.values()) {
- if (jt.name().equalsIgnoreCase(val)) {
- return jt;
- }
- }
- throw new ExpressionParsingException(String.format("Unable to determine join type for value '%s'.", val));
- }
-
- @JsonCreator
- public Join(@JsonProperty("left") LogicalOperator left, @JsonProperty("right") LogicalOperator right,
- @JsonProperty("conditions") JoinCondition[] conditions, @JsonProperty("type") String type) {
- this(left, right, conditions, resolve(type));
- }
-
- @JsonCreator
- public Join(@JsonProperty("left") LogicalOperator left, @JsonProperty("right") LogicalOperator right, @JsonProperty("conditions")JoinCondition[] conditions, @JsonProperty("type") JoinRelType type) {
- super();
- this.conditions = conditions;
- this.left = left;
- this.right = right;
- left.registerAsSubscriber(this);
- right.registerAsSubscriber(this);
- this.type = type;
-
- }
-
- public LogicalOperator getLeft() {
- return left;
- }
-
- public LogicalOperator getRight() {
- return right;
- }
-
- public JoinCondition[] getConditions() {
- return conditions;
- }
-
- @JsonIgnore
- public JoinRelType getJoinType() {
- return type;
- }
-
- public String getType() {
- return type.name();
- }
-
- @Override
- public <T, X, E extends Throwable> T accept(LogicalVisitor<T, X, E> logicalVisitor, X value) throws E {
- return logicalVisitor.visitJoin(this, value);
- }
-
- @Override
- public Iterator<LogicalOperator> iterator() {
- return Iterators.forArray(getLeft(), getRight());
- }
-
- public static Builder builder() {
- return new Builder();
- }
-
- public static class Builder extends AbstractBuilder<Join>{
- private LogicalOperator left;
- private LogicalOperator right;
- private JoinRelType type;
- private List<JoinCondition> conditions = Lists.newArrayList();
-
- public Builder type(JoinRelType type) {
- this.type = type;
- return this;
- }
-
- public Builder left(LogicalOperator left) {
- this.left = left;
- return this;
- }
- public Builder right(LogicalOperator right) {
- this.right = right;
- return this;
- }
-
- public Builder addCondition(String relationship, LogicalExpression left, LogicalExpression right) {
- conditions.add(new JoinCondition(relationship, left, right));
- return this;
- }
-
- @Override
- public Join build() {
- Preconditions.checkNotNull(left);
- Preconditions.checkNotNull(right);
- Preconditions.checkNotNull(type);
- return new Join(left, right, conditions.toArray(new JoinCondition[conditions.size()]), type);
- }
-
- }
-
-}