aboutsummaryrefslogtreecommitdiff
path: root/exec/jdbc
diff options
context:
space:
mode:
authorvkorukanti <venki.korukanti@gmail.com>2014-07-16 00:04:15 -0700
committerJacques Nadeau <jacques@apache.org>2014-07-20 16:49:19 -0700
commite5c2da0eb95df1a93d4ad909d5553757201dc903 (patch)
tree0580cb08918dc28a3f89b76c7d78c27d3d2abc5d /exec/jdbc
parentfffd0d38af93aee16e0103a3133306c0eb07092e (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.java58
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);
+ }
+ }
+ });
+ }
}