diff --git itests/src/test/resources/testconfiguration.properties itests/src/test/resources/testconfiguration.properties index 01cad2a793..381dc08145 100644 --- itests/src/test/resources/testconfiguration.properties +++ itests/src/test/resources/testconfiguration.properties @@ -527,6 +527,7 @@ minillaplocal.query.files=\ external_jdbc_table_partition.q,\ external_jdbc_table_typeconversion.q,\ fullouter_mapjoin_1_optimized.q,\ + get_splits_0.q,\ groupby2.q,\ groupby_groupingset_bug.q,\ hybridgrace_hashjoin_1.q,\ diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/ParseUtils.java ql/src/java/org/apache/hadoop/hive/ql/parse/ParseUtils.java index be1c59f932..537af207ae 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/ParseUtils.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/ParseUtils.java @@ -545,22 +545,26 @@ public static String getKeywords(Set excludes) { public static RelNode parseQuery(HiveConf conf, String viewQuery) throws SemanticException, IOException, ParseException { - return getAnalyzer(conf).genLogicalPlan(parse(viewQuery)); + final Context ctx = new Context(conf); + ctx.setIsLoadingMaterializedView(true); + final ASTNode ast = parse(viewQuery, ctx); + final CalcitePlanner analyzer = getAnalyzer(conf, ctx); + return analyzer.genLogicalPlan(ast); } public static List parseQueryAndGetSchema(HiveConf conf, String viewQuery) throws SemanticException, IOException, ParseException { - final CalcitePlanner analyzer = getAnalyzer(conf); - analyzer.genLogicalPlan(parse(viewQuery)); + final Context ctx = new Context(conf); + ctx.setIsLoadingMaterializedView(true); + final ASTNode ast = parse(viewQuery, ctx); + final CalcitePlanner analyzer = getAnalyzer(conf, ctx); + analyzer.analyze(ast, ctx); return analyzer.getResultSchema(); } - private static CalcitePlanner getAnalyzer(HiveConf conf) throws SemanticException, IOException { - final QueryState qs = - new QueryState.Builder().withHiveConf(conf).build(); - CalcitePlanner analyzer = new CalcitePlanner(qs); - Context ctx = new Context(conf); - ctx.setIsLoadingMaterializedView(true); + private static CalcitePlanner getAnalyzer(HiveConf conf, Context ctx) throws SemanticException { + final QueryState qs = new QueryState.Builder().withHiveConf(conf).build(); + final CalcitePlanner analyzer = new CalcitePlanner(qs); analyzer.initCtx(ctx); analyzer.init(false); return analyzer; diff --git ql/src/test/queries/clientpositive/get_splits_0.q ql/src/test/queries/clientpositive/get_splits_0.q new file mode 100644 index 0000000000..e585fda78f --- /dev/null +++ ql/src/test/queries/clientpositive/get_splits_0.q @@ -0,0 +1,3 @@ +--! qt:dataset:src +select get_splits("SELECT * FROM src WHERE value in (SELECT value FROM src)",0); +select get_splits("SELECT key AS `key 1`, value AS `value 1` FROM src",0); diff --git ql/src/test/results/clientpositive/llap/get_splits_0.q.out ql/src/test/results/clientpositive/llap/get_splits_0.q.out new file mode 100644 index 0000000000..e1ebe95297 --- /dev/null +++ ql/src/test/results/clientpositive/llap/get_splits_0.q.out @@ -0,0 +1,18 @@ +PREHOOK: query: select get_splits("SELECT * FROM src WHERE value in (SELECT value FROM src)",0) +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +POSTHOOK: query: select get_splits("SELECT * FROM src WHERE value in (SELECT value FROM src)",0) +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +src.keystring src.valuestring +PREHOOK: query: select get_splits("SELECT key AS `key 1`, value AS `value 1` FROM src",0) +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +POSTHOOK: query: select get_splits("SELECT key AS `key 1`, value AS `value 1` FROM src",0) +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +key 1stringvalue 1string