You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by ja...@apache.org on 2014/06/11 05:52:22 UTC
[37/61] [abbrv] git commit: DRILL-751/DRILL-806: View info in
INFORMATION_SCHEMA
DRILL-751/DRILL-806: View info in INFORMATION_SCHEMA
Fixes are already part of the DRILL-760 (InfoSchema POJO conversion).
This patch includes testcases and refactoring of view tests into a separate file.
Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/0c3bad98
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/0c3bad98
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/0c3bad98
Branch: refs/heads/master
Commit: 0c3bad9803c4b8fbc82da889ea434ecbfd49083b
Parents: 0dde773
Author: vkorukanti <ve...@gmail.com>
Authored: Mon Jun 9 10:25:41 2014 -0700
Committer: vkorukanti <ve...@gmail.com>
Committed: Mon Jun 9 13:34:13 2014 -0700
----------------------------------------------------------------------
.../apache/drill/jdbc/test/TestJdbcQuery.java | 335 ----------------
.../org/apache/drill/jdbc/test/TestViews.java | 385 +++++++++++++++++++
2 files changed, 385 insertions(+), 335 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/0c3bad98/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcQuery.java
----------------------------------------------------------------------
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcQuery.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcQuery.java
index ec5ecf5..f486cc9 100644
--- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcQuery.java
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcQuery.java
@@ -280,259 +280,6 @@ import static org.junit.Assert.fail;
);
}
- /** Helper test method for view tests */
- private void testViewHelper(final String viewCreate, final String viewName,
- final String viewQuery, final String queryResult) throws Exception{
- JdbcAssert.withNoDefaultSchema().withConnection(new Function<Connection, Void>() {
- public Void apply(Connection connection) {
- try {
- Statement statement = connection.createStatement();
-
- // change default schema
- statement.executeQuery("USE dfs.tmp");
- // create view
- ResultSet resultSet = statement.executeQuery(viewCreate);
- String result = JdbcAssert.toString(resultSet).trim();
- resultSet.close();
- String viewCreateResult = "ok=true; summary=View '" + viewName + "' created successfully in 'dfs.tmp' schema";
- assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, viewCreateResult),
- viewCreateResult.equals(result));
-
- // query from view
- resultSet = statement.executeQuery(viewQuery);
- result = JdbcAssert.toString(resultSet).trim();
- resultSet.close();
- assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, queryResult),
- queryResult.equals(result));
-
- statement.executeQuery("drop view " + viewName).close();
-
- statement.close();
-
-
- return null;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- });
- }
-
- @Test
- public void testView1() throws Exception{
- testViewHelper(
- "CREATE VIEW testview1 AS SELECT * FROM cp.`region.json`",
- "testview1",
- "SELECT * FROM testview1 LIMIT 1",
- "region_id=0; sales_city=None; sales_state_province=None; sales_district=No District; " +
- "sales_region=No Region; sales_country=No Country; sales_district_id=0");
- }
-
- @Test
- public void testView2() throws Exception{
- testViewHelper(
- "CREATE VIEW testview2 AS SELECT region_id, sales_city FROM cp.`region.json`",
- "testview2",
- "SELECT * FROM testview2 LIMIT 2",
- "region_id=0; sales_city=None\nregion_id=1; sales_city=San Francisco");
- }
-
- @Test
- public void testView3() throws Exception{
- testViewHelper(
- "CREATE VIEW testview3(regionid, salescity) AS SELECT region_id, sales_city FROM cp.`region.json`",
- "testview3",
- "SELECT * FROM testview3 LIMIT 2",
- "regionid=0; salescity=None\nregionid=1; salescity=San Francisco");
- }
-
- @Test
- @Ignore // See DRILL-595 - can't project columns from inner query.
- public void testView4() throws Exception{
- testViewHelper(
- "CREATE VIEW testview1 AS SELECT * FROM cp.`region.json`",
- "testview1",
- "SELECT region_id, sales_city FROM testview1 LIMIT 2",
- "");
- }
-
- @Test
- public void testView5() throws Exception{
- testViewHelper(
- "CREATE VIEW testview2 AS SELECT region_id, sales_city FROM cp.`region.json`",
- "testview2",
- "SELECT region_id, sales_city FROM testview2 LIMIT 2",
- "region_id=0; sales_city=None\nregion_id=1; sales_city=San Francisco");
- }
-
- @Test
- public void testView6() throws Exception{
- testViewHelper(
- "CREATE VIEW testview2 AS SELECT region_id, sales_city FROM cp.`region.json`",
- "testview2",
- "SELECT sales_city FROM testview2 LIMIT 2",
- "sales_city=None\nsales_city=San Francisco");
- }
-
- @Test
- public void testView7() throws Exception{
- testViewHelper(
- "CREATE VIEW testview3(regionid, salescity) AS SELECT region_id, sales_city FROM cp.`region.json` LIMIT 2",
- "testview3",
- "SELECT regionid, salescity FROM testview3",
- "regionid=0; salescity=None\nregionid=1; salescity=San Francisco");
- }
-
- @Test
- public void testView8() throws Exception{
- testViewHelper(
- "CREATE VIEW testview3(regionid, salescity) AS " +
- "SELECT region_id, sales_city FROM cp.`region.json` ORDER BY region_id DESC",
- "testview3",
- "SELECT regionid FROM testview3 LIMIT 2",
- "regionid=109\nregionid=108");
- }
-
- @Test
- @Ignore // Query on testview2 fails with CannotPlanException. Seems to be an issue with Union.
- public void testView9() throws Exception{
- testViewHelper(
- "CREATE VIEW testview2 AS " +
- "SELECT region_id FROM cp.`region.json` " +
- "UNION " +
- "SELECT employee_id FROM cp.`employee.json`",
- "testview2",
- "SELECT sales_city FROM testview2 LIMIT 2",
- "sales_city=None\nsales_city=San Francisco");
- }
-
- @Test
- public void testViewOnHiveTable1() throws Exception{
- testViewHelper(
- "CREATE VIEW hiveview AS SELECT * FROM hive.kv",
- "hiveview",
- "SELECT * FROM hiveview LIMIT 1",
- "key=1; value= key_1");
- }
-
- @Test
- public void testViewOnHiveTable2() throws Exception{
- testViewHelper(
- "CREATE VIEW hiveview AS SELECT * FROM hive.kv",
- "hiveview",
- "SELECT key, `value` FROM hiveview LIMIT 1",
- "key=1; value= key_1");
- }
-
- @Test
- public void testViewOnHiveTable3() throws Exception{
- testViewHelper(
- "CREATE VIEW hiveview AS SELECT * FROM hive.kv",
- "hiveview",
- "SELECT `value` FROM hiveview LIMIT 1",
- "value= key_1");
- }
-
- @Test
- public void testViewOnHiveTable4() throws Exception{
- testViewHelper(
- "CREATE VIEW hiveview AS SELECT key, `value` FROM hive.kv",
- "hiveview",
- "SELECT * FROM hiveview LIMIT 1",
- "key=1; value= key_1");
- }
-
- @Test
- public void testViewOnHiveTable5() throws Exception{
- testViewHelper(
- "CREATE VIEW hiveview AS SELECT key, `value` FROM hive.kv",
- "hiveview",
- "SELECT key, `value` FROM hiveview LIMIT 1",
- "key=1; value= key_1");
- }
-
- @Test
- public void testDropView() throws Exception{
- JdbcAssert.withNoDefaultSchema().withConnection(new Function<Connection, Void>() {
- public Void apply(Connection connection) {
- try {
- Statement statement = connection.createStatement();
-
- // change default schema
- statement.executeQuery("USE dfs.tmp");
-
- // create view
- statement.executeQuery(
- "CREATE VIEW testview3(regionid) AS SELECT region_id FROM cp.`region.json`");
-
- // query from view
- ResultSet resultSet = statement.executeQuery("SELECT regionid FROM testview3 LIMIT 1");
- String result = JdbcAssert.toString(resultSet).trim();
- resultSet.close();
- String expected = "regionid=0";
- assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
- expected.equals(result));
-
- resultSet = statement.executeQuery("DROP VIEW testview3");
- result = JdbcAssert.toString(resultSet).trim();
- resultSet.close();
- expected = "ok=true; summary=View 'testview3' deleted successfully from 'dfs.tmp' schema";
- assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
- expected.equals(result));
-
- statement.close();
- return null;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- });
- }
-
- @Test
- public void testShowDescribeTablesWithView() throws Exception{
- JdbcAssert.withNoDefaultSchema().withConnection(new Function<Connection, Void>() {
- public Void apply(Connection connection) {
- try {
- Statement statement = connection.createStatement();
-
- // change default schema
- statement.executeQuery("USE dfs.tmp");
-
- // create view
- statement.executeQuery(
- "CREATE VIEW testview3 AS SELECT * FROM hive.kv");
-
- // show tables on view
- ResultSet resultSet = statement.executeQuery("SHOW TABLES like 'testview3'");
- String result = JdbcAssert.toString(resultSet).trim();
- resultSet.close();
- String expected = "TABLE_SCHEMA=dfs.tmp; TABLE_NAME=testview3";
- assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
- expected.equals(result));
-
- // describe a view
- resultSet = statement.executeQuery("DESCRIBE dfs.tmp.testview3");
- result = JdbcAssert.toString(resultSet).trim();
- resultSet.close();
- expected =
- "COLUMN_NAME=key; DATA_TYPE=INTEGER; IS_NULLABLE=NO\n" +
- "COLUMN_NAME=value; DATA_TYPE=VARCHAR; IS_NULLABLE=NO";
- assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
- expected.equals(result));
-
- statement.executeQuery("drop view testview3").close();
-
- statement.close();
- return null;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- });
- }
-
-
@Test
public void testDateTimeAccessors() throws Exception{
JdbcAssert.withNoDefaultSchema().withConnection(new Function<Connection, Void>() {
@@ -599,88 +346,6 @@ import static org.junit.Assert.fail;
}
@Test
- public void testViewWithFullSchemaIdentifier() throws Exception{
- JdbcAssert.withNoDefaultSchema().withConnection(new Function<Connection, Void>() {
- public Void apply(Connection connection) {
- try {
- Statement statement = connection.createStatement();
-
- // change default schema
- statement.executeQuery("USE cp");
-
- // create a view with full schema identifier
- ResultSet resultSet = statement.executeQuery("CREATE VIEW dfs.tmp.testview AS SELECT * FROM hive.kv");
- String result = JdbcAssert.toString(resultSet).trim();
- resultSet.close();
- String expected = "ok=true; summary=View 'testview' created successfully in 'dfs.tmp' schema";
- assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
- expected.equals(result));
-
- // query from view
- resultSet = statement.executeQuery("SELECT key FROM dfs.tmp.testview LIMIT 1");
- result = JdbcAssert.toString(resultSet).trim();
- resultSet.close();
- expected = "key=1";
- assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
- expected.equals(result));
-
- statement.executeQuery("drop view dfs.tmp.testview").close();
-
- statement.close();
- return null;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- });
- }
-
- @Test
- public void testViewWithPartialSchemaIdentifier() throws Exception{
- JdbcAssert.withNoDefaultSchema().withConnection(new Function<Connection, Void>() {
- public Void apply(Connection connection) {
- try {
- Statement statement = connection.createStatement();
-
- // change default schema
- statement.executeQuery("USE dfs");
-
- // create a view with partial schema identifier
- ResultSet resultSet = statement.executeQuery("CREATE VIEW tmp.testview AS SELECT * FROM hive.kv");
- String result = JdbcAssert.toString(resultSet).trim();
- resultSet.close();
- String expected = "ok=true; summary=View 'testview' created successfully in 'dfs.tmp' schema";
- assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
- expected.equals(result));
-
- // query from view
- resultSet = statement.executeQuery("SELECT key FROM tmp.testview LIMIT 1");
- result = JdbcAssert.toString(resultSet).trim();
- resultSet.close();
- expected = "key=1";
- assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
- expected.equals(result));
-
- // change the default schema and query
- statement.executeQuery("USE dfs.tmp");
- resultSet = statement.executeQuery("SELECT key FROM testview LIMIT 1");
- result = JdbcAssert.toString(resultSet).trim();
- resultSet.close();
- assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
- expected.equals(result));
-
- statement.executeQuery("drop view tmp.testview").close();
-
- statement.close();
- return null;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- });
- }
-
- @Test
public void testCaseWithNoElse() throws Exception {
JdbcAssert.withNoDefaultSchema()
.sql("SELECT employee_id, CASE WHEN employee_id < 100 THEN first_name END from cp.`employee.json` " +
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/0c3bad98/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
new file mode 100644
index 0000000..6591752
--- /dev/null
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestViews.java
@@ -0,0 +1,385 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.drill.jdbc.test;
+
+import com.google.common.base.Function;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+
+import static org.junit.Assert.assertTrue;
+
+/** Contains tests for creating/droping and using views in Drill. */
+public class TestViews extends TestJdbcQuery {
+
+ /** Helper test method for view tests */
+ private void testViewHelper(final String viewCreate, final String viewName,
+ final String viewQuery, final String queryResult) throws Exception{
+ JdbcAssert.withNoDefaultSchema().withConnection(new Function<Connection, Void>() {
+ public Void apply(Connection connection) {
+ try {
+ Statement statement = connection.createStatement();
+
+ // change default schema
+ statement.executeQuery("USE dfs.tmp");
+
+ // create view
+ ResultSet resultSet = statement.executeQuery(viewCreate);
+ String result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ String viewCreateResult = "ok=true; summary=View '" + viewName + "' created successfully in 'dfs.tmp' schema";
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, viewCreateResult),
+ viewCreateResult.equals(result));
+
+ // query from view
+ resultSet = statement.executeQuery(viewQuery);
+ result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, queryResult),
+ queryResult.equals(result));
+
+ statement.executeQuery("drop view " + viewName).close();
+
+ statement.close();
+ return null;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ });
+ }
+
+ @Test
+ public void testView1() throws Exception{
+ testViewHelper(
+ "CREATE VIEW testview1 AS SELECT * FROM cp.`region.json`",
+ "testview1",
+ "SELECT * FROM testview1 LIMIT 1",
+ "region_id=0; sales_city=None; sales_state_province=None; sales_district=No District; " +
+ "sales_region=No Region; sales_country=No Country; sales_district_id=0");
+ }
+
+ @Test
+ public void testView2() throws Exception{
+ testViewHelper(
+ "CREATE VIEW testview2 AS SELECT region_id, sales_city FROM cp.`region.json`",
+ "testview2",
+ "SELECT * FROM testview2 LIMIT 2",
+ "region_id=0; sales_city=None\nregion_id=1; sales_city=San Francisco");
+ }
+
+ @Test
+ public void testView3() throws Exception{
+ testViewHelper(
+ "CREATE VIEW testview3(regionid, salescity) AS SELECT region_id, sales_city FROM cp.`region.json`",
+ "testview3",
+ "SELECT * FROM testview3 LIMIT 2",
+ "regionid=0; salescity=None\nregionid=1; salescity=San Francisco");
+ }
+
+ @Test
+ @Ignore // See DRILL-595 - can't project columns from inner query.
+ public void testView4() throws Exception{
+ testViewHelper(
+ "CREATE VIEW testview1 AS SELECT * FROM cp.`region.json`",
+ "testview1",
+ "SELECT region_id, sales_city FROM testview1 LIMIT 2",
+ "");
+ }
+
+ @Test
+ public void testView5() throws Exception{
+ testViewHelper(
+ "CREATE VIEW testview2 AS SELECT region_id, sales_city FROM cp.`region.json`",
+ "testview2",
+ "SELECT region_id, sales_city FROM testview2 LIMIT 2",
+ "region_id=0; sales_city=None\nregion_id=1; sales_city=San Francisco");
+ }
+
+ @Test
+ public void testView6() throws Exception{
+ testViewHelper(
+ "CREATE VIEW testview2 AS SELECT region_id, sales_city FROM cp.`region.json`",
+ "testview2",
+ "SELECT sales_city FROM testview2 LIMIT 2",
+ "sales_city=None\nsales_city=San Francisco");
+ }
+
+ @Test
+ public void testView7() throws Exception{
+ testViewHelper(
+ "CREATE VIEW testview3(regionid, salescity) AS SELECT region_id, sales_city FROM cp.`region.json` LIMIT 2",
+ "testview3",
+ "SELECT regionid, salescity FROM testview3",
+ "regionid=0; salescity=None\nregionid=1; salescity=San Francisco");
+ }
+
+ @Test
+ public void testView8() throws Exception{
+ testViewHelper(
+ "CREATE VIEW testview3(regionid, salescity) AS " +
+ "SELECT region_id, sales_city FROM cp.`region.json` ORDER BY region_id DESC",
+ "testview3",
+ "SELECT regionid FROM testview3 LIMIT 2",
+ "regionid=109\nregionid=108");
+ }
+
+ @Test
+ @Ignore // Query on testview2 fails with CannotPlanException. Seems to be an issue with Union.
+ public void testView9() throws Exception{
+ testViewHelper(
+ "CREATE VIEW testview2 AS " +
+ "SELECT region_id FROM cp.`region.json` " +
+ "UNION " +
+ "SELECT employee_id FROM cp.`employee.json`",
+ "testview2",
+ "SELECT sales_city FROM testview2 LIMIT 2",
+ "sales_city=None\nsales_city=San Francisco");
+ }
+
+ @Test
+ public void testViewOnHiveTable1() throws Exception{
+ testViewHelper(
+ "CREATE VIEW hiveview AS SELECT * FROM hive.kv",
+ "hiveview",
+ "SELECT * FROM hiveview LIMIT 1",
+ "key=1; value= key_1");
+ }
+
+ @Test
+ public void testViewOnHiveTable2() throws Exception{
+ testViewHelper(
+ "CREATE VIEW hiveview AS SELECT * FROM hive.kv",
+ "hiveview",
+ "SELECT key, `value` FROM hiveview LIMIT 1",
+ "key=1; value= key_1");
+ }
+
+ @Test
+ public void testViewOnHiveTable3() throws Exception{
+ testViewHelper(
+ "CREATE VIEW hiveview AS SELECT * FROM hive.kv",
+ "hiveview",
+ "SELECT `value` FROM hiveview LIMIT 1",
+ "value= key_1");
+ }
+
+ @Test
+ public void testViewOnHiveTable4() throws Exception{
+ testViewHelper(
+ "CREATE VIEW hiveview AS SELECT key, `value` FROM hive.kv",
+ "hiveview",
+ "SELECT * FROM hiveview LIMIT 1",
+ "key=1; value= key_1");
+ }
+
+ @Test
+ public void testViewOnHiveTable5() throws Exception{
+ testViewHelper(
+ "CREATE VIEW hiveview AS SELECT key, `value` FROM hive.kv",
+ "hiveview",
+ "SELECT key, `value` FROM hiveview LIMIT 1",
+ "key=1; value= key_1");
+ }
+
+ @Test
+ public void testDropView() throws Exception{
+ JdbcAssert.withNoDefaultSchema().withConnection(new Function<Connection, Void>() {
+ public Void apply(Connection connection) {
+ try {
+ Statement statement = connection.createStatement();
+
+ // change default schema
+ statement.executeQuery("USE dfs.tmp");
+
+ // create view
+ statement.executeQuery(
+ "CREATE VIEW testview3(regionid) AS SELECT region_id FROM cp.`region.json`");
+
+ // query from view
+ ResultSet resultSet = statement.executeQuery("SELECT regionid FROM testview3 LIMIT 1");
+ String result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ String expected = "regionid=0";
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
+ expected.equals(result));
+
+ resultSet = statement.executeQuery("DROP VIEW testview3");
+ result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ expected = "ok=true; summary=View 'testview3' deleted successfully from 'dfs.tmp' schema";
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
+ expected.equals(result));
+
+ statement.close();
+ return null;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ });
+ }
+
+ @Test
+ public void testInfoSchemaWithView() throws Exception{
+ JdbcAssert.withNoDefaultSchema().withConnection(new Function<Connection, Void>() {
+ public Void apply(Connection connection) {
+ try {
+ Statement statement = connection.createStatement();
+
+ // change default schema
+ statement.executeQuery("USE dfs.tmp");
+
+ // create view
+ statement.executeQuery(
+ "CREATE VIEW testview3 AS SELECT * FROM hive.kv");
+
+ // show tables on view
+ ResultSet resultSet = statement.executeQuery("SHOW TABLES like 'testview3'");
+ String result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ String expected = "TABLE_SCHEMA=dfs.tmp; TABLE_NAME=testview3";
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
+ expected.equals(result));
+
+ // test record in INFORMATION_SCHEMA.VIEWS
+ resultSet = statement.executeQuery("SELECT * FROM INFORMATION_SCHEMA.VIEWS " +
+ "WHERE TABLE_NAME = 'testview3'");
+ result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ expected = "TABLE_CATALOG=DRILL; TABLE_SCHEMA=dfs.tmp; TABLE_NAME=testview3; VIEW_DEFINITION=SELECT *\nFROM `hive`.`kv`";
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
+ expected.equals(result));
+
+ // test record in INFORMATION_SCHEMA.TABLES
+ resultSet = statement.executeQuery("SELECT * FROM INFORMATION_SCHEMA.`TABLES` " +
+ "WHERE TABLE_NAME = 'testview3'");
+ result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ expected = "TABLE_CATALOG=DRILL; TABLE_SCHEMA=dfs.tmp; TABLE_NAME=testview3; TABLE_TYPE=VIEW";
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
+ expected.equals(result));
+
+ // describe a view
+ resultSet = statement.executeQuery("DESCRIBE dfs.tmp.testview3");
+ result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ expected =
+ "COLUMN_NAME=key; DATA_TYPE=INTEGER; IS_NULLABLE=NO\n" +
+ "COLUMN_NAME=value; DATA_TYPE=VARCHAR; IS_NULLABLE=NO";
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
+ expected.equals(result));
+
+ statement.executeQuery("drop view testview3").close();
+
+ statement.close();
+ return null;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ });
+ }
+
+ @Test
+ public void testViewWithFullSchemaIdentifier() throws Exception{
+ JdbcAssert.withNoDefaultSchema().withConnection(new Function<Connection, Void>() {
+ public Void apply(Connection connection) {
+ try {
+ Statement statement = connection.createStatement();
+
+ // change default schema
+ statement.executeQuery("USE cp");
+
+ // create a view with full schema identifier
+ ResultSet resultSet = statement.executeQuery("CREATE VIEW dfs.tmp.testview AS SELECT * FROM hive.kv");
+ String result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ String expected = "ok=true; summary=View 'testview' created successfully in 'dfs.tmp' schema";
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
+ expected.equals(result));
+
+ // query from view
+ resultSet = statement.executeQuery("SELECT key FROM dfs.tmp.testview LIMIT 1");
+ result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ expected = "key=1";
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
+ expected.equals(result));
+
+ statement.executeQuery("drop view dfs.tmp.testview").close();
+
+ statement.executeQuery("drop view dfs.tmp.testview").close();
+
+ statement.close();
+ return null;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ });
+ }
+
+ @Test
+ public void testViewWithPartialSchemaIdentifier() throws Exception{
+ JdbcAssert.withNoDefaultSchema().withConnection(new Function<Connection, Void>() {
+ public Void apply(Connection connection) {
+ try {
+ Statement statement = connection.createStatement();
+
+ // change default schema
+ statement.executeQuery("USE dfs");
+
+ // create a view with partial schema identifier
+ ResultSet resultSet = statement.executeQuery("CREATE VIEW tmp.testview AS SELECT * FROM hive.kv");
+ String result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ String expected = "ok=true; summary=View 'testview' created successfully in 'dfs.tmp' schema";
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
+ expected.equals(result));
+
+ // query from view
+ resultSet = statement.executeQuery("SELECT key FROM tmp.testview LIMIT 1");
+ result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ expected = "key=1";
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
+ expected.equals(result));
+
+ // change the default schema and query
+ statement.executeQuery("USE dfs.tmp");
+ resultSet = statement.executeQuery("SELECT key FROM testview LIMIT 1");
+ result = JdbcAssert.toString(resultSet).trim();
+ resultSet.close();
+ assertTrue(String.format("Generated string:\n%s\ndoes not match:\n%s", result, expected),
+ expected.equals(result));
+
+ statement.executeQuery("drop view tmp.testview").close();
+
+ statement.close();
+ return null;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ });
+ }
+}