aboutsummaryrefslogtreecommitdiff
path: root/exec/java-exec/src/test/java/org/apache/drill/exec/store/easy/text/compliant/TestCsvIgnoreHeaders.java
diff options
context:
space:
mode:
Diffstat (limited to 'exec/java-exec/src/test/java/org/apache/drill/exec/store/easy/text/compliant/TestCsvIgnoreHeaders.java')
-rw-r--r--exec/java-exec/src/test/java/org/apache/drill/exec/store/easy/text/compliant/TestCsvIgnoreHeaders.java114
1 files changed, 114 insertions, 0 deletions
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/easy/text/compliant/TestCsvIgnoreHeaders.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/easy/text/compliant/TestCsvIgnoreHeaders.java
new file mode 100644
index 000000000..d983f87e3
--- /dev/null
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/easy/text/compliant/TestCsvIgnoreHeaders.java
@@ -0,0 +1,114 @@
+/*
+ * 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.exec.store.easy.text.compliant;
+
+import static org.apache.drill.test.rowSet.RowSetUtilities.strArray;
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.drill.categories.RowSetTests;
+import org.apache.drill.common.types.TypeProtos.MinorType;
+import org.apache.drill.exec.record.metadata.SchemaBuilder;
+import org.apache.drill.exec.record.metadata.TupleMetadata;
+import org.apache.drill.test.rowSet.RowSet;
+import org.apache.drill.test.rowSet.RowSetBuilder;
+import org.apache.drill.test.rowSet.RowSetUtilities;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+// CSV reader now hosted on the row set framework
+@Category(RowSetTests.class)
+public class TestCsvIgnoreHeaders extends BaseCsvTest{
+
+ private static String withHeaders[] = {
+ "a,b,c",
+ "10,foo,bar",
+ "20,fred,wilma"
+ };
+
+ private static String raggedRows[] = {
+ "a,b,c",
+ "10,dino",
+ "20,foo,bar",
+ "30"
+ };
+
+ @BeforeClass
+ public static void setup() throws Exception {
+ BaseCsvTest.setup(true, false);
+ }
+
+ @Test
+ public void testColumns() throws IOException {
+ try {
+ enableV3(false);
+ doTestColumns();
+ enableV3(true);
+ doTestColumns();
+ } finally {
+ resetV3();
+ }
+ }
+
+ private void doTestColumns() throws IOException {
+ String fileName = "simple.csv";
+ buildFile(fileName, withHeaders);
+ String sql = "SELECT columns FROM `dfs.data`.`%s`";
+ RowSet actual = client.queryBuilder().sql(sql, fileName).rowSet();
+
+ TupleMetadata expectedSchema = new SchemaBuilder()
+ .addArray("columns", MinorType.VARCHAR)
+ .buildSchema();
+
+ RowSet expected = new RowSetBuilder(client.allocator(), expectedSchema)
+ .addSingleCol(strArray("10", "foo", "bar"))
+ .addSingleCol(strArray("20", "fred", "wilma"))
+ .build();
+ RowSetUtilities.verify(expected, actual);
+ }
+
+ @Test
+ public void testRaggedRows() throws IOException {
+ try {
+ enableV3(false);
+ doTestRaggedRows();
+ enableV3(true);
+ doTestRaggedRows();
+ } finally {
+ resetV3();
+ }
+ }
+
+ private void doTestRaggedRows() throws IOException {
+ String fileName = "ragged.csv";
+ TestCsvWithHeaders.buildFile(new File(testDir, fileName), raggedRows);
+ String sql = "SELECT columns FROM `dfs.data`.`%s`";
+ RowSet actual = client.queryBuilder().sql(sql, fileName).rowSet();
+
+ TupleMetadata expectedSchema = new SchemaBuilder()
+ .addArray("columns", MinorType.VARCHAR)
+ .buildSchema();
+ RowSet expected = new RowSetBuilder(client.allocator(), expectedSchema)
+ .addSingleCol(strArray("10", "dino"))
+ .addSingleCol(strArray("20", "foo", "bar"))
+ .addSingleCol(strArray("30"))
+ .build();
+ RowSetUtilities.verify(expected, actual);
+ }
+}