You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by ja...@apache.org on 2013/04/23 08:11:16 UTC
git commit: Exploration modifications to physical plan representation,
moving further away from similarities to LogicalPlan.
Updated Branches:
refs/heads/execwork 0d2428fde -> 5ede21ffc
Exploration modifications to physical plan representation, moving further away from similarities to LogicalPlan.
Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/5ede21ff
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/5ede21ff
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/5ede21ff
Branch: refs/heads/execwork
Commit: 5ede21ffc77eb5effe5f2e614f93ee0f86860716
Parents: 0d2428f
Author: Jacques Nadeau <ja...@apache.org>
Authored: Mon Apr 22 23:04:27 2013 -0700
Committer: Jacques Nadeau <ja...@apache.org>
Committed: Mon Apr 22 23:10:06 2013 -0700
----------------------------------------------------------------------
.../apache/drill/common/physical/PhysicalPlan.java | 13 +--
.../apache/drill/common/physical/ReadEntry.java | 2 +-
.../apache/drill/common/physical/RecordField.java | 8 +--
.../apache/drill/common/physical/WriteEntry.java | 22 +++++
.../drill/common/physical/pop/ExchangePOP.java | 2 -
.../drill/common/physical/pop/FieldCombinePOP.java | 28 ++++++
.../common/physical/pop/FieldSubdividePOP.java | 22 +++++
.../drill/common/physical/pop/ProjectPOP.java | 53 +++++++++++
.../apache/drill/common/physical/pop/ScanPOP.java | 28 +-----
.../apache/drill/common/physical/pop/SortPOP.java | 54 +++++++++++
.../apache/drill/common/physical/pop/StorePOP.java | 19 +++-
.../apache/drill/common/physical/MockScanPOP.java | 47 ++++++++++
.../apache/drill/common/physical/MockStorePOP.java | 56 +++++++++++
.../common/src/test/resources/drill-module.conf | 3 +-
.../common/src/test/resources/dsort-logical.json | 40 ++++++++
.../common/src/test/resources/dsort-physical.json | 66 +++++++++++++
.../common/src/test/resources/dsort_logical.json | 40 --------
.../common/src/test/resources/dsort_physical.json | 72 ---------------
18 files changed, 412 insertions(+), 163 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/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
index 0ef5164..b81ca42 100644
--- 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
@@ -37,17 +37,15 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Lists;
-@JsonPropertyOrder({ "head", "storage", "graph" })
+@JsonPropertyOrder({ "head", "graph" })
public class PhysicalPlan {
static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(PhysicalPlan.class);
- Map<String, StorageEngineConfig> storageEngines;
PlanProperties properties;
Graph<PhysicalOperator, SinkPOP, SourcePOP> graph;
@JsonCreator
- public PhysicalPlan(@JsonProperty("head") PlanProperties properties, @JsonProperty("storage") Map<String, StorageEngineConfig> storageEngines, @JsonProperty("graph") List<PhysicalOperator> operators){
- this.storageEngines = storageEngines;
+ public PhysicalPlan(@JsonProperty("head") PlanProperties properties, @JsonProperty("graph") List<PhysicalOperator> operators){
this.properties = properties;
this.graph = Graph.newGraph(operators, SinkPOP.class, SourcePOP.class);
}
@@ -58,12 +56,7 @@ public class PhysicalPlan {
// reverse the list so that nested references are flattened rather than nested.
return Lists.reverse(list);
}
-
-
- @JsonProperty("storage")
- public Map<String, StorageEngineConfig> getStorageEngines() {
- return storageEngines;
- }
+
@JsonProperty("head")
public PlanProperties getProperties() {
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/ReadEntry.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/ReadEntry.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/ReadEntry.java
index 47cfb5c..7c23cf5 100644
--- a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/ReadEntry.java
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/ReadEntry.java
@@ -21,5 +21,5 @@ package org.apache.drill.common.physical;
* Describes a chunk of read work that will be done.
*/
public interface ReadEntry {
-
+
}
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RecordField.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RecordField.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RecordField.java
index 2867084..8d0072a 100644
--- a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RecordField.java
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/RecordField.java
@@ -26,22 +26,16 @@ public class RecordField {
static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(RecordField.class);
- private String name;
private DataType type;
private ValueMode mode;
@JsonCreator
- public RecordField(@JsonProperty("name") String name, @JsonProperty("type") DataType type, @JsonProperty("mode") ValueMode mode) {
+ public RecordField(@JsonProperty("type") DataType type, @JsonProperty("mode") ValueMode mode) {
super();
- this.name = name;
this.type = type;
this.mode = mode;
}
- public String getName() {
- return name;
- }
-
public DataType getType() {
return type;
}
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/WriteEntry.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/WriteEntry.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/WriteEntry.java
new file mode 100644
index 0000000..7440ce2
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/WriteEntry.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * 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.physical;
+
+public interface WriteEntry {
+ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(WriteEntry.class);
+}
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ExchangePOP.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ExchangePOP.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ExchangePOP.java
index 4c1f08a..757f03b 100644
--- a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ExchangePOP.java
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ExchangePOP.java
@@ -40,8 +40,6 @@ public class ExchangePOP extends SingleChildPOP{
this.partition = partition;
this.stitch = stitch;
}
-
-
public PartitionDef getPartition() {
return partition;
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/FieldCombinePOP.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/FieldCombinePOP.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/FieldCombinePOP.java
new file mode 100644
index 0000000..ac7e036
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/FieldCombinePOP.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * 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.physical.pop;
+
+/**
+ * Creates a complex field out of two or more component fields
+ */
+public class FieldCombinePOP {
+ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(FieldCombinePOP.class);
+
+ // fieldsInSortOrder
+ private int[] fieldIds;
+}
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/FieldSubdividePOP.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/FieldSubdividePOP.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/FieldSubdividePOP.java
new file mode 100644
index 0000000..c5bd1f9
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/FieldSubdividePOP.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * 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.physical.pop;
+
+public class FieldSubdividePOP {
+ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(FieldSubdividePOP.class);
+}
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ProjectPOP.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ProjectPOP.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ProjectPOP.java
new file mode 100644
index 0000000..bd481d4
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ProjectPOP.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * 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.physical.pop;
+
+import java.util.List;
+
+import org.apache.drill.common.defs.PartitionDef;
+import org.apache.drill.common.expression.LogicalExpression;
+import org.apache.drill.common.physical.FieldSet;
+import org.apache.drill.common.physical.StitchDef;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+@JsonTypeName("project")
+public class ProjectPOP extends SingleChildPOP{
+ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ProjectPOP.class);
+
+ private List<Integer> fieldIds;
+ private List<LogicalExpression> exprs;
+
+ @JsonCreator
+ public ProjectPOP(@JsonProperty("output") FieldSet fields, @JsonProperty("fields") List<Integer> fieldIds, @JsonProperty("exprs") List<LogicalExpression> exprs) {
+ super(fields);
+ this.fieldIds = fieldIds;
+ this.exprs = exprs;
+ }
+
+ public List<Integer> getFields() {
+ return fieldIds;
+ }
+
+ public List<LogicalExpression> getExprs() {
+ return exprs;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ScanPOP.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ScanPOP.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ScanPOP.java
index 30cb2b0..2aaf8fa 100644
--- a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ScanPOP.java
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/ScanPOP.java
@@ -31,45 +31,25 @@ import com.fasterxml.jackson.annotation.JsonTypeName;
import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;
-@JsonTypeName("scan")
-public class ScanPOP extends POPBase implements SourcePOP{
+public abstract class ScanPOP<T extends ReadEntry> extends POPBase implements SourcePOP{
static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ScanPOP.class);
- private List<JSONOptions> readEntries;
- private String storageEngine;
+ private List<T> readEntries;
- @JsonCreator
- public ScanPOP(@JsonProperty("storageengine") String storageEngine, @JsonProperty("entries") List<JSONOptions> readEntries, @JsonProperty("fields") FieldSet fieldSet) {
+ public ScanPOP(List<T> readEntries, FieldSet fieldSet) {
super(fieldSet);
- this.storageEngine = storageEngine;
this.readEntries = readEntries;
}
@JsonProperty("entries")
- public List<JSONOptions> getReadEntries() {
+ public List<T> getReadEntries() {
return readEntries;
}
- public <T extends ReadEntry> List<T> getReadEntries(DrillConfig config, Class<T> clazz){
- List<T> e = Lists.newArrayList();
- for(JSONOptions o : readEntries){
- e.add(o.getWith(config, clazz));
- }
- return e;
- }
-
@Override
public Iterator<PhysicalOperator> iterator() {
return Iterators.emptyIterator();
}
- public static org.slf4j.Logger getLogger() {
- return logger;
- }
-
- @JsonProperty("storageengine")
- public String getStorageEngine() {
- return storageEngine;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/SortPOP.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/SortPOP.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/SortPOP.java
new file mode 100644
index 0000000..4d0263b
--- /dev/null
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/SortPOP.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * 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.physical.pop;
+
+import java.util.List;
+
+import org.apache.drill.common.defs.PartitionDef;
+import org.apache.drill.common.expression.LogicalExpression;
+import org.apache.drill.common.physical.FieldSet;
+import org.apache.drill.common.physical.StitchDef;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+@JsonTypeName("sort")
+public class SortPOP extends SingleChildPOP{
+ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(SortPOP.class);
+
+ private int field;
+ private boolean reverse = false;
+
+ @JsonCreator
+ public SortPOP(@JsonProperty("output") FieldSet fields, @JsonProperty("field") int field, @JsonProperty("reverse") boolean reverse) {
+ super(fields);
+ this.field = field;
+ this.reverse = reverse;
+ }
+
+ public int getField() {
+ return field;
+ }
+
+ public boolean getReverse() {
+ return reverse;
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/StorePOP.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/StorePOP.java b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/StorePOP.java
index 2fbaa99..2b8e075 100644
--- a/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/StorePOP.java
+++ b/sandbox/prototype/common/src/main/java/org/apache/drill/common/physical/pop/StorePOP.java
@@ -22,33 +22,40 @@ import java.util.List;
import org.apache.drill.common.JSONOptions;
import org.apache.drill.common.defs.PartitionDef;
import org.apache.drill.common.physical.FieldSet;
+import org.apache.drill.common.physical.WriteEntry;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeName;
-@JsonTypeName("store")
-public class StorePOP extends SingleChildPOP implements SinkPOP{
+public abstract class StorePOP<T extends WriteEntry> extends SingleChildPOP implements SinkPOP{
static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(StorePOP.class);
public static enum StoreMode {SYSTEM_CHOICE, PREDEFINED_PARTITIONS};
private StoreMode mode;
- private PartitionDef partitioning;
+ private PartitionDef partition;
+ private List<T> entries;
@JsonCreator
- public StorePOP(@JsonProperty("storageengine") String storageEngineName, @JsonProperty("fields") FieldSet fieldSet, @JsonProperty("mode") StoreMode mode, @JsonProperty("entries") List<JSONOptions> entries) {
+ public StorePOP(FieldSet fieldSet, StoreMode mode, PartitionDef partition, List<T> entries) {
super(fieldSet);
+ this.mode = mode;
+ this.partition = partition;
+ this.entries = entries;
}
public StoreMode getMode() {
return mode;
}
- public PartitionDef getPartitioning() {
- return partitioning;
+ public PartitionDef getPartition() {
+ return partition;
}
+ public List<T> getEntries(){
+ return entries;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/test/java/org/apache/drill/common/physical/MockScanPOP.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/java/org/apache/drill/common/physical/MockScanPOP.java b/sandbox/prototype/common/src/test/java/org/apache/drill/common/physical/MockScanPOP.java
new file mode 100644
index 0000000..f77ac88
--- /dev/null
+++ b/sandbox/prototype/common/src/test/java/org/apache/drill/common/physical/MockScanPOP.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * 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.physical;
+
+import java.util.List;
+
+import org.apache.drill.common.physical.pop.ScanPOP;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+@JsonTypeName("mock-scan")
+public class MockScanPOP extends ScanPOP<MockScanPOP.MockScanEntry>{
+ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(MockScanPOP.class);
+
+ private final String url;
+
+ @JsonCreator
+ public MockScanPOP(@JsonProperty("url") String url, @JsonProperty("entries") List<MockScanEntry> readEntries, @JsonProperty("output") FieldSet fields) {
+ super(readEntries, fields);
+ this.url = url;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public static class MockScanEntry implements ReadEntry{
+ public int id;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/test/java/org/apache/drill/common/physical/MockStorePOP.java
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/java/org/apache/drill/common/physical/MockStorePOP.java b/sandbox/prototype/common/src/test/java/org/apache/drill/common/physical/MockStorePOP.java
new file mode 100644
index 0000000..cf2df59
--- /dev/null
+++ b/sandbox/prototype/common/src/test/java/org/apache/drill/common/physical/MockStorePOP.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * 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.physical;
+
+import java.util.List;
+
+import org.apache.drill.common.defs.PartitionDef;
+import org.apache.drill.common.physical.MockStorePOP.MockWriteEntry;
+import org.apache.drill.common.physical.pop.StorePOP;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+@JsonTypeName("mock-store")
+public class MockStorePOP extends StorePOP<MockWriteEntry>{
+ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(MockStorePOP.class);
+
+ private List<String> fieldNames;
+
+
+ @JsonCreator
+ public MockStorePOP(@JsonProperty("output") FieldSet fields, @JsonProperty("mode") StoreMode mode, @JsonProperty("entries") List<MockWriteEntry> entries, @JsonProperty("partition") PartitionDef partition, @JsonProperty("fieldNames") List<String> fieldNames) {
+ super(fields, mode, partition, entries);
+ this.fieldNames = fieldNames;
+ }
+
+
+ public List<String> getFieldNames() {
+ return fieldNames;
+ }
+
+
+ public static class MockWriteEntry implements WriteEntry{
+ public String path;
+ public String key;
+ public String type;
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/test/resources/drill-module.conf
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/resources/drill-module.conf b/sandbox/prototype/common/src/test/resources/drill-module.conf
index 936ed79..d304d7b 100644
--- a/sandbox/prototype/common/src/test/resources/drill-module.conf
+++ b/sandbox/prototype/common/src/test/resources/drill-module.conf
@@ -1 +1,2 @@
-drill.logical.storage.packages += "org.apache.drill.storage"
\ No newline at end of file
+drill.logical.storage.packages += "org.apache.drill.storage"
+drill.physical.operator.packages += "org.apache.drill.common.physical"
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/test/resources/dsort-logical.json
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/resources/dsort-logical.json b/sandbox/prototype/common/src/test/resources/dsort-logical.json
new file mode 100644
index 0000000..83d30e8
--- /dev/null
+++ b/sandbox/prototype/common/src/test/resources/dsort-logical.json
@@ -0,0 +1,40 @@
+{
+ head:{ type:"apache_drill_logical_plan", version:"1", generator:{ type:"manual", info:"na"}}},
+ storage:[ { type:"fs", name:"fs1", root:"file:///" }],
+ query:[ { op: "sequence", sequence: [
+ {
+ op:"scan",
+ storageengine:"fs1",
+ ref: "data",
+ selection: {
+ path: "/sort/unsorted/*.seq",
+ type: "JAVA_SEQUENCE"
+ }
+ },
+ {
+ op: "order",
+ orderings: [
+ {order: "desc", expr: "data.key" }
+ ]
+ },
+ {
+ op: "project",
+ projections: [
+ { ref: "output.key", expr: "data.key" },
+ { ref: "output.value", expr: "data.value" }
+ ]
+ },
+ {
+ op: "store",
+ storageengine: "fs1",
+ target: {
+ path: "/sort/sorted/${partition}.seq",
+ type: "JAVA_SEQUENCE",
+ partition: {
+ type: "ORDERED",
+ exprs: ["key"]
+ }
+ }
+ }
+ ]}]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/test/resources/dsort-physical.json
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/resources/dsort-physical.json b/sandbox/prototype/common/src/test/resources/dsort-physical.json
new file mode 100644
index 0000000..131265a
--- /dev/null
+++ b/sandbox/prototype/common/src/test/resources/dsort-physical.json
@@ -0,0 +1,66 @@
+{
+ head:{
+ type:"APACHE_DRILL_PHYSICAL",
+ version:"1",
+ generator:{
+ type:"manual"
+ }
+ },
+ graph:[
+ {
+ @id:1,
+ pop:"mock-scan",
+ url: "http://apache.org",
+ entries:[
+ {id:1}
+ ],
+ output: [
+ {mode: "VECTOR", type: "INT32"}, //field 0
+ {mode: "VECTOR", type: "BYTES"}, //field 1
+ {mode: "VECTOR", type: "BYTES"} //field 2
+ ]
+ },
+ {
+ @id:2,
+ child: 1,
+ pop:"project",
+ fields: [0, 1],
+ exprs: [],
+ output: [
+ {mode: "VECTOR", type: "INT32"}, //field 0
+ {mode: "VECTOR", type: "BYTES"} //field 1
+ ]
+ },
+ {
+ @id:3,
+ child: 2,
+ pop:"sort",
+ field: 0,
+ output: [
+ {mode: "VECTOR", type: "INT32"}, //field 0
+ {mode: "VECTOR", type: "BYTES"} //field 1
+ ]
+ },
+ {
+ @id:4,
+ child:3,
+ pop: "mock-store",
+ mode: "SYSTEM_CHOICE",
+ fieldNames: ["key", "value"], // maps to incoming fieldids
+ entries:[
+ {
+ path:"/sort/sorted/${partition_number}.seq",
+ key:"Text",
+ type:"JAVA_SEQUENCE"
+ }
+ ],
+ output:[
+ // the output here is data about the result of the query.
+ {mode: "VECTOR", type:"INT32"},
+ {mode: "VECTOR", type:"INT64"},
+ {mode: "VECTOR", type:"INT64"},
+ {mode: "VECTOR", type:"INT64"}
+ ]
+ }
+ ]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/test/resources/dsort_logical.json
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/resources/dsort_logical.json b/sandbox/prototype/common/src/test/resources/dsort_logical.json
deleted file mode 100644
index 83d30e8..0000000
--- a/sandbox/prototype/common/src/test/resources/dsort_logical.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- head:{ type:"apache_drill_logical_plan", version:"1", generator:{ type:"manual", info:"na"}}},
- storage:[ { type:"fs", name:"fs1", root:"file:///" }],
- query:[ { op: "sequence", sequence: [
- {
- op:"scan",
- storageengine:"fs1",
- ref: "data",
- selection: {
- path: "/sort/unsorted/*.seq",
- type: "JAVA_SEQUENCE"
- }
- },
- {
- op: "order",
- orderings: [
- {order: "desc", expr: "data.key" }
- ]
- },
- {
- op: "project",
- projections: [
- { ref: "output.key", expr: "data.key" },
- { ref: "output.value", expr: "data.value" }
- ]
- },
- {
- op: "store",
- storageengine: "fs1",
- target: {
- path: "/sort/sorted/${partition}.seq",
- type: "JAVA_SEQUENCE",
- partition: {
- type: "ORDERED",
- exprs: ["key"]
- }
- }
- }
- ]}]
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/5ede21ff/sandbox/prototype/common/src/test/resources/dsort_physical.json
----------------------------------------------------------------------
diff --git a/sandbox/prototype/common/src/test/resources/dsort_physical.json b/sandbox/prototype/common/src/test/resources/dsort_physical.json
deleted file mode 100644
index 7c31df2..0000000
--- a/sandbox/prototype/common/src/test/resources/dsort_physical.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- head:{
- type:"APACHE_DRILL_PHYSICAL",
- version:"1",
- generator:{
- type:"manual"
- }
- },
- storage:{
- fs1:{
- type:"mock"
- }
- },
- graph:[
- {
- @id:1,
- pop:"scan",
- storageengine:"fs1",
- entries:[{}],
- output:[
- { "name":"key", mode: "VECTOR", type:"LATE"},
- { "name":"value", mode: "VECTOR", type:"LATE"}
- ]
- },
- {
- @id:2,
- child: 1,
- pop:"quicknwaysort",
- orderings:[
- {
- order: "DESC",
- expr: "data.key"
- }
- ],
- output:[
- { "name":"key", mode: "VECTOR", type:"LATE"},
- { "name":"value", mode: "VECTOR", type:"LATE"}
- ]
-
- },
- {
- @id:3,
- child: 2,
- pop:"exchange",
- partition:{
- mode:"RANGE",
- exprs:["key"]
- },
- stitch:{
- mode:"RANDOM"
- },
- fields:[
- { "name":"key" mode: "VECTOR", type:"LATE"},
- { "name":"value" mode: "VECTOR", type:"LATE"}
- ]
- },
- {
- @id:4,
- child:3,
- pop: "store",
- mode: "SYSTEM_CHOICE",
- storageengine: "fs1",
- entries:[
- {
- path:"/sort/sorted/${partition_number}.seq",
- key:"Text",
- type:"JAVA_SEQUENCE"
- }
- ]
- }
- ]
-}
\ No newline at end of file