You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by so...@apache.org on 2019/05/03 22:46:28 UTC
[drill] 02/08: DRILL-7167: Implemented DESCRIBE TABLE statement
This is an automated email from the ASF dual-hosted git repository.
sorabh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/drill.git
commit 878cfc033de4343e23f1422bb8845d5c6d892618
Author: Dmytriy Grinchenko <dm...@gmail.com>
AuthorDate: Fri Apr 12 10:24:17 2019 +0300
DRILL-7167: Implemented DESCRIBE TABLE statement
- altered parser implementation to honor DESCRIBE TABLE syntax
- extended test coverage to check the new statement
closes #1747
---
.../src/main/codegen/includes/parserImpls.ftl | 3 +-
.../org/apache/drill/exec/sql/TestInfoSchema.java | 62 +++++++++++++++++++++-
2 files changed, 63 insertions(+), 2 deletions(-)
diff --git a/exec/java-exec/src/main/codegen/includes/parserImpls.ftl b/exec/java-exec/src/main/codegen/includes/parserImpls.ftl
index 9ba92f2..25ee72b 100644
--- a/exec/java-exec/src/main/codegen/includes/parserImpls.ftl
+++ b/exec/java-exec/src/main/codegen/includes/parserImpls.ftl
@@ -106,7 +106,7 @@ SqlNode SqlShowSchemas() :
/**
* Parses statement
- * { DESCRIBE | DESC } tblname [col_name | wildcard ]
+ * { DESCRIBE | DESC } [TABLE] tblname [col_name | wildcard ]
*/
SqlNode SqlDescribeTable() :
{
@@ -117,6 +117,7 @@ SqlNode SqlDescribeTable() :
}
{
(<DESCRIBE> | <DESC>) { pos = getPos(); }
+ (<TABLE>)?
table = CompoundIdentifier()
(
column = CompoundIdentifier()
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestInfoSchema.java b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestInfoSchema.java
index ee89c5c..f437776 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestInfoSchema.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestInfoSchema.java
@@ -184,6 +184,16 @@ public class TestInfoSchema extends BaseTestQuery {
}
@Test
+ public void describeTableWithTableKeyword() throws Exception {
+ test("USE INFORMATION_SCHEMA");
+ testBuilder()
+ .sqlQuery("DESCRIBE TABLE CATALOGS")
+ .unOrdered()
+ .sqlBaselineQuery("DESCRIBE CATALOGS")
+ .go();
+ }
+
+ @Test
public void describeTableWithSchema() throws Exception{
testBuilder()
.sqlQuery("DESCRIBE INFORMATION_SCHEMA.`TABLES`")
@@ -197,6 +207,15 @@ public class TestInfoSchema extends BaseTestQuery {
}
@Test
+ public void describeTableWithSchemaAndTableKeyword() throws Exception {
+ testBuilder()
+ .sqlQuery("DESCRIBE TABLE INFORMATION_SCHEMA.`TABLES`")
+ .unOrdered()
+ .sqlBaselineQuery("DESCRIBE INFORMATION_SCHEMA.`TABLES`")
+ .go();
+ }
+
+ @Test
public void describeWhenSameTableNameExistsInMultipleSchemas() throws Exception{
try {
test("USE dfs.tmp");
@@ -220,7 +239,29 @@ public class TestInfoSchema extends BaseTestQuery {
.baselineValues("TABLE_TYPE", "CHARACTER VARYING", "NO")
.go();
} finally {
- test("DROP VIEW dfs.tmp.`TABLES`");
+ test("DROP VIEW IF EXISTS dfs.tmp.`TABLES`");
+ }
+ }
+
+ @Test
+ public void describeWhenSameTableNameExistsInMultipleSchemasWithTableKeyword() throws Exception {
+ try {
+ test("USE dfs.tmp");
+ test("CREATE OR REPLACE VIEW `TABLES` AS SELECT full_name FROM cp.`employee.json`");
+
+ testBuilder()
+ .sqlQuery("DESCRIBE TABLE `TABLES`")
+ .unOrdered()
+ .sqlBaselineQuery("DESCRIBE `TABLES`")
+ .go();
+
+ testBuilder()
+ .sqlQuery("DESCRIBE TABLE INFORMATION_SCHEMA.`TABLES`")
+ .unOrdered()
+ .sqlBaselineQuery("DESCRIBE INFORMATION_SCHEMA.`TABLES`")
+ .go();
+ } finally {
+ test("DROP VIEW IF EXISTS dfs.tmp.`TABLES`");
}
}
@@ -236,6 +277,16 @@ public class TestInfoSchema extends BaseTestQuery {
}
@Test
+ public void describeTableWithColumnNameAndTableKeyword() throws Exception {
+ test("USE INFORMATION_SCHEMA");
+ testBuilder()
+ .sqlQuery("DESCRIBE TABLE `TABLES` TABLE_CATALOG")
+ .unOrdered()
+ .sqlBaselineQuery("DESCRIBE `TABLES` TABLE_CATALOG")
+ .go();
+ }
+
+ @Test
public void describeTableWithSchemaAndColumnName() throws Exception{
testBuilder()
.sqlQuery("DESCRIBE INFORMATION_SCHEMA.`TABLES` TABLE_CATALOG")
@@ -246,6 +297,15 @@ public class TestInfoSchema extends BaseTestQuery {
}
@Test
+ public void describeTableWithSchemaAndColumnNameAndTableKeyword() throws Exception {
+ testBuilder()
+ .sqlQuery("DESCRIBE TABLE INFORMATION_SCHEMA.`TABLES` TABLE_CATALOG")
+ .unOrdered()
+ .sqlBaselineQuery("DESCRIBE INFORMATION_SCHEMA.`TABLES` TABLE_CATALOG")
+ .go();
+ }
+
+ @Test
public void describeTableWithColQualifier() throws Exception{
testBuilder()
.sqlQuery("DESCRIBE COLUMNS 'TABLE%'")