You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by jn...@apache.org on 2014/11/08 01:03:04 UTC

[03/16] incubator-drill git commit: DRILL-1634: Fix issue in complex type expression type resolution, when Drill queries a nested array.

DRILL-1634: Fix issue in complex type expression type resolution, when Drill queries a nested array.

code clean up.

add comment of code change.


Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/3b8dd3b4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/3b8dd3b4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/3b8dd3b4

Branch: refs/heads/master
Commit: 3b8dd3b48d52c7499bcdff407d4b407d80fa1720
Parents: 0f069ba
Author: Jinfeng Ni <jn...@maprtech.com>
Authored: Tue Nov 4 16:55:24 2014 -0800
Committer: Jinfeng Ni <jn...@maprtech.com>
Committed: Fri Nov 7 10:50:55 2014 -0800

----------------------------------------------------------------------
 .../exec/vector/complex/AbstractContainerVector.java  | 14 ++++++++++----
 .../drill/exec/store/json/JsonRecordReader2Test.java  |  7 +++++++
 .../src/test/resources/jsoninput/nestedArray.json     |  2 ++
 3 files changed, 19 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/3b8dd3b4/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/AbstractContainerVector.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/AbstractContainerVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/AbstractContainerVector.java
index 096db6e..1210d90 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/AbstractContainerVector.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/AbstractContainerVector.java
@@ -55,11 +55,17 @@ public abstract class AbstractContainerVector implements ValueVector{
 
     if (seg.isArray()) {
       if (seg.isLastPath()) {
-        return builder //
-          .remainder(seg) //
+        builder //
           .withIndex() //
-          .finalType(getLastPathType()) //
-          .build();
+          .finalType(getLastPathType());
+
+        // remainder starts with the 1st array segment in SchemaPath.
+        // only set remainder when it's the only array segment.
+        if (addToBreadCrumb) {
+          addToBreadCrumb = false;
+          builder.remainder(seg);
+        }
+        return builder.build();
       } else {
         if (addToBreadCrumb) {
           addToBreadCrumb = false;

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/3b8dd3b4/exec/java-exec/src/test/java/org/apache/drill/exec/store/json/JsonRecordReader2Test.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/json/JsonRecordReader2Test.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/json/JsonRecordReader2Test.java
index c83a3ab..9df6cf0 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/store/json/JsonRecordReader2Test.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/json/JsonRecordReader2Test.java
@@ -44,4 +44,11 @@ public class JsonRecordReader2Test extends BaseTestQuery{
   public void trySimpleQueryWithLimit() throws Exception{
     test("select * from cp.`limit/test1.json` limit 10");
   }
+
+  @Test// DRILL-1634 : retrieve an element in a nested array in a repeated map.  RepeatedMap (Repeated List (Repeated varchar))
+  public void testNestedArrayInRepeatedMap() throws Exception {
+    test("select a[0].b[0] from cp.`jsoninput/nestedArray.json`");
+    test("select a[0].b[1] from cp.`jsoninput/nestedArray.json`");
+    test("select a[1].b[1] from cp.`jsoninput/nestedArray.json`");  // index out of the range. Should return empty list.
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/3b8dd3b4/exec/java-exec/src/test/resources/jsoninput/nestedArray.json
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/resources/jsoninput/nestedArray.json b/exec/java-exec/src/test/resources/jsoninput/nestedArray.json
new file mode 100644
index 0000000..ffd3e9f
--- /dev/null
+++ b/exec/java-exec/src/test/resources/jsoninput/nestedArray.json
@@ -0,0 +1,2 @@
+{ "a":[{"b": [["str1","str2"], ["str3", "str4"]]}] }
+{ "a":[{"b": [["str10","str20"], ["str30", "str40"]]}] }