DRILL-1145: Add testcase. Fix is in Optiq.

Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/e5c2da0e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/e5c2da0e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/e5c2da0e

Branch: refs/heads/master
Commit: e5c2da0eb95df1a93d4ad909d5553757201dc903
Parents: fffd0d3
Author: vkorukanti <venki.koruka...@gmail.com>
Authored: Wed Jul 16 00:04:15 2014 -0700
Committer: Jacques Nadeau <jacq...@apache.org>
Committed: Sun Jul 20 16:49:19 2014 -0700

----------------------------------------------------------------------
 .../org/apache/drill/jdbc/test/TestViews.java   | 58 ++++++++++++++++++++
 1 file changed, 58 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/e5c2da0e/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestViews.java
----------------------------------------------------------------------
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 2cbba34..17772b6 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);
+        }
+      }
+    });
+  }
 }

Reply via email to