diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index 0a34633fa4..54491f41e2 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -2774,7 +2774,7 @@ private int showTablesOrViews(Hive db, ShowTablesDesc showDesc) throws HiveExcep String dbName = showDesc.getDbName(); String pattern = showDesc.getPattern(); // if null, all tables/views are returned String resultsFile = showDesc.getResFile(); - TableType type = showDesc.getType(); // will be null for tables, VIRTUAL_VIEW for views + TableType type = showDesc.getType(); // null for tables, VIRTUAL_VIEW for views, MATERIALIZED_VIEW for MVs if (!db.databaseExists(dbName)) { throw new HiveException(ErrorMsg.DATABASE_NOT_EXISTS, dbName); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index 579f2df280..7961b2b912 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -423,6 +423,10 @@ public void analyzeInternal(ASTNode input) throws SemanticException { ctx.setResFile(ctx.getLocalTmpPath()); analyzeShowViews(ast); break; + case HiveParser.TOK_SHOWMATERIALIZEDVIEWS: + ctx.setResFile(ctx.getLocalTmpPath()); + analyzeShowMaterializedViews(ast); + break; case HiveParser.TOK_DESCFUNCTION: ctx.setResFile(ctx.getLocalTmpPath()); analyzeDescFunction(ast); @@ -2755,6 +2759,47 @@ private void analyzeShowViews(ASTNode ast) throws SemanticException { setFetchTask(createFetchTask(showViewsDesc.getSchema())); } + private void analyzeShowMaterializedViews(ASTNode ast) throws SemanticException { + ShowTablesDesc showMaterializedViewsDesc; + String dbName = SessionState.get().getCurrentDatabase(); + String materializedViewNames = null; + + if (ast.getChildCount() > 3) { + throw new SemanticException(ErrorMsg.GENERIC_ERROR.getMsg()); + } + + switch (ast.getChildCount()) { + case 1: // Uses a pattern + materializedViewNames = unescapeSQLString(ast.getChild(0).getText()); + showMaterializedViewsDesc = new ShowTablesDesc( + ctx.getResFile(), dbName, materializedViewNames, TableType.MATERIALIZED_VIEW); + break; + case 2: // Specifies a DB + assert (ast.getChild(0).getType() == HiveParser.TOK_FROM); + dbName = unescapeIdentifier(ast.getChild(1).getText()); + validateDatabase(dbName); + showMaterializedViewsDesc = new ShowTablesDesc(ctx.getResFile(), dbName); + showMaterializedViewsDesc.setType(TableType.MATERIALIZED_VIEW); + break; + case 3: // Uses a pattern and specifies a DB + assert (ast.getChild(0).getType() == HiveParser.TOK_FROM); + dbName = unescapeIdentifier(ast.getChild(1).getText()); + materializedViewNames = unescapeSQLString(ast.getChild(2).getText()); + validateDatabase(dbName); + showMaterializedViewsDesc = new ShowTablesDesc( + ctx.getResFile(), dbName, materializedViewNames, TableType.MATERIALIZED_VIEW); + break; + default: // No pattern or DB + showMaterializedViewsDesc = new ShowTablesDesc(ctx.getResFile(), dbName); + showMaterializedViewsDesc.setType(TableType.MATERIALIZED_VIEW); + break; + } + + rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), + showMaterializedViewsDesc), conf)); + setFetchTask(createFetchTask(showMaterializedViewsDesc.getSchema())); + } + /** * Add the task according to the parsed command tree. This is used for the CLI * command "LOCK TABLE ..;". diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g index 0bbd9be406..f5c162d80a 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g +++ ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g @@ -376,6 +376,7 @@ TOK_COL_NAME; TOK_URI_TYPE; TOK_SERVER_TYPE; TOK_SHOWVIEWS; +TOK_SHOWMATERIALIZEDVIEWS; TOK_START_TRANSACTION; TOK_ISOLATION_LEVEL; TOK_ISOLATION_SNAPSHOT; @@ -1723,6 +1724,7 @@ showStatement : KW_SHOW (KW_DATABASES|KW_SCHEMAS) (KW_LIKE showStmtIdentifier)? -> ^(TOK_SHOWDATABASES showStmtIdentifier?) | KW_SHOW KW_TABLES ((KW_FROM|KW_IN) db_name=identifier)? (KW_LIKE showStmtIdentifier|showStmtIdentifier)? -> ^(TOK_SHOWTABLES (TOK_FROM $db_name)? showStmtIdentifier?) | KW_SHOW KW_VIEWS ((KW_FROM|KW_IN) db_name=identifier)? (KW_LIKE showStmtIdentifier|showStmtIdentifier)? -> ^(TOK_SHOWVIEWS (TOK_FROM $db_name)? showStmtIdentifier?) + | KW_SHOW KW_MATERIALIZED KW_VIEWS ((KW_FROM|KW_IN) db_name=identifier)? (KW_LIKE showStmtIdentifier|showStmtIdentifier)? -> ^(TOK_SHOWMATERIALIZEDVIEWS (TOK_FROM $db_name)? showStmtIdentifier?) | KW_SHOW KW_COLUMNS (KW_FROM|KW_IN) tableName ((KW_FROM|KW_IN) db_name=identifier)? -> ^(TOK_SHOWCOLUMNS tableName $db_name?) | KW_SHOW KW_FUNCTIONS (KW_LIKE showFunctionIdentifier|showFunctionIdentifier)? -> ^(TOK_SHOWFUNCTIONS KW_LIKE? showFunctionIdentifier?) diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java index e704c73112..64d16750af 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java @@ -80,6 +80,7 @@ commandType.put(HiveParser.TOK_SHOWDBLOCKS, HiveOperation.SHOWLOCKS); commandType.put(HiveParser.TOK_SHOWCONF, HiveOperation.SHOWCONF); commandType.put(HiveParser.TOK_SHOWVIEWS, HiveOperation.SHOWVIEWS); + commandType.put(HiveParser.TOK_SHOWMATERIALIZEDVIEWS, HiveOperation.SHOWMATERIALIZEDVIEWS); commandType.put(HiveParser.TOK_CREATEFUNCTION, HiveOperation.CREATEFUNCTION); commandType.put(HiveParser.TOK_DROPFUNCTION, HiveOperation.DROPFUNCTION); commandType.put(HiveParser.TOK_RELOADFUNCTION, HiveOperation.RELOADFUNCTION); @@ -292,6 +293,7 @@ private static BaseSemanticAnalyzer getInternal(QueryState queryState, ASTNode t case HiveParser.TOK_ABORT_TRANSACTIONS: case HiveParser.TOK_SHOWCONF: case HiveParser.TOK_SHOWVIEWS: + case HiveParser.TOK_SHOWMATERIALIZEDVIEWS: case HiveParser.TOK_CREATEINDEX: case HiveParser.TOK_DROPINDEX: case HiveParser.TOK_ALTERTABLE_CLUSTER_SORT: diff --git ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java index 1ce1c76f37..61c5407897 100644 --- ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java +++ ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java @@ -76,6 +76,7 @@ SHOWLOCKS("SHOWLOCKS", null, null, true, false), SHOWCONF("SHOWCONF", null, null), SHOWVIEWS("SHOWVIEWS", null, null, true, false), + SHOWMATERIALIZEDVIEWS("SHOWMATERIALIZEDVIEWS", null, null, true, false), CREATEFUNCTION("CREATEFUNCTION", null, null), DROPFUNCTION("DROPFUNCTION", null, null), RELOADFUNCTION("RELOADFUNCTION", null, null), diff --git ql/src/test/queries/clientpositive/show_materialized_views.q ql/src/test/queries/clientpositive/show_materialized_views.q new file mode 100644 index 0000000000..bcd894a66e --- /dev/null +++ ql/src/test/queries/clientpositive/show_materialized_views.q @@ -0,0 +1,63 @@ +CREATE DATABASE test1; +CREATE DATABASE test2; + +USE test1; +CREATE TABLE shtb_test1(KEY INT, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE; +CREATE MATERIALIZED VIEW shtb_test1_view1 AS +SELECT * FROM shtb_test1 where KEY > 1000 and KEY < 2000; +CREATE MATERIALIZED VIEW shtb_test1_view2 ENABLE REWRITE AS +SELECT * FROM shtb_test1 where KEY > 100 and KEY < 200; +CREATE MATERIALIZED VIEW shtb_full_view2 ENABLE REWRITE AS +SELECT * FROM shtb_test1; + +USE test2; +CREATE TABLE shtb_test1(KEY INT, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE; +CREATE TABLE shtb_test2(KEY INT, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE; +CREATE MATERIALIZED VIEW shtb_test1_view1 AS +SELECT * FROM shtb_test1 where KEY > 1000 and KEY < 2000; +CREATE MATERIALIZED VIEW shtb_test2_view2 AS +SELECT * FROM shtb_test2 where KEY > 100 and KEY < 200; + +USE test1; +SHOW MATERIALIZED VIEWS; +SHOW MATERIALIZED VIEWS 'test_*'; +SHOW MATERIALIZED VIEWS '*view2'; +SHOW MATERIALIZED VIEWS LIKE 'test_view1|test_view2'; + +USE test2; +SHOW MATERIALIZED VIEWS 'shtb_*'; + +-- SHOW MATERIALIZED VIEWS basic syntax tests +USE default; +SHOW MATERIALIZED VIEWS FROM test1; +SHOW MATERIALIZED VIEWS FROM test2; +SHOW MATERIALIZED VIEWS IN test1; +SHOW MATERIALIZED VIEWS IN default; +SHOW MATERIALIZED VIEWS IN test1 "shtb_test_*"; +SHOW MATERIALIZED VIEWS IN test2 LIKE "nomatch"; + +-- SHOW MATERIALIZED VIEWS from a database with a name that requires escaping +CREATE DATABASE `database`; +USE `database`; +CREATE TABLE foo(a INT); +CREATE VIEW fooview AS +SELECT * FROM foo; +USE default; +SHOW MATERIALIZED VIEWS FROM `database` LIKE "fooview"; + +DROP MATERIALIZED VIEW fooview; +DROP TABLE foo; + +USE test1; +DROP MATERIALIZED VIEW shtb_test1_view1; +DROP MATERIALIZED VIEW shtb_test1_view2; +DROP MATERIALIZED VIEW shtb_full_view2; +DROP TABLE shtb_test1; +DROP DATABASE test1; + +USE test2; +DROP MATERIALIZED VIEW shtb_test1_view1; +DROP MATERIALIZED VIEW shtb_test2_view2; +DROP TABLE shtb_test1; +DROP TABLE shtb_test2; +DROP DATABASE test2; diff --git ql/src/test/results/clientpositive/show_materialized_views.q.out ql/src/test/results/clientpositive/show_materialized_views.q.out new file mode 100644 index 0000000000..39f5807a36 --- /dev/null +++ ql/src/test/results/clientpositive/show_materialized_views.q.out @@ -0,0 +1,328 @@ +PREHOOK: query: CREATE DATABASE test1 +PREHOOK: type: CREATEDATABASE +PREHOOK: Output: database:test1 +POSTHOOK: query: CREATE DATABASE test1 +POSTHOOK: type: CREATEDATABASE +POSTHOOK: Output: database:test1 +PREHOOK: query: CREATE DATABASE test2 +PREHOOK: type: CREATEDATABASE +PREHOOK: Output: database:test2 +POSTHOOK: query: CREATE DATABASE test2 +POSTHOOK: type: CREATEDATABASE +POSTHOOK: Output: database:test2 +PREHOOK: query: USE test1 +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:test1 +POSTHOOK: query: USE test1 +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:test1 +PREHOOK: query: CREATE TABLE shtb_test1(KEY INT, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:test1 +PREHOOK: Output: test1@shtb_test1 +POSTHOOK: query: CREATE TABLE shtb_test1(KEY INT, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:test1 +POSTHOOK: Output: test1@shtb_test1 +PREHOOK: query: CREATE MATERIALIZED VIEW shtb_test1_view1 AS +SELECT * FROM shtb_test1 where KEY > 1000 and KEY < 2000 +PREHOOK: type: CREATE_MATERIALIZED_VIEW +PREHOOK: Input: test1@shtb_test1 +PREHOOK: Output: database:test1 +PREHOOK: Output: test1@shtb_test1_view1 +POSTHOOK: query: CREATE MATERIALIZED VIEW shtb_test1_view1 AS +SELECT * FROM shtb_test1 where KEY > 1000 and KEY < 2000 +POSTHOOK: type: CREATE_MATERIALIZED_VIEW +POSTHOOK: Input: test1@shtb_test1 +POSTHOOK: Output: database:test1 +POSTHOOK: Output: test1@shtb_test1_view1 +PREHOOK: query: CREATE MATERIALIZED VIEW shtb_test1_view2 ENABLE REWRITE AS +SELECT * FROM shtb_test1 where KEY > 100 and KEY < 200 +PREHOOK: type: CREATE_MATERIALIZED_VIEW +PREHOOK: Input: test1@shtb_test1 +PREHOOK: Output: database:test1 +PREHOOK: Output: test1@shtb_test1_view2 +POSTHOOK: query: CREATE MATERIALIZED VIEW shtb_test1_view2 ENABLE REWRITE AS +SELECT * FROM shtb_test1 where KEY > 100 and KEY < 200 +POSTHOOK: type: CREATE_MATERIALIZED_VIEW +POSTHOOK: Input: test1@shtb_test1 +POSTHOOK: Output: database:test1 +POSTHOOK: Output: test1@shtb_test1_view2 +PREHOOK: query: CREATE MATERIALIZED VIEW shtb_full_view2 ENABLE REWRITE AS +SELECT * FROM shtb_test1 +PREHOOK: type: CREATE_MATERIALIZED_VIEW +PREHOOK: Input: test1@shtb_test1 +PREHOOK: Output: database:test1 +PREHOOK: Output: test1@shtb_full_view2 +POSTHOOK: query: CREATE MATERIALIZED VIEW shtb_full_view2 ENABLE REWRITE AS +SELECT * FROM shtb_test1 +POSTHOOK: type: CREATE_MATERIALIZED_VIEW +POSTHOOK: Input: test1@shtb_test1 +POSTHOOK: Output: database:test1 +POSTHOOK: Output: test1@shtb_full_view2 +PREHOOK: query: USE test2 +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:test2 +POSTHOOK: query: USE test2 +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:test2 +PREHOOK: query: CREATE TABLE shtb_test1(KEY INT, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:test2 +PREHOOK: Output: test2@shtb_test1 +POSTHOOK: query: CREATE TABLE shtb_test1(KEY INT, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:test2 +POSTHOOK: Output: test2@shtb_test1 +PREHOOK: query: CREATE TABLE shtb_test2(KEY INT, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:test2 +PREHOOK: Output: test2@shtb_test2 +POSTHOOK: query: CREATE TABLE shtb_test2(KEY INT, VALUE STRING) PARTITIONED BY(ds STRING) STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:test2 +POSTHOOK: Output: test2@shtb_test2 +PREHOOK: query: CREATE MATERIALIZED VIEW shtb_test1_view1 AS +SELECT * FROM shtb_test1 where KEY > 1000 and KEY < 2000 +PREHOOK: type: CREATE_MATERIALIZED_VIEW +PREHOOK: Input: test2@shtb_test1 +PREHOOK: Output: database:test2 +PREHOOK: Output: test2@shtb_test1_view1 +POSTHOOK: query: CREATE MATERIALIZED VIEW shtb_test1_view1 AS +SELECT * FROM shtb_test1 where KEY > 1000 and KEY < 2000 +POSTHOOK: type: CREATE_MATERIALIZED_VIEW +POSTHOOK: Input: test2@shtb_test1 +POSTHOOK: Output: database:test2 +POSTHOOK: Output: test2@shtb_test1_view1 +PREHOOK: query: CREATE MATERIALIZED VIEW shtb_test2_view2 AS +SELECT * FROM shtb_test2 where KEY > 100 and KEY < 200 +PREHOOK: type: CREATE_MATERIALIZED_VIEW +PREHOOK: Input: test2@shtb_test2 +PREHOOK: Output: database:test2 +PREHOOK: Output: test2@shtb_test2_view2 +POSTHOOK: query: CREATE MATERIALIZED VIEW shtb_test2_view2 AS +SELECT * FROM shtb_test2 where KEY > 100 and KEY < 200 +POSTHOOK: type: CREATE_MATERIALIZED_VIEW +POSTHOOK: Input: test2@shtb_test2 +POSTHOOK: Output: database:test2 +POSTHOOK: Output: test2@shtb_test2_view2 +PREHOOK: query: USE test1 +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:test1 +POSTHOOK: query: USE test1 +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:test1 +PREHOOK: query: SHOW MATERIALIZED VIEWS +PREHOOK: type: SHOWMATERIALIZEDVIEWS +POSTHOOK: query: SHOW MATERIALIZED VIEWS +POSTHOOK: type: SHOWMATERIALIZEDVIEWS +shtb_full_view2 +shtb_test1_view1 +shtb_test1_view2 +PREHOOK: query: SHOW MATERIALIZED VIEWS 'test_*' +PREHOOK: type: SHOWMATERIALIZEDVIEWS +POSTHOOK: query: SHOW MATERIALIZED VIEWS 'test_*' +POSTHOOK: type: SHOWMATERIALIZEDVIEWS +PREHOOK: query: SHOW MATERIALIZED VIEWS '*view2' +PREHOOK: type: SHOWMATERIALIZEDVIEWS +POSTHOOK: query: SHOW MATERIALIZED VIEWS '*view2' +POSTHOOK: type: SHOWMATERIALIZEDVIEWS +shtb_full_view2 +shtb_test1_view2 +PREHOOK: query: SHOW MATERIALIZED VIEWS LIKE 'test_view1|test_view2' +PREHOOK: type: SHOWMATERIALIZEDVIEWS +POSTHOOK: query: SHOW MATERIALIZED VIEWS LIKE 'test_view1|test_view2' +POSTHOOK: type: SHOWMATERIALIZEDVIEWS +PREHOOK: query: USE test2 +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:test2 +POSTHOOK: query: USE test2 +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:test2 +PREHOOK: query: SHOW MATERIALIZED VIEWS 'shtb_*' +PREHOOK: type: SHOWMATERIALIZEDVIEWS +POSTHOOK: query: SHOW MATERIALIZED VIEWS 'shtb_*' +POSTHOOK: type: SHOWMATERIALIZEDVIEWS +shtb_test1_view1 +shtb_test2_view2 +PREHOOK: query: USE default +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:default +POSTHOOK: query: USE default +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:default +PREHOOK: query: SHOW MATERIALIZED VIEWS FROM test1 +PREHOOK: type: SHOWMATERIALIZEDVIEWS +POSTHOOK: query: SHOW MATERIALIZED VIEWS FROM test1 +POSTHOOK: type: SHOWMATERIALIZEDVIEWS +shtb_full_view2 +shtb_test1_view1 +shtb_test1_view2 +PREHOOK: query: SHOW MATERIALIZED VIEWS FROM test2 +PREHOOK: type: SHOWMATERIALIZEDVIEWS +POSTHOOK: query: SHOW MATERIALIZED VIEWS FROM test2 +POSTHOOK: type: SHOWMATERIALIZEDVIEWS +shtb_test1_view1 +shtb_test2_view2 +PREHOOK: query: SHOW MATERIALIZED VIEWS IN test1 +PREHOOK: type: SHOWMATERIALIZEDVIEWS +POSTHOOK: query: SHOW MATERIALIZED VIEWS IN test1 +POSTHOOK: type: SHOWMATERIALIZEDVIEWS +shtb_full_view2 +shtb_test1_view1 +shtb_test1_view2 +PREHOOK: query: SHOW MATERIALIZED VIEWS IN default +PREHOOK: type: SHOWMATERIALIZEDVIEWS +POSTHOOK: query: SHOW MATERIALIZED VIEWS IN default +POSTHOOK: type: SHOWMATERIALIZEDVIEWS +PREHOOK: query: SHOW MATERIALIZED VIEWS IN test1 "shtb_test_*" +PREHOOK: type: SHOWMATERIALIZEDVIEWS +POSTHOOK: query: SHOW MATERIALIZED VIEWS IN test1 "shtb_test_*" +POSTHOOK: type: SHOWMATERIALIZEDVIEWS +PREHOOK: query: SHOW MATERIALIZED VIEWS IN test2 LIKE "nomatch" +PREHOOK: type: SHOWMATERIALIZEDVIEWS +POSTHOOK: query: SHOW MATERIALIZED VIEWS IN test2 LIKE "nomatch" +POSTHOOK: type: SHOWMATERIALIZEDVIEWS +PREHOOK: query: CREATE DATABASE `database` +PREHOOK: type: CREATEDATABASE +PREHOOK: Output: database:database +POSTHOOK: query: CREATE DATABASE `database` +POSTHOOK: type: CREATEDATABASE +POSTHOOK: Output: database:database +PREHOOK: query: USE `database` +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:database +POSTHOOK: query: USE `database` +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:database +PREHOOK: query: CREATE TABLE foo(a INT) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:database +PREHOOK: Output: database@foo +POSTHOOK: query: CREATE TABLE foo(a INT) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:database +POSTHOOK: Output: database@foo +PREHOOK: query: CREATE VIEW fooview AS +SELECT * FROM foo +PREHOOK: type: CREATEVIEW +PREHOOK: Input: database@foo +PREHOOK: Output: database:database +PREHOOK: Output: database@fooview +POSTHOOK: query: CREATE VIEW fooview AS +SELECT * FROM foo +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: database@foo +POSTHOOK: Output: database:database +POSTHOOK: Output: database@fooview +POSTHOOK: Lineage: fooview.a SIMPLE [(foo)foo.FieldSchema(name:a, type:int, comment:null), ] +PREHOOK: query: USE default +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:default +POSTHOOK: query: USE default +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:default +PREHOOK: query: SHOW MATERIALIZED VIEWS FROM `database` LIKE "fooview" +PREHOOK: type: SHOWMATERIALIZEDVIEWS +POSTHOOK: query: SHOW MATERIALIZED VIEWS FROM `database` LIKE "fooview" +POSTHOOK: type: SHOWMATERIALIZEDVIEWS +PREHOOK: query: DROP MATERIALIZED VIEW fooview +PREHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: query: DROP MATERIALIZED VIEW fooview +POSTHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: query: DROP TABLE foo +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE foo +POSTHOOK: type: DROPTABLE +PREHOOK: query: USE test1 +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:test1 +POSTHOOK: query: USE test1 +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:test1 +PREHOOK: query: DROP MATERIALIZED VIEW shtb_test1_view1 +PREHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: Input: test1@shtb_test1_view1 +PREHOOK: Output: test1@shtb_test1_view1 +POSTHOOK: query: DROP MATERIALIZED VIEW shtb_test1_view1 +POSTHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: Input: test1@shtb_test1_view1 +POSTHOOK: Output: test1@shtb_test1_view1 +PREHOOK: query: DROP MATERIALIZED VIEW shtb_test1_view2 +PREHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: Input: test1@shtb_test1_view2 +PREHOOK: Output: test1@shtb_test1_view2 +POSTHOOK: query: DROP MATERIALIZED VIEW shtb_test1_view2 +POSTHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: Input: test1@shtb_test1_view2 +POSTHOOK: Output: test1@shtb_test1_view2 +PREHOOK: query: DROP MATERIALIZED VIEW shtb_full_view2 +PREHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: Input: test1@shtb_full_view2 +PREHOOK: Output: test1@shtb_full_view2 +POSTHOOK: query: DROP MATERIALIZED VIEW shtb_full_view2 +POSTHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: Input: test1@shtb_full_view2 +POSTHOOK: Output: test1@shtb_full_view2 +PREHOOK: query: DROP TABLE shtb_test1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: test1@shtb_test1 +PREHOOK: Output: test1@shtb_test1 +POSTHOOK: query: DROP TABLE shtb_test1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: test1@shtb_test1 +POSTHOOK: Output: test1@shtb_test1 +PREHOOK: query: DROP DATABASE test1 +PREHOOK: type: DROPDATABASE +PREHOOK: Input: database:test1 +PREHOOK: Output: database:test1 +POSTHOOK: query: DROP DATABASE test1 +POSTHOOK: type: DROPDATABASE +POSTHOOK: Input: database:test1 +POSTHOOK: Output: database:test1 +PREHOOK: query: USE test2 +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:test2 +POSTHOOK: query: USE test2 +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:test2 +PREHOOK: query: DROP MATERIALIZED VIEW shtb_test1_view1 +PREHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: Input: test2@shtb_test1_view1 +PREHOOK: Output: test2@shtb_test1_view1 +POSTHOOK: query: DROP MATERIALIZED VIEW shtb_test1_view1 +POSTHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: Input: test2@shtb_test1_view1 +POSTHOOK: Output: test2@shtb_test1_view1 +PREHOOK: query: DROP MATERIALIZED VIEW shtb_test2_view2 +PREHOOK: type: DROP_MATERIALIZED_VIEW +PREHOOK: Input: test2@shtb_test2_view2 +PREHOOK: Output: test2@shtb_test2_view2 +POSTHOOK: query: DROP MATERIALIZED VIEW shtb_test2_view2 +POSTHOOK: type: DROP_MATERIALIZED_VIEW +POSTHOOK: Input: test2@shtb_test2_view2 +POSTHOOK: Output: test2@shtb_test2_view2 +PREHOOK: query: DROP TABLE shtb_test1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: test2@shtb_test1 +PREHOOK: Output: test2@shtb_test1 +POSTHOOK: query: DROP TABLE shtb_test1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: test2@shtb_test1 +POSTHOOK: Output: test2@shtb_test1 +PREHOOK: query: DROP TABLE shtb_test2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: test2@shtb_test2 +PREHOOK: Output: test2@shtb_test2 +POSTHOOK: query: DROP TABLE shtb_test2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: test2@shtb_test2 +POSTHOOK: Output: test2@shtb_test2 +PREHOOK: query: DROP DATABASE test2 +PREHOOK: type: DROPDATABASE +PREHOOK: Input: database:test2 +PREHOOK: Output: database:test2 +POSTHOOK: query: DROP DATABASE test2 +POSTHOOK: type: DROPDATABASE +POSTHOOK: Input: database:test2 +POSTHOOK: Output: database:test2