diff options
author | vkorukanti <venki.korukanti@gmail.com> | 2014-07-16 00:04:15 -0700 |
---|---|---|
committer | Jacques Nadeau <jacques@apache.org> | 2014-07-20 16:49:19 -0700 |
commit | e5c2da0eb95df1a93d4ad909d5553757201dc903 (patch) | |
tree | 0580cb08918dc28a3f89b76c7d78c27d3d2abc5d /exec/jdbc | |
parent | fffd0d38af93aee16e0103a3133306c0eb07092e (diff) |
DRILL-1145: Add testcase. Fix is in Optiq.
Diffstat (limited to 'exec/jdbc')
-rw-r--r-- | exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestViews.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestViews.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestViews.java index 2cbba340f..17772b624 100644 --- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestViews.java +++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestViews.java @@ -510,4 +510,62 @@ public class TestViews extends JdbcTestQueryBase { } }); } + + private void createViewHelper(Statement statement, String schema, String viewName, String query) throws Exception { + ResultSet resultSet = statement.executeQuery(query); + String result = JdbcAssert.toString(resultSet).trim(); + resultSet.close(); + String expected = String.format("ok=true; summary=View '%s' created successfully in '%s' schema", viewName, schema); + assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected), expected.equals(result)); + } + + private void queryView(Statement statement, String query, String expectedResult) throws Exception { + ResultSet resultSet = statement.executeQuery(query); + String actualResult = JdbcAssert.toString(resultSet).trim(); + resultSet.close(); + assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", actualResult, expectedResult), + expectedResult.equals(actualResult)); + } + + private void dropView(Statement statement, String schema, String viewName) throws Exception { + if (schema != null && !schema.isEmpty()) { + viewName = schema + "." + viewName; + } + statement.executeQuery("drop view innerView").close(); + } + + @Test + public void testViewCreatedFromView() throws Exception { + final String schema = "dfs_test.tmp"; + JdbcAssert.withFull(schema).withConnection(new Function<Connection, Void>() { + public Void apply(Connection connection) { + try { + Statement statement = connection.createStatement(); + + // create a view + String createInnerView = "CREATE VIEW innerView AS SELECT region_id, sales_city FROM cp.`region.json`"; + String innerViewName = "innerView"; + createViewHelper(statement, schema, "innerView", createInnerView); + + // create another view from above created view + String createOuterView = "CREATE VIEW outerView AS SELECT region_id FROM innerView"; + String outerViewName = "outerView"; + createViewHelper(statement, schema, outerViewName, createOuterView); + + // query on outer view + String queryView = "SELECT region_id FROM outerView LIMIT 1"; + String expectedResult = "region_id=0"; + queryView(statement, queryView, expectedResult); + + dropView(statement, schema, outerViewName); + dropView(statement, schema, innerViewName); + + statement.close(); + return null; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + }); + } } |