From 0fec24adc7f3910faedeae8b43ebc40e9838f574 Mon Sep 17 00:00:00 2001 From: Rui Li Date: Mon, 19 Apr 2021 13:42:53 +0800 Subject: [PATCH 1/2] [FLINK-22341][hive] Fix describe table for hive dialect --- .../hive/parse/HiveParserDDLSemanticAnalyzer.java | 2 +- .../flink/connectors/hive/HiveDialectITCase.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/table/planner/delegation/hive/parse/HiveParserDDLSemanticAnalyzer.java b/flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/table/planner/delegation/hive/parse/HiveParserDDLSemanticAnalyzer.java index 7a89ae10254c6..e9f6ef5723484 100644 --- a/flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/table/planner/delegation/hive/parse/HiveParserDDLSemanticAnalyzer.java +++ b/flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/table/planner/delegation/hive/parse/HiveParserDDLSemanticAnalyzer.java @@ -1153,7 +1153,7 @@ private Serializable analyzeDescribeTable(HiveParserASTNode ast) throws Semantic if (partSpec != null) { handleUnsupportedOperation("DESCRIBE PARTITION is not supported"); } - if (colPath != null) { + if (!colPath.equals(tableName)) { handleUnsupportedOperation("DESCRIBE COLUMNS is not supported"); } diff --git a/flink-connectors/flink-connector-hive/src/test/java/org/apache/flink/connectors/hive/HiveDialectITCase.java b/flink-connectors/flink-connector-hive/src/test/java/org/apache/flink/connectors/hive/HiveDialectITCase.java index 0b56b1bb84823..b5492934cb3bd 100644 --- a/flink-connectors/flink-connector-hive/src/test/java/org/apache/flink/connectors/hive/HiveDialectITCase.java +++ b/flink-connectors/flink-connector-hive/src/test/java/org/apache/flink/connectors/hive/HiveDialectITCase.java @@ -255,6 +255,20 @@ public void testCreateTable() throws Exception { tableEnv.executeSql("create table if not exists tbl5 (m map)"); hiveTable = hiveCatalog.getHiveTable(new ObjectPath("default", "tbl5")); assertEquals(createdTimeForTableExists, hiveTable.getCreateTime()); + + // test describe table + assertEquals( + 3, + CollectionUtil.iteratorToList(tableEnv.executeSql("desc tbl1").collect()).size()); + assertEquals( + 1, + CollectionUtil.iteratorToList(tableEnv.executeSql("describe tbl2").collect()) + .size()); + assertEquals( + 3, + CollectionUtil.iteratorToList( + tableEnv.executeSql("describe extended tbl3").collect()) + .size()); } @Test From 63aa785ba9d47a0f5d437cd77dd112a7026622f4 Mon Sep 17 00:00:00 2001 From: Rui Li Date: Thu, 22 Apr 2021 14:07:01 +0800 Subject: [PATCH 2/2] assert parsed operation in test --- .../connectors/hive/HiveDialectITCase.java | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/flink-connectors/flink-connector-hive/src/test/java/org/apache/flink/connectors/hive/HiveDialectITCase.java b/flink-connectors/flink-connector-hive/src/test/java/org/apache/flink/connectors/hive/HiveDialectITCase.java index b5492934cb3bd..43d1099d9a045 100644 --- a/flink-connectors/flink-connector-hive/src/test/java/org/apache/flink/connectors/hive/HiveDialectITCase.java +++ b/flink-connectors/flink-connector-hive/src/test/java/org/apache/flink/connectors/hive/HiveDialectITCase.java @@ -28,10 +28,12 @@ import org.apache.flink.table.api.internal.TableEnvironmentInternal; import org.apache.flink.table.catalog.CatalogPartitionSpec; import org.apache.flink.table.catalog.CatalogTable; +import org.apache.flink.table.catalog.ObjectIdentifier; import org.apache.flink.table.catalog.ObjectPath; import org.apache.flink.table.catalog.hive.HiveCatalog; import org.apache.flink.table.catalog.hive.HiveTestUtils; import org.apache.flink.table.delegation.Parser; +import org.apache.flink.table.operations.DescribeTableOperation; import org.apache.flink.table.operations.command.ClearOperation; import org.apache.flink.table.operations.command.HelpOperation; import org.apache.flink.table.operations.command.QuitOperation; @@ -257,18 +259,25 @@ public void testCreateTable() throws Exception { assertEquals(createdTimeForTableExists, hiveTable.getCreateTime()); // test describe table + Parser parser = ((TableEnvironmentInternal) tableEnv).getParser(); + DescribeTableOperation operation = + (DescribeTableOperation) parser.parse("desc tbl1").get(0); + assertFalse(operation.isExtended()); assertEquals( - 3, - CollectionUtil.iteratorToList(tableEnv.executeSql("desc tbl1").collect()).size()); + ObjectIdentifier.of(hiveCatalog.getName(), "default", "tbl1"), + operation.getSqlIdentifier()); + + operation = (DescribeTableOperation) parser.parse("describe default.tbl2").get(0); + assertFalse(operation.isExtended()); assertEquals( - 1, - CollectionUtil.iteratorToList(tableEnv.executeSql("describe tbl2").collect()) - .size()); + ObjectIdentifier.of(hiveCatalog.getName(), "default", "tbl2"), + operation.getSqlIdentifier()); + + operation = (DescribeTableOperation) parser.parse("describe extended tbl3").get(0); + assertTrue(operation.isExtended()); assertEquals( - 3, - CollectionUtil.iteratorToList( - tableEnv.executeSql("describe extended tbl3").collect()) - .size()); + ObjectIdentifier.of(hiveCatalog.getName(), "default", "tbl3"), + operation.getSqlIdentifier()); } @Test