diff --git ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseAnalyzer.java index b460811b4c..6b4860b9e1 100644 --- ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseAnalyzer.java @@ -56,6 +56,6 @@ public void analyzeInternal(ASTNode root) throws SemanticException { rootTasks.add(task); task.setFetchSource(true); - setFetchTask(createFetchTask(DescDatabaseDesc.DESC_DATABASE_SCHEMA)); + setFetchTask(createFetchTask(desc.getSchema())); } } diff --git ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseDesc.java ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseDesc.java index b92ed21cad..09751eebd7 100644 --- ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseDesc.java +++ ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseDesc.java @@ -33,21 +33,26 @@ private static final long serialVersionUID = 1L; public static final String DESC_DATABASE_SCHEMA = + "db_name,comment,location,managedLocation,owner_name,owner_type#string:string:string:string:string:string"; + + public static final String DESC_DATABASE_SCHEMA_EXTENDED = "db_name,comment,location,managedLocation,owner_name,owner_type,parameters#" + "string:string:string:string:string:string:string"; private final String resFile; private final String dbName; - private final boolean isExt; + private final boolean isExtended; - public DescDatabaseDesc(Path resFile, String dbName, boolean isExt) { + public DescDatabaseDesc(Path resFile, String dbName, boolean isExtended) { this.resFile = resFile.toString(); this.dbName = dbName; - this.isExt = isExt; + this.isExtended = isExtended; } - public boolean isExt() { - return isExt; + @Explain(displayName = "extended", displayOnlyOnTrue=true, + explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED }) + public boolean isExtended() { + return isExtended; } @Explain(displayName = "database", explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED }) @@ -59,4 +64,8 @@ public String getDatabaseName() { public String getResFile() { return resFile; } + + public String getSchema() { + return isExtended ? DESC_DATABASE_SCHEMA_EXTENDED : DESC_DATABASE_SCHEMA; + } } diff --git ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseOperation.java ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseOperation.java index 406397dbb5..52b7eb95ca 100644 --- ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseOperation.java +++ ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseOperation.java @@ -48,7 +48,7 @@ public int execute() throws HiveException { } SortedMap params = null; - if (desc.isExt()) { + if (desc.isExtended()) { params = new TreeMap<>(database.getParameters()); } diff --git ql/src/test/queries/clientpositive/describe_database.q ql/src/test/queries/clientpositive/describe_database.q index 961bf5563b..15bbca024f 100644 --- ql/src/test/queries/clientpositive/describe_database.q +++ ql/src/test/queries/clientpositive/describe_database.q @@ -1,4 +1,10 @@ -create database test_db with dbproperties ('key1' = 'value1', 'key2' = 'value2'); -desc database extended test_db; -desc schema extended test_db; -drop database test_db; +CREATE DATABASE test_db WITH dbproperties ('key1' = 'value1', 'key2' = 'value2'); + +EXPLAIN DESC DATABASE test_db; +DESC DATABASE test_db; + +EXPLAIN DESC DATABASE EXTENDED test_db; +DESC DATABASE EXTENDED test_db; +DESC SCHEMA EXTENDED test_db; + +DROP DATABASE test_db; diff --git ql/src/test/results/clientpositive/llap/authorization_owner_actions_db.q.out ql/src/test/results/clientpositive/llap/authorization_owner_actions_db.q.out index bc4805143f..0267f8680d 100644 --- ql/src/test/results/clientpositive/llap/authorization_owner_actions_db.q.out +++ ql/src/test/results/clientpositive/llap/authorization_owner_actions_db.q.out @@ -28,7 +28,7 @@ PREHOOK: Input: database:testdb POSTHOOK: query: desc database testdb POSTHOOK: type: DESCDATABASE POSTHOOK: Input: database:testdb -testdb location/in/test testrole ROLE +testdb location/in/test testrole ROLE PREHOOK: query: use testdb PREHOOK: type: SWITCHDATABASE PREHOOK: Input: database:testdb diff --git ql/src/test/results/clientpositive/llap/describe_database.q.out ql/src/test/results/clientpositive/llap/describe_database.q.out index 8d1e44a851..6ceea5d517 100644 --- ql/src/test/results/clientpositive/llap/describe_database.q.out +++ ql/src/test/results/clientpositive/llap/describe_database.q.out @@ -1,28 +1,78 @@ -PREHOOK: query: create database test_db with dbproperties ('key1' = 'value1', 'key2' = 'value2') +PREHOOK: query: CREATE DATABASE test_db WITH dbproperties ('key1' = 'value1', 'key2' = 'value2') PREHOOK: type: CREATEDATABASE PREHOOK: Output: database:test_db -POSTHOOK: query: create database test_db with dbproperties ('key1' = 'value1', 'key2' = 'value2') +POSTHOOK: query: CREATE DATABASE test_db WITH dbproperties ('key1' = 'value1', 'key2' = 'value2') POSTHOOK: type: CREATEDATABASE POSTHOOK: Output: database:test_db -PREHOOK: query: desc database extended test_db +PREHOOK: query: EXPLAIN DESC DATABASE test_db PREHOOK: type: DESCDATABASE PREHOOK: Input: database:test_db -POSTHOOK: query: desc database extended test_db +POSTHOOK: query: EXPLAIN DESC DATABASE test_db +POSTHOOK: type: DESCDATABASE +POSTHOOK: Input: database:test_db +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Describe Database + database: test_db + + Stage: Stage-1 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: DESC DATABASE test_db +PREHOOK: type: DESCDATABASE +PREHOOK: Input: database:test_db +POSTHOOK: query: DESC DATABASE test_db +POSTHOOK: type: DESCDATABASE +POSTHOOK: Input: database:test_db +test_db location/in/test hive_test_user USER +PREHOOK: query: EXPLAIN DESC DATABASE EXTENDED test_db +PREHOOK: type: DESCDATABASE +PREHOOK: Input: database:test_db +POSTHOOK: query: EXPLAIN DESC DATABASE EXTENDED test_db +POSTHOOK: type: DESCDATABASE +POSTHOOK: Input: database:test_db +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Describe Database + database: test_db + extended: true + + Stage: Stage-1 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: DESC DATABASE EXTENDED test_db +PREHOOK: type: DESCDATABASE +PREHOOK: Input: database:test_db +POSTHOOK: query: DESC DATABASE EXTENDED test_db POSTHOOK: type: DESCDATABASE POSTHOOK: Input: database:test_db test_db location/in/test hive_test_user USER {key1=value1, key2=value2} -PREHOOK: query: desc schema extended test_db +PREHOOK: query: DESC SCHEMA EXTENDED test_db PREHOOK: type: DESCDATABASE PREHOOK: Input: database:test_db -POSTHOOK: query: desc schema extended test_db +POSTHOOK: query: DESC SCHEMA EXTENDED test_db POSTHOOK: type: DESCDATABASE POSTHOOK: Input: database:test_db test_db location/in/test hive_test_user USER {key1=value1, key2=value2} -PREHOOK: query: drop database test_db +PREHOOK: query: DROP DATABASE test_db PREHOOK: type: DROPDATABASE PREHOOK: Input: database:test_db PREHOOK: Output: database:test_db -POSTHOOK: query: drop database test_db +POSTHOOK: query: DROP DATABASE test_db POSTHOOK: type: DROPDATABASE POSTHOOK: Input: database:test_db POSTHOOK: Output: database:test_db