This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 45b4ee37f8045eea6499c37ffdb2dcc951367203
Author: Hussain Towaileb <[email protected]>
AuthorDate: Thu Apr 23 12:26:12 2020 +0300

    [ASTERIXDB-2718][EXT] Add more test cases to cover complex JSON formats
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    - Added test cases for JSON single line, multiple lines, arrays, nested
      objects, ... etc.
    
    Change-Id: I3cdcd2a3f417b9a045067c2fb50249c3bdf02211
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/5923
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Hussain Towaileb <[email protected]>
    Reviewed-by: Dmitry Lychagin <[email protected]>
---
 .../json/multi-lines-with-arrays/5-records.json    |  19 +++
 .../multi-lines-with-nested-objects/5-records.json |  32 +++++
 .../data/json/multi-lines/20-records.json          |  34 +++++
 .../data/json/single-line/20-records.json          |  20 +++
 .../aws/AwsS3ExternalDatasetOnePartitionTest.java  |  17 +--
 .../aws/AwsS3ExternalDatasetTest.java              | 154 +++++++++++----------
 .../{001 => csv/000}/query-dataset.000.ddl.sqlpp   |   0
 .../{002 => csv/000}/query-dataset.002.query.sqlpp |   0
 .../{002 => csv/000}/query-dataset.003.ddl.sqlpp   |   0
 .../{ => json}/000/external_dataset.000.ddl.sqlpp  |  38 ++++-
 .../000/external_dataset.001.query.sqlpp           |   4 +-
 .../000/external_dataset.002.query.sqlpp}          |   4 +-
 .../000/external_dataset.003.query.sqlpp}          |   4 +-
 .../000/external_dataset.004.query.sqlpp}          |   4 +-
 .../000/external_dataset.005.query.sqlpp}          |   4 +-
 .../000/external_dataset.006.query.sqlpp}          |   4 +-
 .../000/external_dataset.007.ddl.sqlpp}            |   0
 .../{002 => tsv/000}/query-dataset.000.ddl.sqlpp   |   0
 .../{001 => tsv/000}/query-dataset.002.query.sqlpp |   0
 .../{001 => tsv/000}/query-dataset.003.ddl.sqlpp   |   0
 .../aws/s3/000/external_dataset.001.adm            |  14 --
 .../s3/{001 => csv/000}/external_dataset.001.adm   |   0
 .../aws/s3/json/000/external_dataset.002.adm       |   1 +
 .../aws/s3/json/000/external_dataset.003.adm       |   1 +
 .../aws/s3/json/000/external_dataset.004.adm       |   1 +
 .../aws/s3/json/000/external_dataset.005.adm       |  10 ++
 .../aws/s3/json/000/external_dataset.006.adm       |   1 +
 .../aws/s3/json/000/external_dataset.007.adm       |  10 ++
 .../s3/{002 => tsv/000}/external_dataset.001.adm   |   0
 .../runtimets/testsuite_external_dataset.xml       |  12 +-
 30 files changed, 264 insertions(+), 124 deletions(-)

diff --git 
a/asterixdb/asterix-app/data/json/multi-lines-with-arrays/5-records.json 
b/asterixdb/asterix-app/data/json/multi-lines-with-arrays/5-records.json
new file mode 100644
index 0000000..fd8526b
--- /dev/null
+++ b/asterixdb/asterix-app/data/json/multi-lines-with-arrays/5-records.json
@@ -0,0 +1,19 @@
+{"id": 1, "year": null, "quarter": null, "review": "good", "array":  [1, 2, 3]}
+
+
+{"id": 2, "year": null, "quarter": null, "review": "good", "array":  [1, [1, 
2], [1]]}
+{"id": 3, "year": 2018, "quarter": null, "review": "good", "array":  [1,
+2, 3]}
+
+{"id": 4,
+  "year": 2018,
+  "quarter": null,
+  "review": "bad",
+  "array": [
+    1,
+    2,
+    3
+  ]
+}
+{"id": 5,
+  "year": 2018, "quarter": 1, "review": "good", "array":  [1,   2,       3]}
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/data/json/multi-lines-with-nested-objects/5-records.json
 
b/asterixdb/asterix-app/data/json/multi-lines-with-nested-objects/5-records.json
new file mode 100644
index 0000000..b89e81e
--- /dev/null
+++ 
b/asterixdb/asterix-app/data/json/multi-lines-with-nested-objects/5-records.json
@@ -0,0 +1,32 @@
+{"id": 1, "year": null, "quarter": null, "review": "good", "array":  [1, 2, 
3], "nested":  { "id" :  1}}
+
+
+{"id": 2, "year": null, "quarter": null, "review": "good", "array":  [1, [1, 
2], [1]], "nested":  { "id" : 1}, "nested2": [ {"id":1 }]}
+{"id":3,"year":2018,"quarter":null,"review":"good","array":[1,2,3,{"nested":{"array":[{"nested":{"array":[1,2]}}]}}]}
+
+{
+  "id": 4,
+  "year": 2018,
+  "quarter": null,
+  "review": "bad",
+  "array": [
+    1,
+    2,
+    3,
+    {
+      "nested1": {
+        "id": 1,
+        "nested2": {
+          "id": 2,
+          "nested3": [
+            {
+              "nested4": null
+            }
+          ]
+        }
+      }
+    }
+  ]
+}
+{"id": 5,
+  "year": 2018, "quarter": 1, "review": "good", "array":  [1,   2,       3, 
{"nested": { "array": [1, 2]}}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/data/json/multi-lines/20-records.json 
b/asterixdb/asterix-app/data/json/multi-lines/20-records.json
new file mode 100644
index 0000000..0591790
--- /dev/null
+++ b/asterixdb/asterix-app/data/json/multi-lines/20-records.json
@@ -0,0 +1,34 @@
+{"id": 1, "year": null, "quarter": null, "review": "good"}
+
+
+{"id": 2, "year": null, "quarter": null, "review": "good"}
+{"id": 3, "year": 2018, "quarter": null, "review": "good"}
+
+{"id": 4,
+  "year": 2018,
+  "quarter": null,
+  "review": "bad"
+}
+{"id": 5,
+  "year": 2018, "quarter": 1, "review": "good"}
+{"id": 6, "year": 2018, "quarter": 1, "review": "bad"
+}
+{"id": 7, "year": 2018, "quarter": 2, "review": "good"}
+{"id": 8, "year": 2018, "quarter": 2, "review": "bad"}
+{"id": 9, "year": 2019, "quarter": null,
+
+  "review": "good"}
+{"id": 10, "year": 2019,
+
+  "quarter": null,
+  "review": "bad"}
+{"id": 11, "year": 2019, "quarter": 1, "review": "good"}
+{"id": 12, "year": 2019, "quarter": 1, "review": "bad"}
+{"id": 13, "year": 2019, "quarter": 2, "review": "good"}
+{"id": 14, "year": 2019, "quarter": 2, "review": "bad"}
+{"id": 15, "year": 2019, "quarter": null, "review": "good"}
+{"id": 16, "year": 2019, "quarter": null, "review": "bad"}
+{"id": 17, "year": 2019, "quarter": 1, "review": "good"}
+{"id": 18, "year": 2019, "quarter": 1, "review": "bad"}
+{"id": 19, "year": 2019, "quarter": 2, "review": "good"}
+{"id": 20, "year": 2019, "quarter": 2, "review": "bad"}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/data/json/single-line/20-records.json 
b/asterixdb/asterix-app/data/json/single-line/20-records.json
new file mode 100644
index 0000000..01176da
--- /dev/null
+++ b/asterixdb/asterix-app/data/json/single-line/20-records.json
@@ -0,0 +1,20 @@
+{"id": 1, "year": null, "quarter": null, "review": "good"}
+{"id": 2, "year": null, "quarter": null, "review": "good"}
+{"id": 3, "year": 2018, "quarter": null, "review": "good"}
+{"id": 4, "year": 2018, "quarter": null, "review": "bad"}
+{"id": 5, "year": 2018, "quarter": 1, "review": "good"}
+{"id": 6, "year": 2018, "quarter": 1, "review": "bad"}
+{"id": 7, "year": 2018, "quarter": 2, "review": "good"}
+{"id": 8, "year": 2018, "quarter": 2, "review": "bad"}
+{"id": 9, "year": 2019, "quarter": null, "review": "good"}
+{"id": 10, "year": 2019, "quarter": null, "review": "bad"}
+{"id": 11, "year": 2019, "quarter": 1, "review": "good"}
+{"id": 12, "year": 2019, "quarter": 1, "review": "bad"}
+{"id": 13, "year": 2019, "quarter": 2, "review": "good"}
+{"id": 14, "year": 2019, "quarter": 2, "review": "bad"}
+{"id": 15, "year": 2019, "quarter": null, "review": "good"}
+{"id": 16, "year": 2019, "quarter": null, "review": "bad"}
+{"id": 17, "year": 2019, "quarter": 1, "review": "good"}
+{"id": 18, "year": 2019, "quarter": 1, "review": "bad"}
+{"id": 19, "year": 2019, "quarter": 2, "review": "good"}
+{"id": 20, "year": 2019, "quarter": 2, "review": "bad"}
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/aws/AwsS3ExternalDatasetOnePartitionTest.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/aws/AwsS3ExternalDatasetOnePartitionTest.java
index 6ac1259..88cd6b5 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/aws/AwsS3ExternalDatasetOnePartitionTest.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/aws/AwsS3ExternalDatasetOnePartitionTest.java
@@ -22,8 +22,6 @@ import java.util.Collection;
 
 import org.apache.asterix.test.runtime.LangExecutionUtil;
 import org.apache.asterix.testframework.context.TestCaseContext;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
 import org.junit.FixMethodOrder;
 import org.junit.runner.RunWith;
 import org.junit.runners.MethodSorters;
@@ -36,18 +34,17 @@ import org.junit.runners.Parameterized;
 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
 public class AwsS3ExternalDatasetOnePartitionTest extends 
AwsS3ExternalDatasetTest {
 
-    private static final Logger LOGGER = LogManager.getLogger();
-    private static final String SUITE_PATH = 
"testsuite_external_dataset_one_partition.xml";
+    public AwsS3ExternalDatasetOnePartitionTest(TestCaseContext tcCtx) {
+        super(tcCtx);
+    }
 
-    @Parameterized.Parameters(name = "SqlppExecutionTest {index}: {0}")
+    @Parameterized.Parameters(name = "AwsS3ExternalDatasetOnePartitionTest 
{index}: {0}")
     public static Collection<Object[]> tests() throws Exception {
+        SUITE_TESTS = "testsuite_external_dataset_one_partition.xml";
+        ONLY_TESTS = "only_external_dataset.xml";
         TEST_CONFIG_FILE_NAME = "src/test/resources/cc-single.conf";
         PREPARE_S3_BUCKET = 
AwsS3ExternalDatasetOnePartitionTest::prepareS3Bucket;
-        return LangExecutionUtil.tests("only_external_dataset.xml", 
SUITE_PATH);
-    }
-
-    public AwsS3ExternalDatasetOnePartitionTest(TestCaseContext tcCtx) {
-        super(tcCtx);
+        return LangExecutionUtil.tests(ONLY_TESTS, SUITE_TESTS);
     }
 
     private static void prepareS3Bucket() {
diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/aws/AwsS3ExternalDatasetTest.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/aws/AwsS3ExternalDatasetTest.java
index b3fff7a..6ff59ee 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/aws/AwsS3ExternalDatasetTest.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/aws/AwsS3ExternalDatasetTest.java
@@ -24,6 +24,7 @@ import java.io.File;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.URI;
+import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Collection;
 import java.util.HashMap;
@@ -73,28 +74,43 @@ public class AwsS3ExternalDatasetTest {
 
     private static final Logger LOGGER = LogManager.getLogger();
 
-    protected static String TEST_CONFIG_FILE_NAME;
+    // subclasses of this class MUST instantiate these variables before using 
them to avoid unexpected behavior
+    static String SUITE_TESTS;
+    static String ONLY_TESTS;
+    static String TEST_CONFIG_FILE_NAME;
     static Runnable PREPARE_S3_BUCKET;
 
-    // S3 mock server
-    private static S3Mock s3MockServer;
+    // Base directory paths for data files
+    private static final String JSON_DATA_PATH = joinPath("data", "json");
+    private static final String CSV_DATA_PATH = joinPath("data", "csv");
+    private static final String TSV_DATA_PATH = joinPath("data", "tsv");
 
     // IMPORTANT: The following values must be used in the AWS S3 test case
+    private static S3Mock s3MockServer;
     private static S3Client client;
+
+    // Service endpoint
+    private static final int S3_MOCK_SERVER_PORT = 8001;
+    private static final String S3_MOCK_SERVER_HOSTNAME = "http://localhost:"; 
+ S3_MOCK_SERVER_PORT;
+
+    // Region, bucket and definitions
+    private static final String S3_MOCK_SERVER_REGION = "us-west-2";
     private static final String S3_MOCK_SERVER_BUCKET = "playground";
-    private static final String S3_MOCK_SERVER_BUCKET_DEFINITION = 
"json-data/reviews/"; // data resides here
+    private static final String S3_MOCK_SERVER_BUCKET_JSON_DEFINITION = 
"json-data/reviews/"; // data resides here
     private static final String S3_MOCK_SERVER_BUCKET_CSV_DEFINITION = 
"csv-data/reviews/"; // data resides here
     private static final String S3_MOCK_SERVER_BUCKET_TSV_DEFINITION = 
"tsv-data/reviews/"; // data resides here
-    private static final String S3_MOCK_SERVER_REGION = "us-west-2";
-    private static final int S3_MOCK_SERVER_PORT = 8001;
-    private static final String S3_MOCK_SERVER_HOSTNAME = "http://localhost:"; 
+ S3_MOCK_SERVER_PORT;
-    private static final String CSV_DATA_PATH = joinPath("data", "csv");
-    private static final String TSV_DATA_PATH = joinPath("data", "tsv");
+
     private static final Set<String> fileNames = new HashSet<>();
     private static final CreateBucketRequest.Builder CREATE_BUCKET_BUILDER = 
CreateBucketRequest.builder();
     private static final DeleteBucketRequest.Builder DELETE_BUCKET_BUILDER = 
DeleteBucketRequest.builder();
     private static final PutObjectRequest.Builder PUT_OBJECT_BUILDER = 
PutObjectRequest.builder();
 
+    protected TestCaseContext tcCtx;
+
+    public AwsS3ExternalDatasetTest(TestCaseContext tcCtx) {
+        this.tcCtx = tcCtx;
+    }
+
     @BeforeClass
     public static void setUp() throws Exception {
         final TestExecutor testExecutor = new AwsTestExecutor();
@@ -118,17 +134,13 @@ public class AwsS3ExternalDatasetTest {
         LOGGER.info("S3 mock down and client shut down successfully");
     }
 
-    @Parameters(name = "SqlppExecutionTest {index}: {0}")
+    @Parameters(name = "AwsS3ExternalDatasetTest {index}: {0}")
     public static Collection<Object[]> tests() throws Exception {
+        SUITE_TESTS = "testsuite_external_dataset.xml";
+        ONLY_TESTS = "only_external_dataset.xml";
         TEST_CONFIG_FILE_NAME = "src/main/resources/cc.conf";
         PREPARE_S3_BUCKET = AwsS3ExternalDatasetTest::prepareS3Bucket;
-        return LangExecutionUtil.tests("only_external_dataset.xml", 
"testsuite_external_dataset.xml");
-    }
-
-    protected TestCaseContext tcCtx;
-
-    public AwsS3ExternalDatasetTest(TestCaseContext tcCtx) {
-        this.tcCtx = tcCtx;
+        return LangExecutionUtil.tests(ONLY_TESTS, SUITE_TESTS);
     }
 
     @Test
@@ -180,64 +192,58 @@ public class AwsS3ExternalDatasetTest {
         
client.createBucket(CreateBucketRequest.builder().bucket(S3_MOCK_SERVER_BUCKET).build());
         LOGGER.info("bucket created successfully");
 
+        // Load JSON files
+        loadJsonFiles();
+        loadCsvFiles();
+        loadTsvFiles();
+
+        LOGGER.info("Files added successfully");
+    }
+
+    private static void loadJsonFiles() {
         LOGGER.info("Adding JSON files to the bucket");
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"0.json").build(),
-                RequestBody.fromString("{\"id\": 1, \"year\": null, 
\"quarter\": null, \"review\": \"good\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"1.json").build(),
-                RequestBody.fromString("{\"id\": 2, \"year\": null, 
\"quarter\": null, \"review\": \"good\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"2018/1.json").build(),
-                RequestBody.fromString("{\"id\": 3, \"year\": 2018, 
\"quarter\": null, \"review\": \"good\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"2018/2.json").build(),
-                RequestBody.fromString("{\"id\": 4, \"year\": 2018, 
\"quarter\": null, \"review\": \"bad\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"2018/q1/1.json").build(),
-                RequestBody.fromString("{\"id\": 5, \"year\": 2018, 
\"quarter\": 1, \"review\": \"good\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"2018/q1/2.json").build(),
-                RequestBody.fromString("{\"id\": 6, \"year\": 2018, 
\"quarter\": 1, \"review\": \"bad\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"2018/q2/1.json").build(),
-                RequestBody.fromString("{\"id\": 7, \"year\": 2018, 
\"quarter\": 2, \"review\": \"good\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"2018/q2/2.json").build(),
-                RequestBody.fromString("{\"id\": 8, \"year\": 2018, 
\"quarter\": 2, \"review\": \"bad\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"2019/1.json").build(),
-                RequestBody.fromString("{\"id\": 9, \"year\": 2019, 
\"quarter\": null, \"review\": \"good\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"2019/2.json").build(),
-                RequestBody.fromString("{\"id\": 10, \"year\": 2019, 
\"quarter\": null, \"review\": \"bad\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"2019/q1/1.json").build(),
-                RequestBody.fromString("{\"id\": 11, \"year\": 2019, 
\"quarter\": 1, \"review\": \"good\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"2019/q1/2.json").build(),
-                RequestBody.fromString("{\"id\": 12, \"year\": 2019, 
\"quarter\": 1, \"review\": \"bad\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"2019/q2/1.json").build(),
-                RequestBody.fromString("{\"id\": 13, \"year\": 2019, 
\"quarter\": 2, \"review\": \"good\"}"));
-        client.putObject(
-                PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
-                        .key(S3_MOCK_SERVER_BUCKET_DEFINITION + 
"2019/q2/2.json").build(),
-                RequestBody.fromString("{\"id\": 14, \"year\": 2019, 
\"quarter\": 2, \"review\": \"bad\"}"));
 
+        // Set the bucket
+        PutObjectRequest.Builder builder1 = 
PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET);
+
+        // load multi-level single line JSON files
+        String singleLineBasePath = S3_MOCK_SERVER_BUCKET_JSON_DEFINITION + 
"single-line/";
+        Path filePath1 = Paths.get(JSON_DATA_PATH, "single-line", 
"20-records.json");
+        RequestBody reqBody1 = RequestBody.fromFile(filePath1);
+        client.putObject(builder1.key(singleLineBasePath + 
"20-records.json").build(), reqBody1);
+        client.putObject(builder1.key(singleLineBasePath + "level1a/" + 
"20-records.json").build(), reqBody1);
+        client.putObject(builder1.key(singleLineBasePath + "level1b/" + 
"20-records.json").build(), reqBody1);
+        client.putObject(builder1.key(singleLineBasePath + "level1a/level2a/" 
+ "20-records.json").build(), reqBody1);
+        client.putObject(builder1.key(singleLineBasePath + "level1a/level2b/" 
+ "20-records.json").build(), reqBody1);
+
+        // Load multi-level multi-lines JSON files
+        String multiLinesBasePath = S3_MOCK_SERVER_BUCKET_JSON_DEFINITION + 
"multi-lines/";
+        Path filePath2 = Paths.get(JSON_DATA_PATH, "multi-lines", 
"20-records.json");
+        RequestBody reqBody2 = RequestBody.fromFile(filePath2);
+        client.putObject(builder1.key(multiLinesBasePath + 
"20-records.json").build(), reqBody2);
+        client.putObject(builder1.key(multiLinesBasePath + "level1a/" + 
"20-records.json").build(), reqBody2);
+        client.putObject(builder1.key(multiLinesBasePath + "level1b/" + 
"20-records.json").build(), reqBody2);
+        client.putObject(builder1.key(multiLinesBasePath + "level1a/level2a/" 
+ "20-records.json").build(), reqBody2);
+        client.putObject(builder1.key(multiLinesBasePath + "level1a/level2b/" 
+ "20-records.json").build(), reqBody2);
+
+        // Load multi-level multi-lines with array JSON files
+        String multiLinesWithArraysBasePath = 
S3_MOCK_SERVER_BUCKET_JSON_DEFINITION + "multi-lines-with-arrays/";
+        Path filePath3 = Paths.get(JSON_DATA_PATH, "multi-lines-with-arrays", 
"5-records.json");
+        RequestBody reqBody3 = RequestBody.fromFile(filePath3);
+        client.putObject(builder1.key(multiLinesWithArraysBasePath + 
"5-records.json").build(), reqBody3);
+        client.putObject(builder1.key(multiLinesWithArraysBasePath + 
"level1a/" + "5-records.json").build(), reqBody3);
+
+        // Load multi-level multi-lines with nested objects JSON files
+        String multiLinesWithNestedObjectsBasePath =
+                S3_MOCK_SERVER_BUCKET_JSON_DEFINITION + 
"multi-lines-with-nested-objects/";
+        Path filePath4 = Paths.get(JSON_DATA_PATH, 
"multi-lines-with-nested-objects", "5-records.json");
+        RequestBody reqBody4 = RequestBody.fromFile(filePath4);
+        client.putObject(builder1.key(multiLinesWithNestedObjectsBasePath + 
"5-records.json").build(), reqBody4);
+        client.putObject(builder1.key(multiLinesWithNestedObjectsBasePath + 
"level1a/" + "5-records.json").build(),
+                reqBody4);
+    }
+
+    private static void loadCsvFiles() {
         LOGGER.info("Adding CSV files to the bucket");
         client.putObject(
                 PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
@@ -247,7 +253,9 @@ public class AwsS3ExternalDatasetTest {
                 PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
                         .key(S3_MOCK_SERVER_BUCKET_CSV_DEFINITION + 
"2018/01.csv").build(),
                 RequestBody.fromFile(Paths.get(CSV_DATA_PATH, "02.csv")));
+    }
 
+    private static void loadTsvFiles() {
         LOGGER.info("Adding TSV files to the bucket");
         client.putObject(
                 PutObjectRequest.builder().bucket(S3_MOCK_SERVER_BUCKET)
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/001/query-dataset.000.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/csv/000/query-dataset.000.ddl.sqlpp
similarity index 100%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/001/query-dataset.000.ddl.sqlpp
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/csv/000/query-dataset.000.ddl.sqlpp
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/002/query-dataset.002.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/csv/000/query-dataset.002.query.sqlpp
similarity index 100%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/002/query-dataset.002.query.sqlpp
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/csv/000/query-dataset.002.query.sqlpp
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/002/query-dataset.003.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/csv/000/query-dataset.003.ddl.sqlpp
similarity index 100%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/002/query-dataset.003.ddl.sqlpp
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/csv/000/query-dataset.003.ddl.sqlpp
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.000.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.000.ddl.sqlpp
similarity index 50%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.000.ddl.sqlpp
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.000.ddl.sqlpp
index 9c6a994..8d084a1 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.000.ddl.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.000.ddl.sqlpp
@@ -25,14 +25,46 @@ drop type test if exists;
 create type test as open {
 };
 
-drop dataset test if exists;
-create external dataset test(test) using S3 (
+drop dataset test1 if exists;
+create external dataset test1(test) using S3 (
 ("accessKey"="dummyAccessKey"),
 ("secretKey"="dummySecretKey"),
 ("region"="us-west-2"),
 ("serviceEndpoint"="http://localhost:8001";),
 ("container"="playground"),
-("definition"="json-data/reviews"),
+("definition"="json-data/reviews/single-line"),
 ("format"="json")
 );
 
+drop dataset test2 if exists;
+create external dataset test2(test) using S3 (
+("accessKey"="dummyAccessKey"),
+("secretKey"="dummySecretKey"),
+("region"="us-west-2"),
+("serviceEndpoint"="http://localhost:8001";),
+("container"="playground"),
+("definition"="json-data/reviews/multi-lines"),
+("format"="json")
+);
+
+drop dataset test3 if exists;
+create external dataset test3(test) using S3 (
+("accessKey"="dummyAccessKey"),
+("secretKey"="dummySecretKey"),
+("region"="us-west-2"),
+("serviceEndpoint"="http://localhost:8001";),
+("container"="playground"),
+("definition"="json-data/reviews/multi-lines-with-arrays"),
+("format"="json")
+);
+
+drop dataset test4 if exists;
+create external dataset test4(test) using S3 (
+("accessKey"="dummyAccessKey"),
+("secretKey"="dummySecretKey"),
+("region"="us-west-2"),
+("serviceEndpoint"="http://localhost:8001";),
+("container"="playground"),
+("definition"="json-data/reviews/multi-lines-with-nested-objects"),
+("format"="json")
+);
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.001.query.sqlpp
similarity index 94%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.001.query.sqlpp
index 2dd9cc5..b72e741 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.001.query.sqlpp
@@ -19,7 +19,5 @@
 
 use test;
 
-from test
-select value test
-order by id asc;
+select count(*) `count` from test1;
 
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.002.query.sqlpp
similarity index 94%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.002.query.sqlpp
index 2dd9cc5..c3e883e 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.002.query.sqlpp
@@ -19,7 +19,5 @@
 
 use test;
 
-from test
-select value test
-order by id asc;
+select count(*) `count` from test2;
 
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.003.query.sqlpp
similarity index 94%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.003.query.sqlpp
index 2dd9cc5..e3d64ff 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.003.query.sqlpp
@@ -19,7 +19,5 @@
 
 use test;
 
-from test
-select value test
-order by id asc;
+select count(*) `count` from test3;
 
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.004.query.sqlpp
similarity index 94%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.004.query.sqlpp
index 2dd9cc5..1fda76a 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.004.query.sqlpp
@@ -19,7 +19,5 @@
 
 use test;
 
-from test
-select value test
-order by id asc;
+select value test3 from test3 order by id;
 
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.005.query.sqlpp
similarity index 94%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.005.query.sqlpp
index 2dd9cc5..2b9b5cb 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.005.query.sqlpp
@@ -19,7 +19,5 @@
 
 use test;
 
-from test
-select value test
-order by id asc;
+select count(*) `count` from test4;
 
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.006.query.sqlpp
similarity index 94%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.006.query.sqlpp
index 2dd9cc5..2cd184d 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.001.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.006.query.sqlpp
@@ -19,7 +19,5 @@
 
 use test;
 
-from test
-select value test
-order by id asc;
+select value test4 from test4 order by id;
 
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.002.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.007.ddl.sqlpp
similarity index 100%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/000/external_dataset.002.ddl.sqlpp
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/json/000/external_dataset.007.ddl.sqlpp
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/002/query-dataset.000.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/tsv/000/query-dataset.000.ddl.sqlpp
similarity index 100%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/002/query-dataset.000.ddl.sqlpp
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/tsv/000/query-dataset.000.ddl.sqlpp
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/001/query-dataset.002.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/tsv/000/query-dataset.002.query.sqlpp
similarity index 100%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/001/query-dataset.002.query.sqlpp
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/tsv/000/query-dataset.002.query.sqlpp
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/001/query-dataset.003.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/tsv/000/query-dataset.003.ddl.sqlpp
similarity index 100%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/001/query-dataset.003.ddl.sqlpp
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/tsv/000/query-dataset.003.ddl.sqlpp
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/000/external_dataset.001.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/000/external_dataset.001.adm
deleted file mode 100644
index a7ce908..0000000
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/000/external_dataset.001.adm
+++ /dev/null
@@ -1,14 +0,0 @@
-{ "id": 1, "year": null, "quarter": null, "review": "good" }
-{ "id": 2, "year": null, "quarter": null, "review": "good" }
-{ "id": 3, "year": 2018, "quarter": null, "review": "good" }
-{ "id": 4, "year": 2018, "quarter": null, "review": "bad" }
-{ "id": 5, "year": 2018, "quarter": 1, "review": "good" }
-{ "id": 6, "year": 2018, "quarter": 1, "review": "bad" }
-{ "id": 7, "year": 2018, "quarter": 2, "review": "good" }
-{ "id": 8, "year": 2018, "quarter": 2, "review": "bad" }
-{ "id": 9, "year": 2019, "quarter": null, "review": "good" }
-{ "id": 10, "year": 2019, "quarter": null, "review": "bad" }
-{ "id": 11, "year": 2019, "quarter": 1, "review": "good" }
-{ "id": 12, "year": 2019, "quarter": 1, "review": "bad" }
-{ "id": 13, "year": 2019, "quarter": 2, "review": "good" }
-{ "id": 14, "year": 2019, "quarter": 2, "review": "bad" }
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/001/external_dataset.001.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/csv/000/external_dataset.001.adm
similarity index 100%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/001/external_dataset.001.adm
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/csv/000/external_dataset.001.adm
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.002.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.002.adm
new file mode 100644
index 0000000..187a8cb
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.002.adm
@@ -0,0 +1 @@
+{ "count": 100 }
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.003.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.003.adm
new file mode 100644
index 0000000..187a8cb
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.003.adm
@@ -0,0 +1 @@
+{ "count": 100 }
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.004.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.004.adm
new file mode 100644
index 0000000..d10a16c
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.004.adm
@@ -0,0 +1 @@
+{ "count": 10 }
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.005.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.005.adm
new file mode 100644
index 0000000..a1881c3
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.005.adm
@@ -0,0 +1,10 @@
+{ "id": 1, "year": null, "quarter": null, "review": "good", "array": [ 1, 2, 3 
] }
+{ "id": 1, "year": null, "quarter": null, "review": "good", "array": [ 1, 2, 3 
] }
+{ "id": 2, "year": null, "quarter": null, "review": "good", "array": [ 1, [ 1, 
2 ], [ 1 ] ] }
+{ "id": 2, "year": null, "quarter": null, "review": "good", "array": [ 1, [ 1, 
2 ], [ 1 ] ] }
+{ "id": 3, "year": 2018, "quarter": null, "review": "good", "array": [ 1, 2, 3 
] }
+{ "id": 3, "year": 2018, "quarter": null, "review": "good", "array": [ 1, 2, 3 
] }
+{ "id": 4, "year": 2018, "quarter": null, "review": "bad", "array": [ 1, 2, 3 
] }
+{ "id": 4, "year": 2018, "quarter": null, "review": "bad", "array": [ 1, 2, 3 
] }
+{ "id": 5, "year": 2018, "quarter": 1, "review": "good", "array": [ 1, 2, 3 ] }
+{ "id": 5, "year": 2018, "quarter": 1, "review": "good", "array": [ 1, 2, 3 ] }
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.006.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.006.adm
new file mode 100644
index 0000000..d10a16c
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.006.adm
@@ -0,0 +1 @@
+{ "count": 10 }
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.007.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.007.adm
new file mode 100644
index 0000000..d24a08b
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/json/000/external_dataset.007.adm
@@ -0,0 +1,10 @@
+{ "id": 1, "year": null, "quarter": null, "review": "good", "array": [ 1, 2, 3 
], "nested": { "id": 1 } }
+{ "id": 1, "year": null, "quarter": null, "review": "good", "array": [ 1, 2, 3 
], "nested": { "id": 1 } }
+{ "id": 2, "year": null, "quarter": null, "review": "good", "array": [ 1, [ 1, 
2 ], [ 1 ] ], "nested": { "id": 1 }, "nested2": [ { "id": 1 } ] }
+{ "id": 2, "year": null, "quarter": null, "review": "good", "array": [ 1, [ 1, 
2 ], [ 1 ] ], "nested": { "id": 1 }, "nested2": [ { "id": 1 } ] }
+{ "id": 3, "year": 2018, "quarter": null, "review": "good", "array": [ 1, 2, 
3, { "nested": { "array": [ { "nested": { "array": [ 1, 2 ] } } ] } } ] }
+{ "id": 3, "year": 2018, "quarter": null, "review": "good", "array": [ 1, 2, 
3, { "nested": { "array": [ { "nested": { "array": [ 1, 2 ] } } ] } } ] }
+{ "id": 4, "year": 2018, "quarter": null, "review": "bad", "array": [ 1, 2, 3, 
{ "nested1": { "id": 1, "nested2": { "id": 2, "nested3": [ { "nested4": null } 
] } } } ] }
+{ "id": 4, "year": 2018, "quarter": null, "review": "bad", "array": [ 1, 2, 3, 
{ "nested1": { "id": 1, "nested2": { "id": 2, "nested3": [ { "nested4": null } 
] } } } ] }
+{ "id": 5, "year": 2018, "quarter": 1, "review": "good", "array": [ 1, 2, 3, { 
"nested": { "array": [ 1, 2 ] } } ] }
+{ "id": 5, "year": 2018, "quarter": 1, "review": "good", "array": [ 1, 2, 3, { 
"nested": { "array": [ 1, 2 ] } } ] }
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/002/external_dataset.001.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/tsv/000/external_dataset.001.adm
similarity index 100%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/002/external_dataset.001.adm
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/aws/s3/tsv/000/external_dataset.001.adm
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset.xml
 
b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset.xml
index 2456f13..a6774fa 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset.xml
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset.xml
@@ -20,18 +20,18 @@
 <test-suite xmlns="urn:xml.testframework.asterix.apache.org" 
ResultOffsetPath="results" QueryOffsetPath="queries_sqlpp" 
QueryFileExtension=".sqlpp">
   <test-group name="external-dataset">
     <test-case FilePath="external-dataset">
-      <compilation-unit name="aws/s3/000">
-        <output-dir compare="Text">aws/s3/000</output-dir>
+      <compilation-unit name="aws/s3/json/000">
+        <output-dir compare="Text">aws/s3/json/000</output-dir>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
-      <compilation-unit name="aws/s3/001">
-        <output-dir compare="Text">aws/s3/001</output-dir>
+      <compilation-unit name="aws/s3/csv/000">
+        <output-dir compare="Text">aws/s3/csv/000</output-dir>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
-      <compilation-unit name="aws/s3/002">
-        <output-dir compare="Text">aws/s3/002</output-dir>
+      <compilation-unit name="aws/s3/tsv/000">
+        <output-dir compare="Text">aws/s3/tsv/000</output-dir>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">

Reply via email to