Repository: incubator-drill
Updated Branches:
  refs/heads/master 30ce7d710 -> 721e7c257


DRILL-446 Fix Json Array parsing


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

Branch: refs/heads/master
Commit: 721e7c25759eda2f12b17e15e4ca32ab16ec1e1c
Parents: 30ce7d7
Author: Bhallamudi Venkata Siva Kamesh <[email protected]>
Authored: Tue Mar 25 11:04:07 2014 -0700
Committer: Timothy Chen <[email protected]>
Committed: Tue Mar 25 11:04:15 2014 -0700

----------------------------------------------------------------------
 .../exec/store/easy/json/JSONRecordReader.java  |  4 ++-
 .../exec/store/json/JSONRecordReaderTest.java   | 29 ++++++++++++++++++++
 .../src/test/resources/scan_json_test_7.json    | 10 +++++++
 3 files changed, 42 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/721e7c25/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONRecordReader.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONRecordReader.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONRecordReader.java
index 80f8678..66c5ccf 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONRecordReader.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONRecordReader.java
@@ -301,7 +301,9 @@ public class JSONRecordReader implements RecordReader {
               rowIndex,
               colIndex,
               groupCount);
-
+          if(readType == ReadType.ARRAY) {
+            groupCount--;
+          }
           isFull = isFull || currentFieldFull;
         }
         token = parser.nextToken();

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/721e7c25/exec/java-exec/src/test/java/org/apache/drill/exec/store/json/JSONRecordReaderTest.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/java/org/apache/drill/exec/store/json/JSONRecordReaderTest.java
 
b/exec/java-exec/src/test/java/org/apache/drill/exec/store/json/JSONRecordReaderTest.java
index bfeb892..e812997 100644
--- 
a/exec/java-exec/src/test/java/org/apache/drill/exec/store/json/JSONRecordReaderTest.java
+++ 
b/exec/java-exec/src/test/java/org/apache/drill/exec/store/json/JSONRecordReaderTest.java
@@ -387,4 +387,33 @@ public class JSONRecordReaderTest {
     assertEquals(0, jr.next());
     assertTrue(mutator.getRemovedFields().isEmpty());
   }
+  
+  @Test
+  public void testJsonArrayandNormalFields(@Injectable final FragmentContext 
context) throws ExecutionSetupException, IOException {
+    new Expectations() {
+      {
+        context.getAllocator();
+        returns(new TopLevelAllocator());
+      }
+    };
+
+    JSONRecordReader jr = new JSONRecordReader(context,
+        
FileUtils.getResourceAsFile("/scan_json_test_7.json").toURI().toString(),
+        FileSystem.getLocal(new Configuration()), null, null);
+
+    MockOutputMutator mutator = new MockOutputMutator();
+    List<ValueVector> addFields = mutator.getAddFields();
+    jr.setup(mutator);
+    assertEquals(2, jr.next());
+    assertEquals(3, addFields.size());
+    
+    assertField(addFields.get(0), 0, MinorType.VARCHAR, "ABC", "test");
+    assertField(addFields.get(2), 0, MinorType.VARCHAR, "drill", "a");
+    assertField(addFields.get(0), 1, MinorType.VARCHAR, "abc", "test");
+    assertField(addFields.get(2), 1, MinorType.VARCHAR, "apache", "a");
+
+
+    assertEquals(0, jr.next());
+    assertTrue(mutator.getRemovedFields().isEmpty());
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/721e7c25/exec/java-exec/src/test/resources/scan_json_test_7.json
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/resources/scan_json_test_7.json 
b/exec/java-exec/src/test/resources/scan_json_test_7.json
new file mode 100644
index 0000000..628aa50
--- /dev/null
+++ b/exec/java-exec/src/test/resources/scan_json_test_7.json
@@ -0,0 +1,10 @@
+{
+    "test": "ABC",
+    "test2": [1,2,3],
+    "a": "drill"
+}
+{
+    "test": "abc",
+    "test2": [1,2,3,4],
+    "a": "apache"
+}
\ No newline at end of file

Reply via email to