diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SubQueryUtils.java ql/src/java/org/apache/hadoop/hive/ql/parse/SubQueryUtils.java index f2de4e467e..d8f2f5ffa8 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SubQueryUtils.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SubQueryUtils.java @@ -519,7 +519,7 @@ static ASTNode buildNotInNullCheckQuery(ASTNode subQueryAST, List corrExprs, RowResolver sqRR) { - subQueryAST = (ASTNode) ParseDriver.adaptor.dupTree(subQueryAST); + subQueryAST = (ASTNode) SubQueryUtils.adaptor.dupTree(subQueryAST); ASTNode qry = (ASTNode) ParseDriver.adaptor.create(HiveParser.TOK_QUERY, "TOK_QUERY"); @@ -628,7 +628,7 @@ static ASTNode buildNotInNullCheckWhere(ASTNode subQueryAST, ASTNode searchCond = isNull(createColRefAST(sqAlias, colAlias)); for(ASTNode e : corrExprs ) { - ASTNode p = (ASTNode) ParseDriver.adaptor.dupTree(e); + ASTNode p = (ASTNode) SubQueryUtils.adaptor.dupTree(e); p = isNull(p); searchCond = orAST(searchCond, p); } diff --git ql/src/test/queries/clientpositive/create_view_disable_cbo.q ql/src/test/queries/clientpositive/create_view_disable_cbo.q new file mode 100644 index 0000000000..0c686b92f2 --- /dev/null +++ ql/src/test/queries/clientpositive/create_view_disable_cbo.q @@ -0,0 +1,34 @@ +set hive.cbo.enable = false; + +CREATE DATABASE IF NOT EXISTS cdh_82023_repro_db; + +CREATE TABLE IF NOT EXISTS `cdh_82023_repro_db`.`data` ( + `text` string +); + +CREATE VIEW IF NOT EXISTS `cdh_82023_repro_db`.`background` AS +SELECT + * +FROM + `cdh_82023_repro_db`.`data` `xouter` +WHERE + `xouter`.`text` NOT IN ( + SELECT + UPPER(`xinner`.`text`) + FROM + `cdh_82023_repro_db`.`data` `xinner` + GROUP BY + UPPER(`xinner`.`text`) + ); + +SELECT * FROM `cdh_82023_repro_db`.`background`; + +CREATE VIEW IF NOT EXISTS `cdh_82023_repro_db`.`foreground`AS +SELECT + * +FROM + `cdh_82023_repro_db`.`background`; + +SELECT * FROM `cdh_82023_repro_db`.`foreground`; + +DROP DATABASE IF EXISTS `cdh_82023_repro_db` CASCADE; diff --git ql/src/test/results/clientpositive/create_view_disable_cbo.q.out ql/src/test/results/clientpositive/create_view_disable_cbo.q.out new file mode 100644 index 0000000000..647a09ca72 --- /dev/null +++ ql/src/test/results/clientpositive/create_view_disable_cbo.q.out @@ -0,0 +1,112 @@ +PREHOOK: query: CREATE DATABASE IF NOT EXISTS cdh_82023_repro_db +PREHOOK: type: CREATEDATABASE +PREHOOK: Output: database:cdh_82023_repro_db +POSTHOOK: query: CREATE DATABASE IF NOT EXISTS cdh_82023_repro_db +POSTHOOK: type: CREATEDATABASE +POSTHOOK: Output: database:cdh_82023_repro_db +PREHOOK: query: CREATE TABLE IF NOT EXISTS `cdh_82023_repro_db`.`data` ( + `text` string +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: cdh_82023_repro_db@data +PREHOOK: Output: database:cdh_82023_repro_db +POSTHOOK: query: CREATE TABLE IF NOT EXISTS `cdh_82023_repro_db`.`data` ( + `text` string +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: cdh_82023_repro_db@data +POSTHOOK: Output: database:cdh_82023_repro_db +PREHOOK: query: CREATE VIEW IF NOT EXISTS `cdh_82023_repro_db`.`background` AS +SELECT + * +FROM + `cdh_82023_repro_db`.`data` `xouter` +WHERE + `xouter`.`text` NOT IN ( + SELECT + UPPER(`xinner`.`text`) + FROM + `cdh_82023_repro_db`.`data` `xinner` + GROUP BY + UPPER(`xinner`.`text`) + ) +PREHOOK: type: CREATEVIEW +PREHOOK: Input: cdh_82023_repro_db@data +PREHOOK: Output: cdh_82023_repro_db@background +PREHOOK: Output: database:cdh_82023_repro_db +POSTHOOK: query: CREATE VIEW IF NOT EXISTS `cdh_82023_repro_db`.`background` AS +SELECT + * +FROM + `cdh_82023_repro_db`.`data` `xouter` +WHERE + `xouter`.`text` NOT IN ( + SELECT + UPPER(`xinner`.`text`) + FROM + `cdh_82023_repro_db`.`data` `xinner` + GROUP BY + UPPER(`xinner`.`text`) + ) +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: cdh_82023_repro_db@data +POSTHOOK: Output: cdh_82023_repro_db@background +POSTHOOK: Output: database:cdh_82023_repro_db +Warning: Shuffle Join JOIN[24][tables = [xouter, sq_1_notin_nullcheck]] in Stage 'Stage-1:MAPRED' is a cross product +PREHOOK: query: SELECT * FROM `cdh_82023_repro_db`.`background` +PREHOOK: type: QUERY +PREHOOK: Input: cdh_82023_repro_db@background +PREHOOK: Input: cdh_82023_repro_db@data +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM `cdh_82023_repro_db`.`background` +POSTHOOK: type: QUERY +POSTHOOK: Input: cdh_82023_repro_db@background +POSTHOOK: Input: cdh_82023_repro_db@data +#### A masked pattern was here #### +PREHOOK: query: CREATE VIEW IF NOT EXISTS `cdh_82023_repro_db`.`foreground`AS +SELECT + * +FROM + `cdh_82023_repro_db`.`background` +PREHOOK: type: CREATEVIEW +PREHOOK: Input: cdh_82023_repro_db@background +PREHOOK: Input: cdh_82023_repro_db@data +PREHOOK: Output: cdh_82023_repro_db@foreground +PREHOOK: Output: database:cdh_82023_repro_db +POSTHOOK: query: CREATE VIEW IF NOT EXISTS `cdh_82023_repro_db`.`foreground`AS +SELECT + * +FROM + `cdh_82023_repro_db`.`background` +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: cdh_82023_repro_db@background +POSTHOOK: Input: cdh_82023_repro_db@data +POSTHOOK: Output: cdh_82023_repro_db@foreground +POSTHOOK: Output: database:cdh_82023_repro_db +Warning: Shuffle Join JOIN[24][tables = [xouter, sq_1_notin_nullcheck]] in Stage 'Stage-1:MAPRED' is a cross product +PREHOOK: query: SELECT * FROM `cdh_82023_repro_db`.`foreground` +PREHOOK: type: QUERY +PREHOOK: Input: cdh_82023_repro_db@background +PREHOOK: Input: cdh_82023_repro_db@data +PREHOOK: Input: cdh_82023_repro_db@foreground +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM `cdh_82023_repro_db`.`foreground` +POSTHOOK: type: QUERY +POSTHOOK: Input: cdh_82023_repro_db@background +POSTHOOK: Input: cdh_82023_repro_db@data +POSTHOOK: Input: cdh_82023_repro_db@foreground +#### A masked pattern was here #### +PREHOOK: query: DROP DATABASE IF EXISTS `cdh_82023_repro_db` CASCADE +PREHOOK: type: DROPDATABASE +PREHOOK: Input: database:cdh_82023_repro_db +PREHOOK: Output: cdh_82023_repro_db@background +PREHOOK: Output: cdh_82023_repro_db@data +PREHOOK: Output: cdh_82023_repro_db@foreground +PREHOOK: Output: database:cdh_82023_repro_db +POSTHOOK: query: DROP DATABASE IF EXISTS `cdh_82023_repro_db` CASCADE +POSTHOOK: type: DROPDATABASE +POSTHOOK: Input: database:cdh_82023_repro_db +POSTHOOK: Output: cdh_82023_repro_db@background +POSTHOOK: Output: cdh_82023_repro_db@data +POSTHOOK: Output: cdh_82023_repro_db@foreground +POSTHOOK: Output: database:cdh_82023_repro_db