Repository: calcite
Updated Branches:
  refs/heads/master f6825f079 -> 9ab47c000


Test case for [CALCITE-1952] NPE in VolcanoPlanner


Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/210fa866
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/210fa866
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/210fa866

Branch: refs/heads/master
Commit: 210fa866e792ce379f2deb52f79fc0686866f07a
Parents: dfe251d
Author: Julian Hyde <[email protected]>
Authored: Tue Aug 22 22:42:43 2017 -0700
Committer: Julian Hyde <[email protected]>
Committed: Wed Aug 23 11:20:35 2017 -0700

----------------------------------------------------------------------
 .../calcite/adapter/file/FileReaderTest.java    | 55 +++++++++++++++++++-
 1 file changed, 53 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/210fa866/file/src/test/java/org/apache/calcite/adapter/file/FileReaderTest.java
----------------------------------------------------------------------
diff --git 
a/file/src/test/java/org/apache/calcite/adapter/file/FileReaderTest.java 
b/file/src/test/java/org/apache/calcite/adapter/file/FileReaderTest.java
index 3f4f0fe..b5e92aa 100644
--- a/file/src/test/java/org/apache/calcite/adapter/file/FileReaderTest.java
+++ b/file/src/test/java/org/apache/calcite/adapter/file/FileReaderTest.java
@@ -34,12 +34,17 @@ import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.net.MalformedURLException;
+import java.net.URL;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.Statement;
 import java.util.Iterator;
+import java.util.Properties;
 
 /**
  * Unit tests for FileReader.
  */
-
 public class FileReaderTest {
 
   private static final Source CITIES_SOURCE =
@@ -59,6 +64,15 @@ public class FileReaderTest {
     }
   }
 
+  private static String resourcePath(String path) {
+    final URL url = FileReaderTest.class.getResource("/" + path);
+    String s = url.toString();
+    if (s.startsWith("file:")) {
+      s = s.substring("file:".length());
+    }
+    return s;
+  }
+
   /** Tests {@link FileReader} URL instantiation - no path. */
   @Test public void testFileReaderUrlNoPath() throws FileReaderException {
     Assume.assumeTrue(FileSuite.hazNetwork());
@@ -173,7 +187,6 @@ public class FileReaderTest {
 
   /** Tests {@link FileReader} iterator with static file, */
   @Test public void testFileReaderIterator() throws FileReaderException {
-    System.out.println(new File("").getAbsolutePath());
     final Source source =
         Sources.file(null, file("target/test-classes/tableOK.html"));
     FileReader t = new FileReader(source);
@@ -185,6 +198,44 @@ public class FileReaderTest {
     assertTrue(row.get(1).text().equals("R2C1"));
   }
 
+  /** Tests reading a CSV file via the file adapter. Based on the test case for
+   * <a 
href="https://issues.apache.org/jira/browse/CALCITE-1952";>[CALCITE-1952]
+   * NPE in planner</a>. */
+  @Test public void testCsvFile() throws Exception {
+    Properties info = new Properties();
+    final String model = "inline:"
+        + "{\n"
+        + "  \"version\": \"1.0\",\n"
+        + "  \"defaultSchema\": \"XXX\",\n"
+        + "  \"schemas\": [\n"
+        + "    {\n"
+        + "      \"name\": \"FILES\",\n"
+        + "      \"type\": \"custom\",\n"
+        + "      \"factory\": 
\"org.apache.calcite.adapter.file.FileSchemaFactory\",\n"
+        + "      \"operand\": {\n"
+        + "        \"directory\": \"" + resourcePath("sales-csv") + "\"\n"
+        + "      }\n"
+        + "    }\n"
+        + "  ]\n"
+        + "}";
+    info.put("model", model);
+    info.put("lex", "JAVA");
+
+    try (Connection connection =
+             DriverManager.getConnection("jdbc:calcite:", info);
+         Statement stmt = connection.createStatement()) {
+      final String sql = "select * from FILES.DEPTS";
+      final ResultSet rs = stmt.executeQuery(sql);
+      assertThat(rs.next(), is(true));
+      assertThat(rs.getString(1), is("10"));
+      assertThat(rs.next(), is(true));
+      assertThat(rs.getString(1), is("20"));
+      assertThat(rs.next(), is(true));
+      assertThat(rs.getString(1), is("30"));
+      assertThat(rs.next(), is(false));
+      rs.close();
+    }
+  }
 }
 
 // End FileReaderTest.java

Reply via email to