You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by td...@apache.org on 2012/12/02 00:47:45 UTC

[7/7] Initial work on logical plan parser and expressions

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/SingleInputOperator.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/SingleInputOperator.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/SingleInputOperator.java
new file mode 100644
index 0000000..3657622
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/SingleInputOperator.java
@@ -0,0 +1,17 @@
+package org.apache.drill.common.logical.data;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * SimpleOperator is an operator that has one inputs at most.
+ */
+public abstract class SingleInputOperator extends LogicalOperatorBase{
+
+  public LogicalOperator input;
+  
+  @JsonProperty
+  public void setInput(LogicalOperator input){
+    this.input = input;
+    input.registerAsSubscriber(this);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/Transform.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/Transform.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/Transform.java
new file mode 100644
index 0000000..84a4d8c
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/Transform.java
@@ -0,0 +1,19 @@
+package org.apache.drill.common.logical.data;
+
+import java.util.List;
+
+import org.apache.drill.common.expression.LogicalExpression;
+
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+@JsonTypeName("transform")
+public class Transform extends SingleInputOperator{
+  
+	public List<Transformation> transforms;
+	
+	public static class Transformation{
+		public String name;
+		public LogicalExpression expr;
+		
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/Union.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/Union.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/Union.java
new file mode 100644
index 0000000..f1462fd
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/Union.java
@@ -0,0 +1,9 @@
+package org.apache.drill.common.logical.data;
+
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+@JsonTypeName("union")
+public class Union extends LogicalOperatorBase{
+	public int[] inputs;
+	public boolean dedupe;
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/ZeroInputOperator.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/ZeroInputOperator.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/ZeroInputOperator.java
new file mode 100644
index 0000000..9678a52
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/data/ZeroInputOperator.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.logical.data;
+
+public abstract class ZeroInputOperator extends LogicalOperatorBase{
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/DataSource.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/DataSource.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/DataSource.java
new file mode 100644
index 0000000..680e9ec
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/DataSource.java
@@ -0,0 +1,12 @@
+package org.apache.drill.common.logical.sources;
+
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property="type")
+public interface DataSource {
+	
+	public static final Class<?>[] SUB_TYPES = {Text.class, Mongo.class, Mysql.class};
+	
+	public String getName();
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/DataSourceBase.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/DataSourceBase.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/DataSourceBase.java
new file mode 100644
index 0000000..3004549
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/DataSourceBase.java
@@ -0,0 +1,12 @@
+package org.apache.drill.common.logical.sources;
+
+
+public abstract class DataSourceBase implements DataSource{
+	public String name;
+
+	public String getName() {
+		return name;
+	}
+	
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/Mongo.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/Mongo.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/Mongo.java
new file mode 100644
index 0000000..7c60ee3
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/Mongo.java
@@ -0,0 +1,8 @@
+package org.apache.drill.common.logical.sources;
+
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+@JsonTypeName("mongo")
+public class Mongo extends DataSourceBase{
+	public String connection;
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/Mysql.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/Mysql.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/Mysql.java
new file mode 100644
index 0000000..a43a335
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/Mysql.java
@@ -0,0 +1,8 @@
+package org.apache.drill.common.logical.sources;
+
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+@JsonTypeName("mysql")
+public class Mysql extends DataSourceBase{
+	public String connection;
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/Text.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/Text.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/Text.java
new file mode 100644
index 0000000..33b9c0b
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/Text.java
@@ -0,0 +1,16 @@
+package org.apache.drill.common.logical.sources;
+
+import java.util.List;
+
+import org.apache.drill.common.logical.sources.record.RecordMaker;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+@JsonTypeName("text")
+public class Text extends DataSourceBase{
+	public List<String> files;
+	@JsonProperty("compress") public String compressionType;
+	@JsonProperty("line-delimiter") public String lineDelimiter;
+	@JsonProperty("record-maker") public RecordMaker recordMaker;
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/record/FirstRowMaker.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/record/FirstRowMaker.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/record/FirstRowMaker.java
new file mode 100644
index 0000000..416309f
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/record/FirstRowMaker.java
@@ -0,0 +1,8 @@
+package org.apache.drill.common.logical.sources.record;
+
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+@JsonTypeName("first-row")
+public class FirstRowMaker extends RecordMakerBase{
+	public String delimiter;
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/record/RecordMaker.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/record/RecordMaker.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/record/RecordMaker.java
new file mode 100644
index 0000000..6b4899b
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/record/RecordMaker.java
@@ -0,0 +1,9 @@
+package org.apache.drill.common.logical.sources.record;
+
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
+public interface RecordMaker {
+	
+	public static final Class<?>[] SUB_TYPES = { FirstRowMaker.class };
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/record/RecordMakerBase.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/record/RecordMakerBase.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/record/RecordMakerBase.java
new file mode 100644
index 0000000..ffbe211
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/logical/sources/record/RecordMakerBase.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.logical.sources.record;
+
+public abstract class RecordMakerBase implements RecordMaker{
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/Partitioner.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/Partitioner.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/Partitioner.java
new file mode 100644
index 0000000..fa4d2c6
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/Partitioner.java
@@ -0,0 +1,6 @@
+package org.apache.drill.common.physical;
+
+public interface Partitioner {
+	public int getPartition();
+	public int getPartitionCount();
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/PhysicalOperator.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/PhysicalOperator.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/PhysicalOperator.java
new file mode 100644
index 0000000..6dc3dcb
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/PhysicalOperator.java
@@ -0,0 +1,25 @@
+package org.apache.drill.common.physical;
+
+
+public class PhysicalOperator {
+	
+	public static enum IteratorOutcome{
+		OK, NONE, CANCEL;
+	}
+	
+	private StreamSource[] sources;
+	private StreamSink[] sinks;
+	private Partitioner partitioner;
+	
+	public void setup(){
+		
+	}
+	
+	public IteratorOutcome getNext(){
+		return IteratorOutcome.CANCEL;
+	}
+	
+	public void teardown(){
+		
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/PhysicalPlan.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/PhysicalPlan.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/PhysicalPlan.java
new file mode 100644
index 0000000..aa20852
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/PhysicalPlan.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical;
+
+public class PhysicalPlan {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RowBatchReceiverSource.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RowBatchReceiverSource.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RowBatchReceiverSource.java
new file mode 100644
index 0000000..065fc42
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RowBatchReceiverSource.java
@@ -0,0 +1,6 @@
+package org.apache.drill.common.physical;
+
+
+public class RowBatchReceiverSource implements StreamSource {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RowBatchSenderSink.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RowBatchSenderSink.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RowBatchSenderSink.java
new file mode 100644
index 0000000..02b7c29
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RowBatchSenderSink.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical;
+
+public class RowBatchSenderSink {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/StreamSink.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/StreamSink.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/StreamSink.java
new file mode 100644
index 0000000..d6824c5
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/StreamSink.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical;
+
+public interface StreamSink {
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/StreamSource.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/StreamSource.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/StreamSource.java
new file mode 100644
index 0000000..f41a29b
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/StreamSource.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical;
+
+public interface StreamSource {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Dump.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Dump.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Dump.java
new file mode 100644
index 0000000..698c0d2
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Dump.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical.operators;
+
+public class Dump {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/HashAggregate.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/HashAggregate.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/HashAggregate.java
new file mode 100644
index 0000000..ad7e936
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/HashAggregate.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical.operators;
+
+public class HashAggregate {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/HashJoin.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/HashJoin.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/HashJoin.java
new file mode 100644
index 0000000..a70d35b
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/HashJoin.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical.operators;
+
+public class HashJoin {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Limit.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Limit.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Limit.java
new file mode 100644
index 0000000..92f86cb
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Limit.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical.operators;
+
+public class Limit {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/MergeJoin.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/MergeJoin.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/MergeJoin.java
new file mode 100644
index 0000000..c59d5c0
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/MergeJoin.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical.operators;
+
+public class MergeJoin {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/RowRotate.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/RowRotate.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/RowRotate.java
new file mode 100644
index 0000000..e684d24
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/RowRotate.java
@@ -0,0 +1,12 @@
+package org.apache.drill.common.physical.operators;
+
+/**
+ * This operator is responsible for rotating a set of values from columns to a
+ * collection of rows. This allows etremely wide rows to be into multipe rows.
+ * 
+ * @author jnadeau
+ * 
+ */
+public class RowRotate {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Scan.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Scan.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Scan.java
new file mode 100644
index 0000000..82a5941
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Scan.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical.operators;
+
+public class Scan {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Sort.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Sort.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Sort.java
new file mode 100644
index 0000000..20a92f7
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Sort.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical.operators;
+
+public class Sort {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Store.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Store.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Store.java
new file mode 100644
index 0000000..62d5af6
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Store.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical.operators;
+
+public class Store {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/StreamingAggregate.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/StreamingAggregate.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/StreamingAggregate.java
new file mode 100644
index 0000000..a80b1d3
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/StreamingAggregate.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical.operators;
+
+public class StreamingAggregate {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/StreamingSort.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/StreamingSort.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/StreamingSort.java
new file mode 100644
index 0000000..ab04be6
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/StreamingSort.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical.operators;
+
+public class StreamingSort {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Union.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Union.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Union.java
new file mode 100644
index 0000000..11b0fee
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/operators/Union.java
@@ -0,0 +1,5 @@
+package org.apache.drill.common.physical.operators;
+
+public class Union {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/FieldSchema.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/FieldSchema.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/FieldSchema.java
new file mode 100644
index 0000000..f03d0a8
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/FieldSchema.java
@@ -0,0 +1,30 @@
+package org.apache.drill.common.storage;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Holds the schema of the incoming data.  Each row batch carries a particular schema.  In the case of a mid row batch schema change, the provided schema is a union of the found schemas.  As the schema changes between row batches, the schema id increments.  New schemas should be provided the first time their schema is changed.  Each scanner is provided with a unique schema shift.  When multiple scanner data is merged, so are the schemas.
+ * @author jnadeau
+ *
+ */
+public class FieldSchema {
+
+	/**
+	 * Stores the set of provided schemas.  Is in a protobuf binary format.  Each object is:
+	 *   parentField: int32
+	 *   format: value type
+	 *   name: string 
+	 *   
+	 */
+	private ByteBuffer schemaHolder;
+	private int currentSchemaPosition;
+	private long currentSchemaId;
+	
+	public void mergeSchema(FieldSchema schema){
+		
+	}
+	
+	public static FieldSchema generateMerged(FieldSchema...schemas){
+		return null;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ReaderCapabilities.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ReaderCapabilities.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ReaderCapabilities.java
new file mode 100644
index 0000000..4921995
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ReaderCapabilities.java
@@ -0,0 +1,6 @@
+package org.apache.drill.common.storage;
+
+public class ReaderCapabilities {
+	public boolean supportsIndexBasedFieldReading;
+	public boolean supportsNestedData;
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/StorageEngine.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/StorageEngine.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/StorageEngine.java
new file mode 100644
index 0000000..1f78e11
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/StorageEngine.java
@@ -0,0 +1,6 @@
+package org.apache.drill.common.storage;
+
+public interface StorageEngine {
+	public ReaderCapabilities getReaderCapabilities();
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/StorageReader.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/StorageReader.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/StorageReader.java
new file mode 100644
index 0000000..39207e1
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/StorageReader.java
@@ -0,0 +1,25 @@
+package org.apache.drill.common.storage;
+
+import java.nio.ByteBuffer;
+import java.nio.IntBuffer;
+
+public interface StorageReader {
+
+		public static enum Outcome {
+			NO_MORE_DATA, AT_TREE_BOUNDARY, WITHIN_TREE, FATAL_ERROR
+		}
+		
+		
+		
+		
+		/**
+		 * 
+		 * @param dataBuffer
+		 * @param positionBuffer
+		 * @return
+		 */
+		public abstract Outcome getMoreData(ByteBuffer dataBuffer, IntBuffer positionBuffer);
+		
+		
+		public abstract void registerByFieldOrdinal(int ordinal, Object fieldHandler);		
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/TreeHolder.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/TreeHolder.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/TreeHolder.java
new file mode 100644
index 0000000..a23cdd8
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/TreeHolder.java
@@ -0,0 +1,12 @@
+package org.apache.drill.common.storage;
+
+/**
+ * Holds all 
+ * @author jnadeau
+ *
+ */
+public class TreeHolder {
+	private boolean isComplete;
+	
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ValueCapturer.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ValueCapturer.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ValueCapturer.java
new file mode 100644
index 0000000..353f52b
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ValueCapturer.java
@@ -0,0 +1,25 @@
+package org.apache.drill.common.storage;
+
+public class ValueCapturer {
+	
+	
+	/** 
+	 * Capture the value of a field.  This is used when the fieldId is already known.
+	 * @param fieldId
+	 * @param value
+	 */
+	public void capture(int fieldId, ValueHolder value){
+		
+	}
+	
+	/**
+	 * Capture the value of a previously unknown field.  This is used when
+	 * @param fieldParent
+	 * @param fieldName
+	 * @param value
+	 * @return
+	 */
+	public int capture(int fieldParent, String fieldName, ValueHolder value){
+		return -1;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ValueHolder.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ValueHolder.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ValueHolder.java
new file mode 100644
index 0000000..6b1da28
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ValueHolder.java
@@ -0,0 +1,17 @@
+package org.apache.drill.common.storage;
+
+import java.nio.ByteBuffer;
+
+
+public class ValueHolder {
+	private int fieldId;
+	private int valueLength;
+	private int startIndex;
+	private ByteBuffer buffer;
+
+	public void setValue(int fieldId, ByteBuffer buffer, int startIndex, int valueLength){
+		this.fieldId = fieldId;
+		this.valueLength = valueLength;
+		this.startIndex = startIndex;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ValueModifier.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ValueModifier.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ValueModifier.java
new file mode 100644
index 0000000..5d5d4a3
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/storage/ValueModifier.java
@@ -0,0 +1,6 @@
+package org.apache.drill.common.storage;
+
+
+public interface ValueModifier {
+    public boolean modifyValue(ValueHolder value);
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/test/java/org/apache/drill/ExpressionTest.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/java/org/apache/drill/ExpressionTest.java b/sandbox/prototype/common/src/test/java/org/apache/drill/ExpressionTest.java
new file mode 100644
index 0000000..d0ce6fb
--- /dev/null
+++ b/sandbox/prototype/common/src/test/java/org/apache/drill/ExpressionTest.java
@@ -0,0 +1,14 @@
+package org.apache.drill;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class ExpressionTest {
+  
+  @Test
+  public void do1(){
+    assertTrue(true);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/test/java/org/apache/drill/common/expression/parser/TreeTest.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/java/org/apache/drill/common/expression/parser/TreeTest.java b/sandbox/prototype/common/src/test/java/org/apache/drill/common/expression/parser/TreeTest.java
new file mode 100644
index 0000000..a297e13
--- /dev/null
+++ b/sandbox/prototype/common/src/test/java/org/apache/drill/common/expression/parser/TreeTest.java
@@ -0,0 +1,45 @@
+package org.apache.drill.common.expression.parser;
+
+import java.io.File;
+
+import org.antlr.runtime.ANTLRStringStream;
+import org.antlr.runtime.CommonTokenStream;
+import org.antlr.runtime.tree.CommonTree;
+import org.antlr.runtime.tree.DOTTreeGenerator;
+import org.antlr.stringtemplate.StringTemplate;
+import org.apache.drill.common.expression.LogicalExpression;
+import org.apache.drill.common.expression.parser.ExprParser.parse_return;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.google.common.base.Charsets;
+import com.google.common.io.Files;
+
+public class TreeTest {
+  public static void main(String[] args) throws Exception {
+
+    ExprLexer lexer = new ExprLexer(
+        new ANTLRStringStream(
+            "if ('blue.red') then case when 1 then 2 else 4 end else if(4==3) then 1 else if(x==3) then 7 else (if(2==1) then 6 else 4 end) end"));
+    // ExprLexer lexer = new ExprLexer(new
+    // ANTLRStringStream("if ('blue.red') then 'orange' else if (false) then 1 else 0 end"));
+    // ExprLexer lexer = new ExprLexer(new ANTLRStringStream("2+2"));
+
+    CommonTokenStream tokens = new CommonTokenStream(lexer);
+
+    ExprParser parser = new ExprParser(tokens);
+    parse_return ret = parser.parse();
+    LogicalExpression e = ret.e;
+    ObjectMapper mapper = new ObjectMapper();
+    mapper.enable(SerializationFeature.INDENT_OUTPUT);
+    System.out.println(mapper.writeValueAsString(e));
+
+    // print the tree
+    CommonTree tree = (CommonTree) ret.getTree();
+    DOTTreeGenerator gen = new DOTTreeGenerator();
+    StringTemplate st = gen.toDOT(tree);
+
+    Files.write(st.toString(), new File("/Users/jnadeau/Documents/tree.dot"), Charsets.UTF_8);
+
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/test/resources/example1.sql
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/resources/example1.sql b/sandbox/prototype/common/src/test/resources/example1.sql
new file mode 100644
index 0000000..189fdad
--- /dev/null
+++ b/sandbox/prototype/common/src/test/resources/example1.sql
@@ -0,0 +1,61 @@
+
+// data: row per event, each row includes a user value and a day value.
+
+select 'day', count(distinct 'user') as cnt from events, group by day ;
+
+/* Logical Plan
+scan data 
+	group by day{
+		group by user{
+		}combine as user
+		transform 1 as userCnt
+		aggregate sum(userCnt) as cnt
+	}combine as day
+project day, cnt
+
+*/
+
+
+/* Physical Plan (simple)
+scan day, user
+hash_aggregate(day+user, 1 as cnt1)
+hash_aggregate(day, sum(cnt1) as cnt)
+*/
+
+
+/* Physical Plan (distributed-small)
+scan day, user
+streaming_aggregate(day+user, 1 as ignore, partition(day+user) )
+exchange()
+hash_aggregate(day+user, 1 as cnt1)
+streaming_aggregate(day, sum(cnt))
+exchange()
+hash_aggregate(day, sum(cnt))
+union_all()
+*/
+
+
+/* Physical Plan (distributed-large)
+scan day, user
+streaming_aggregate(day+user, 1 as ignore, partition(day+user) )
+exchange()
+hash_aggregate(day+user, 1 as cnt1)
+streaming_aggregate(day, sum(cnt), partition(day))
+exchange()
+hash_aggregate(day, sum(cnt))
+exchange()
+union_all()
+*/
+
+
+/* Physical Plan (distributed-large-rack-aware)
+scan day, user
+streaming_aggregate(day+user, 1 as ignore, rack-partition(day), partition(user))
+exchange()
+hash_aggregate(user, 1 as cnt1)
+streaming_aggregate(day, sum(cnt), partition(day))
+exchange()
+hash_aggregate(day, sum(cnt))
+exchange()
+union_all()
+*/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/test/resources/example2.sql
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/resources/example2.sql b/sandbox/prototype/common/src/test/resources/example2.sql
new file mode 100644
index 0000000..6a316ef
--- /dev/null
+++ b/sandbox/prototype/common/src/test/resources/example2.sql
@@ -0,0 +1,55 @@
+// give me all users who have an out of state phone number.
+
+
+SELECT c.id, FLATTEN( LEFT(c.number, 3)) AS prefix 
+	FROM contacts c
+	JOIN areacodes a ON c.state != a.state AND c.prefix == a.prefix
+	GROUP BY c.id, c.state, count(1) as prefixCount
+	ORDER by c.id, c.state;
+
+	
+	
+	
+/*Logical
+ * 
+
+scan contacts c
+	explode(c.number){
+	transform( left(c.number, 3), prefix)
+	}flatten(prefix)
+scan areacodes a
+join a,c, (c.state != a.state && c.prefix == a.prefix)
+group c.id, c.state{{
+		aggregate(count(1) as prefixCount)
+		}combine(c.state)
+	}combine(c.id)
+order(c.id, c.state)
+	
+	
+*/
+	
+/* 
+  
+  
+//Physical Simple 
+scan areacodes a, a.prefix, a.state
+scan contacts c, c.id, c.number
+materialize( LEFT(c.number, 3) as prefix)
+loop_join a,c on {conditions}
+hash_aggregate(c.id+c.state, count(1))
+
+
+// Physical distributed		
+scan areacodes a, a.prefix, a.state
+scan contacts c, c.id, c.number
+materialize( LEFT(c.number, 3) as prefix)
+partition(a, a.prefix)
+partition(c, c.prefix)
+loop_join
+	
+	
+/* Physical Plan (simple)
+scan day, user
+hash_aggregate(day+user, 1 as cnt1)
+hash_aggregate(day, sum(cnt1) as cnt)
+*/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/test/resources/example3.sql
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/resources/example3.sql b/sandbox/prototype/common/src/test/resources/example3.sql
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/test/resources/logical_plan1.json
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/resources/logical_plan1.json b/sandbox/prototype/common/src/test/resources/logical_plan1.json
new file mode 100644
index 0000000..2d1de3d
--- /dev/null
+++ b/sandbox/prototype/common/src/test/resources/logical_plan1.json
@@ -0,0 +1,139 @@
+{
+	head: {
+	    type: "apache_drill_logical_plan",
+		version: "1",
+		generator: {
+		  type: "manual",
+		  info: "na"
+		}
+		
+	},
+
+
+	sources: [
+	  {
+  		type: "text",
+  		name: "local-logs",
+	    files: ["local://logs/*.log"],
+	    compress: "gzip",
+	    line-delimiter: "\n",
+	    record-maker: {type: "first-row", delimiter: ","}
+	  },
+	  {
+	    type: "mongo",
+	  	name: "users",
+	    connection: "mongodb://blue:red@localhost/users"
+	  },
+	  {
+	    type: "mysql",
+	    name: "mysql",
+	    connection: "jdbc:mysql://localhost/main"
+	  }
+	  
+	],
+
+	
+	query: [
+
+	  {
+		  @id: "log",
+		  op: "sequence",
+		  do: [
+		 	  {
+				  op: "scan",
+				  source: "local-logs",
+				  name: "activity"
+			  },
+			  { 
+				  op: "transform",
+				  transforms: [
+				    {
+				    	name: "userId", 
+				    	expr: "regex('activity.cookie', \"persistent=([^;]*)\")"
+				    },
+				        
+				    {
+				    	name: "session", 
+				    	expr: "regex('activity.cookie', \"persistent=([^;]*)\")"
+				    }
+				  ]
+			  },
+			  {
+					op: "group",
+				    exprs: [ "sessionId", "session" ]
+			  },
+			  {
+			    op: "order",
+			    orders: [
+			      { direction: "desc", expr: "timestamp" }
+			    ]
+			  },
+			  { 
+			    op: "transform",
+			    transforms: [{name: "productId", expr: "session" }]
+			  },
+			  { 
+			    op: "filter",
+			    expr: "isNull(productId) && startsWith(path, \"/cart/add\")"
+			  },
+			  { op: "aggregate",
+				
+		      }
+			  { 
+			    op: "group",
+			    exprs: ["productId"]
+			  },
+			  { 
+			    op: "combine",
+			    name: "productId"
+		      }, 
+			  { 
+			    op: "nest",
+			    name: "sessions",
+			    exprs: ["productId"]
+			  },		     
+			  { 
+			    op: "nest",
+			    name: "user"
+			  },
+		  ]
+	  },
+ 	  {
+		  @id: "users",
+		  op: "scan",
+		  source: "mongo",
+		  table: "users",
+		  name: "users"
+ 	  },
+		  { 
+ 		    @id: "transactions",
+		    op: "scan",
+		    source: "mysql",
+		    name: "transactions",
+		    table: "purchases"
+		  },	
+	 
+	  {
+	    @id: "usersAndTransactions",
+	    op: "join",
+	    left: "transactions",
+	    right: "users",
+	    conditions: [{left-expr: "userId", right-expr: "id", relationship: "equal"}]
+	  },
+	  { 
+		@id: "allData"
+	    op: "join",
+	    left: "usersAndTransactions",
+	    right: "log",
+	    conditions: [{left-expr: "userId", right-expr: "id", relationship: "equal"}]
+	  },
+	  {
+	    op: "project",
+	    input: "7",
+	    exprs: []
+	  }
+	]
+	
+	
+	
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/common/src/test/resources/simple_plan.json
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/resources/simple_plan.json b/sandbox/prototype/common/src/test/resources/simple_plan.json
new file mode 100644
index 0000000..a7678d3
--- /dev/null
+++ b/sandbox/prototype/common/src/test/resources/simple_plan.json
@@ -0,0 +1,113 @@
+{
+  head:{
+    type:"apache_drill_logical_plan",
+    version:"1",
+    generator:{
+      type:"manual",
+      info:"na"
+    }
+    
+  },
+  sources:[
+    {
+      type:"text",
+      name:"local-logs",
+      files:[
+        "local://logs/*.log"
+      ],
+      compress:"gzip",
+      line-delimiter:"\n",
+      record-maker:{
+        type:"first-row",
+        delimiter:","
+      }
+      
+    },
+    {
+      type:"mongo",
+      name:"users",
+      connection:"mongodb://blue:red@localhost/users"
+    },
+    {
+      type:"mysql",
+      name:"mysql",
+      connection:"jdbc:mysql://localhost/main"
+    }
+    
+  ],
+  query:[
+    {
+      @id:"1",
+      op:"scan",
+      source:"local-logs",
+      name:"activity"
+    },
+    {
+      @id:"2",
+      input:"1",
+      op:"transform",
+      transforms:[
+        {
+          name:"userId",
+          expr:"regex('activity.cookie', \"persistent=([^;]*)\")"
+        },
+        {
+          name:"session",
+          expr:"regex('activity.cookie', \"session=([^;]*)\")"
+        }
+        
+      ]
+      
+    },
+    {
+      @id:"3",
+      input:"2",
+      op:"transform",
+      transforms:[
+        {
+          name:"userId",
+          expr:"regex('activity.cookie', \"persistent=([^;]*)\")"
+        },
+        {
+          name:"session",
+          expr:"regex('activity.cookie', \"session=([^;]*)\")"
+        }
+        
+      ]
+      
+    },
+    {
+      input:"3",
+      op:"sequence",
+      do:[
+        {
+          op:"transform",
+          transforms:[
+            {
+              name:"happy",
+              expr:"regex('ep2', \"dink\")"
+            }
+            
+          ]
+          
+        }
+        ,
+        {
+          op:"transform",
+          transforms:[
+            {
+              name:"abc",
+              expr:"2"
+            }
+            
+          ]
+          
+        }
+        
+      ]
+      
+    }
+    
+  ]
+  
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/contrib/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/prototype/contrib/pom.xml b/sandbox/prototype/contrib/pom.xml
new file mode 100644
index 0000000..2c55257
--- /dev/null
+++ b/sandbox/prototype/contrib/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>prototype-parent</artifactId>
+    <groupId>org.apache.drill</groupId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+    <groupId>org.apache.drill.contrib</groupId>
+  <artifactId>contrib-parent</artifactId>
+  <packaging>pom</packaging>
+  <url>http://maven.apache.org</url>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <modules>
+    <module>storage-hbase</module>
+  </modules>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/contrib/storage-hbase/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/prototype/contrib/storage-hbase/pom.xml b/sandbox/prototype/contrib/storage-hbase/pom.xml
new file mode 100644
index 0000000..a595008
--- /dev/null
+++ b/sandbox/prototype/contrib/storage-hbase/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>contrib-parent</artifactId>
+    <groupId>org.apache.drill.contrib</groupId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>storage-hbase</artifactId>
+  <name>pom</name>
+  <url>http://maven.apache.org</url>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/contrib/storage-hbase/src/main/java/org/apache/drill/App.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/contrib/storage-hbase/src/main/java/org/apache/drill/App.java b/sandbox/prototype/contrib/storage-hbase/src/main/java/org/apache/drill/App.java
new file mode 100644
index 0000000..201a69c
--- /dev/null
+++ b/sandbox/prototype/contrib/storage-hbase/src/main/java/org/apache/drill/App.java
@@ -0,0 +1,13 @@
+package org.apache.drill;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/contrib/storage-hbase/src/test/java/org/apache/drill/AppTest.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/contrib/storage-hbase/src/test/java/org/apache/drill/AppTest.java b/sandbox/prototype/contrib/storage-hbase/src/test/java/org/apache/drill/AppTest.java
new file mode 100644
index 0000000..5908f3e
--- /dev/null
+++ b/sandbox/prototype/contrib/storage-hbase/src/test/java/org/apache/drill/AppTest.java
@@ -0,0 +1,38 @@
+package org.apache.drill;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/exec/java-exec/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/prototype/exec/java-exec/pom.xml b/sandbox/prototype/exec/java-exec/pom.xml
new file mode 100644
index 0000000..0e6732e
--- /dev/null
+++ b/sandbox/prototype/exec/java-exec/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>exec-parent</artifactId>
+    <groupId>org.apache.drill.exec</groupId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>java-exec</artifactId>
+  <name>java-exec</name>
+  <url>http://maven.apache.org</url>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/exec/java-exec/src/main/java/org/apache/drill/App.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/exec/java-exec/src/main/java/org/apache/drill/App.java b/sandbox/prototype/exec/java-exec/src/main/java/org/apache/drill/App.java
new file mode 100644
index 0000000..201a69c
--- /dev/null
+++ b/sandbox/prototype/exec/java-exec/src/main/java/org/apache/drill/App.java
@@ -0,0 +1,13 @@
+package org.apache.drill;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/exec/java-exec/src/test/java/org/apache/drill/AppTest.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/exec/java-exec/src/test/java/org/apache/drill/AppTest.java b/sandbox/prototype/exec/java-exec/src/test/java/org/apache/drill/AppTest.java
new file mode 100644
index 0000000..5908f3e
--- /dev/null
+++ b/sandbox/prototype/exec/java-exec/src/test/java/org/apache/drill/AppTest.java
@@ -0,0 +1,38 @@
+package org.apache.drill;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/exec/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/prototype/exec/pom.xml b/sandbox/prototype/exec/pom.xml
new file mode 100644
index 0000000..c62c351
--- /dev/null
+++ b/sandbox/prototype/exec/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>prototype-parent</artifactId>
+    <groupId>org.apache.drill</groupId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <groupId>org.apache.drill.exec</groupId>
+  <artifactId>exec-parent</artifactId>
+  <packaging>pom</packaging>
+  <name>exec</name>
+  <url>http://maven.apache.org</url>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <modules>
+    <module>java-exec</module>
+  </modules>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/planner/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/prototype/planner/pom.xml b/sandbox/prototype/planner/pom.xml
new file mode 100644
index 0000000..6b2fd1e
--- /dev/null
+++ b/sandbox/prototype/planner/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>prototype-parent</artifactId>
+    <groupId>org.apache.drill</groupId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>planner</artifactId>
+  <name>planner</name>
+  <url>http://maven.apache.org</url>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/planner/src/main/java/org/apache/drill/App.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/planner/src/main/java/org/apache/drill/App.java b/sandbox/prototype/planner/src/main/java/org/apache/drill/App.java
new file mode 100644
index 0000000..201a69c
--- /dev/null
+++ b/sandbox/prototype/planner/src/main/java/org/apache/drill/App.java
@@ -0,0 +1,13 @@
+package org.apache.drill;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/planner/src/test/java/org/apache/drill/AppTest.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/planner/src/test/java/org/apache/drill/AppTest.java b/sandbox/prototype/planner/src/test/java/org/apache/drill/AppTest.java
new file mode 100644
index 0000000..5908f3e
--- /dev/null
+++ b/sandbox/prototype/planner/src/test/java/org/apache/drill/AppTest.java
@@ -0,0 +1,38 @@
+package org.apache.drill;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/prototype/pom.xml b/sandbox/prototype/pom.xml
new file mode 100644
index 0000000..5ff9617
--- /dev/null
+++ b/sandbox/prototype/pom.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>org.apache.drill</groupId>
+	<artifactId>prototype-parent</artifactId>
+	<version>1.0-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+	<name>prototype-parent</name>
+	<url>http://maven.apache.org</url>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-resources-plugin</artifactId>
+				<version>2.5</version>
+				<configuration>
+					<encoding>UTF-8</encoding>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.0.2</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.11</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+	<modules>
+		<module>common</module>
+		<module>contrib</module>
+		<module>exec</module>
+		<module>planner</module>
+		<module>sqlparser</module>
+	</modules>
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/sqlparser/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/prototype/sqlparser/pom.xml b/sandbox/prototype/sqlparser/pom.xml
new file mode 100644
index 0000000..f5f2d5d
--- /dev/null
+++ b/sandbox/prototype/sqlparser/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>prototype-parent</artifactId>
+    <groupId>org.apache.drill</groupId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>sqlparser</artifactId>
+  <name>sqlparser</name>
+  <url>http://maven.apache.org</url>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/sqlparser/src/main/java/org/apache/drill/App.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/sqlparser/src/main/java/org/apache/drill/App.java b/sandbox/prototype/sqlparser/src/main/java/org/apache/drill/App.java
new file mode 100644
index 0000000..201a69c
--- /dev/null
+++ b/sandbox/prototype/sqlparser/src/main/java/org/apache/drill/App.java
@@ -0,0 +1,13 @@
+package org.apache.drill;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/78940e78/sandbox/prototype/sqlparser/src/test/java/org/apache/drill/AppTest.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/sqlparser/src/test/java/org/apache/drill/AppTest.java b/sandbox/prototype/sqlparser/src/test/java/org/apache/drill/AppTest.java
new file mode 100644
index 0000000..5908f3e
--- /dev/null
+++ b/sandbox/prototype/sqlparser/src/test/java/org/apache/drill/AppTest.java
@@ -0,0 +1,38 @@
+package org.apache.drill;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}