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
