You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jc...@apache.org on 2020/07/21 21:41:14 UTC
[hive] branch master updated: HIVE-23888: Simplify
special_character_in_tabnames_1.q (Krisztian Kasa,
reviewed by Jesus Camacho Rodriguez)
This is an automated email from the ASF dual-hosted git repository.
jcamacho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new ca568e6 HIVE-23888: Simplify special_character_in_tabnames_1.q (Krisztian Kasa, reviewed by Jesus Camacho Rodriguez)
ca568e6 is described below
commit ca568e6afad31a2937787169c5a7c7f1c01bd92d
Author: kasakrisz <kk...@cloudera.com>
AuthorDate: Tue Jul 21 23:40:51 2020 +0200
HIVE-23888: Simplify special_character_in_tabnames_1.q (Krisztian Kasa, reviewed by Jesus Camacho Rodriguez)
Closes apache/hive#1287
---
.../ql/parse/TestSpecialCharacterInTableNames.java | 620 +
.../TestSpecialCharacterInTableNamesQuotes.java | 620 +
.../special_character_in_tabnames_1.q | 652 +-
.../special_character_in_tabnames_quotes_1.q | 580 +-
.../llap/special_character_in_tabnames_1.q.out | 22499 +++---------------
.../special_character_in_tabnames_quotes_1.q.out | 23013 ++++---------------
6 files changed, 9388 insertions(+), 38596 deletions(-)
diff --git a/parser/src/test/org/apache/hadoop/hive/ql/parse/TestSpecialCharacterInTableNames.java b/parser/src/test/org/apache/hadoop/hive/ql/parse/TestSpecialCharacterInTableNames.java
new file mode 100644
index 0000000..68e0701
--- /dev/null
+++ b/parser/src/test/org/apache/hadoop/hive/ql/parse/TestSpecialCharacterInTableNames.java
@@ -0,0 +1,620 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.ql.parse;
+
+import java.io.IOException;
+
+import org.apache.hadoop.conf.Configuration;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * Parser tests special character in table names.
+ */
+public class TestSpecialCharacterInTableNames {
+ private static Configuration conf;
+
+ private ParseDriver parseDriver;
+
+ @BeforeClass
+ public static void initialize() {
+ conf = new Configuration();
+ }
+
+ @Before
+ public void setup() throws SemanticException, IOException {
+ parseDriver = new ParseDriver();
+ }
+
+ private ASTNode parse(String query) throws ParseException {
+ return (ASTNode) parseDriver.parse(query, conf).getTree().getChild(0);
+ }
+
+ @Test
+ public void testCreateDatabase() throws ParseException {
+ parse("create database `db~!@#$%^&*(),<>`");
+ parse("use `db~!@#$%^&*(),<>`");
+ }
+
+ @Test
+ public void testCreateTable() throws ParseException {
+ parse("create table `c/b/o_t1`(key string, value string, c_int int, c_float float, c_boolean boolean) partitioned by (dt string) row format delimited fields terminated by ',' STORED AS TEXTFILE");
+ parse("create table `//cbo_t2`(key string, value string, c_int int, c_float float, c_boolean boolean) partitioned by (dt string) row format delimited fields terminated by ',' STORED AS TEXTFILE");
+ parse("create table `cbo_/t3////`(key string, value string, c_int int, c_float float, c_boolean boolean) row format delimited fields terminated by ',' STORED AS TEXTFILE");
+
+ parse("CREATE TABLE `p/a/r/t`(\n" +
+ " p_partkey INT,\n" +
+ " p_name STRING,\n" +
+ " p_mfgr STRING,\n" +
+ " p_brand STRING,\n" +
+ " p_type STRING,\n" +
+ " p_size INT,\n" +
+ " p_container STRING,\n" +
+ " p_retailprice DOUBLE,\n" +
+ " p_comment STRING\n" +
+ ")");
+
+ parse("CREATE TABLE `line/item` (L_ORDERKEY INT,\n" +
+ " L_PARTKEY INT,\n" +
+ " L_SUPPKEY INT,\n" +
+ " L_LINENUMBER INT,\n" +
+ " L_QUANTITY DOUBLE,\n" +
+ " L_EXTENDEDPRICE DOUBLE,\n" +
+ " L_DISCOUNT DOUBLE,\n" +
+ " L_TAX DOUBLE,\n" +
+ " L_RETURNFLAG STRING,\n" +
+ " L_LINESTATUS STRING,\n" +
+ " l_shipdate STRING,\n" +
+ " L_COMMITDATE STRING,\n" +
+ " L_RECEIPTDATE STRING,\n" +
+ " L_SHIPINSTRUCT STRING,\n" +
+ " L_SHIPMODE STRING,\n" +
+ " L_COMMENT STRING)\n" +
+ "ROW FORMAT DELIMITED\n" +
+ "FIELDS TERMINATED BY '|'");
+
+ parse("create table `src/_/cbo` as select * from default.src");
+ }
+
+ @Test
+ public void testLoadData() throws ParseException {
+ parse("load data local inpath '../../data/files/cbo_t1.txt' into table `c/b/o_t1` partition (dt='2014')");
+ parse("load data local inpath '../../data/files/cbo_t2.txt' into table `//cbo_t2` partition (dt='2014')");
+ parse("load data local inpath '../../data/files/cbo_t3.txt' into table `cbo_/t3////`");
+ parse("LOAD DATA LOCAL INPATH '../../data/files/part_tiny.txt' overwrite into table `p/a/r/t`");
+ parse("LOAD DATA LOCAL INPATH '../../data/files/lineitem.txt' OVERWRITE INTO TABLE `line/item`");
+ }
+
+ @Test
+ public void testAnalyzeTable() throws ParseException {
+ parse("analyze table `c/b/o_t1` partition (dt) compute statistics");
+ parse("analyze table `c/b/o_t1` compute statistics for columns key, value, c_int, c_float, c_boolean");
+ parse("analyze table `//cbo_t2` partition (dt) compute statistics");
+ parse("analyze table `//cbo_t2` compute statistics for columns key, value, c_int, c_float, c_boolean");
+ parse("analyze table `cbo_/t3////` compute statistics");
+ parse("analyze table `cbo_/t3////` compute statistics for columns key, value, c_int, c_float, c_boolean");
+ parse("analyze table `src/_/cbo` compute statistics");
+ parse("analyze table `src/_/cbo` compute statistics for columns");
+ parse("analyze table `p/a/r/t` compute statistics");
+ parse("analyze table `p/a/r/t` compute statistics for columns");
+ parse("analyze table `line/item` compute statistics");
+ parse("analyze table `line/item` compute statistics for columns");
+ }
+
+ @Test
+ public void testSelect() throws ParseException {
+ parse("select key, (c_int+1)+2 as x, sum(c_int) from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key");
+ parse("select x, y, count(*) from (select key, (c_int+c_float+1+2) as x, sum(c_int) as y from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key) R group by y, x");
+ parse("select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key order by a) `c/b/o_t1` join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0) group by c_float, `//cbo_t2`.c_int, key order by q/10 desc, r a [...]
+ parse("select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b % c asc, b desc) `c/b/o_t1` left outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) a [...]
+ parse("select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b+c, a desc) `c/b/o_t1` right outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (` [...]
+ parse("select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by c+a desc) `c/b/o_t1` full outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cb [...]
+ parse("select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) `c/b/o_t1` join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int > 0 or `//cbo_t2` [...]
+ }
+
+ @Test
+ public void testTestGroupByIsEmptyAndThereIsNoOtherColsInAggr() throws ParseException {
+ parse("select unionsrc.key FROM (select 'tst1' as key, count(1) as value from default.src) unionsrc");
+ parse("select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from default.src) unionsrc");
+
+ parse("select unionsrc.key FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1\n" +
+ "\n" +
+ "UNION ALL\n" +
+ "\n" +
+ " select 'min' as key, min(c_int) as value from `cbo_/t3////` s2\n" +
+ "\n" +
+ " UNION ALL\n" +
+ "\n" +
+ " select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc order by unionsrc.key");
+
+ parse("select unionsrc.key, unionsrc.value FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1\n" +
+ "\n" +
+ "UNION ALL\n" +
+ "\n" +
+ " select 'min' as key, min(c_int) as value from `cbo_/t3////` s2\n" +
+ "\n" +
+ " UNION ALL\n" +
+ "\n" +
+ " select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc order by unionsrc.key");
+
+ parse("select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1\n" +
+ "\n" +
+ " UNION ALL\n" +
+ "\n" +
+ " select 'min' as key, min(c_int) as value from `cbo_/t3////` s2\n" +
+ "\n" +
+ " UNION ALL\n" +
+ "\n" +
+ " select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc group by unionsrc.key order by unionsrc.key");
+ }
+
+ @Test
+ public void testSelectJoinTS() throws ParseException {
+ parse("select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key");
+ parse("select `c/b/o_t1`.key from `c/b/o_t1` join `cbo_/t3////`");
+ parse("select `c/b/o_t1`.key from `c/b/o_t1` join `cbo_/t3////` where `c/b/o_t1`.key=`cbo_/t3////`.key and `c/b/o_t1`.key >= 1");
+ parse("select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` left outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key");
+ parse("select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` right outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key");
+ parse("select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` full outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key");
+ parse("select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key");
+ parse("select key, `c/b/o_t1`.c_int, `//cbo_t2`.p, q from `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.key=p join (select key as a, c_int as b, `cbo_/t3////`.c_float as c from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.key=a");
+ parse("select a, `c/b/o_t1`.b, key, `//cbo_t2`.c_int, `cbo_/t3////`.p from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.a=key join (select key as p, c_int as q, `cbo_/t3////`.c_float as r from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.a=`cbo_/t3////`.p");
+ parse("select b, `c/b/o_t1`.c, `//cbo_t2`.c_int, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.a=`//cbo_t2`.key join `cbo_/t3////` on `c/b/o_t1`.a=`cbo_/t3////`.key");
+ parse("select `cbo_/t3////`.c_int, b, `//cbo_t2`.c_int, `c/b/o_t1`.c from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.a=`//cbo_t2`.key join `cbo_/t3////` on `c/b/o_t1`.a=`cbo_/t3////`.key");
+ parse("select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` left outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key");
+ parse("select key, `c/b/o_t1`.c_int, `//cbo_t2`.p, q from `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.key=p left outer join (select key as a, c_int as b, `cbo_/t3////`.c_float as c from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.key=a");
+ parse("select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` right outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key");
+ parse("select key, `c/b/o_t1`.c_int, `//cbo_t2`.p, q from `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.key=p right outer join (select key as a, c_int as b, `cbo_/t3////`.c_float as c from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.key=a");
+ parse("select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` full outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key");
+ parse("select key, `c/b/o_t1`.c_int, `//cbo_t2`.p, q from `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.key=p full outer join (select key as a, c_int as b, `cbo_/t3////`.c_float as c from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.key=a");
+ }
+
+ @Test
+ public void testSelectJoinFILTS() throws ParseException {
+ parse("select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + `//cbo_t2`.c_int == 2) and (`c/b/o_t1`.c_int > 0 or `//cbo_t2`.c_float >= 0)");
+ parse("select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` left outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + `//cbo_t2`.c_int == 2) and (`c/b/o_t1`.c_int > 0 or `//cbo_t2`.c_float >= 0)");
+ parse("select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` right outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + `//cbo_t2`.c_int == 2) and (`c/b/o_t1`.c_int > 0 or `//cbo_t2`.c_float >= 0)");
+ parse("select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` full outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + `//cbo_t2`.c_int == 2) and (`c/b/o_t1`.c_int > 0 or `//cbo_t2`.c_float >= 0)");
+ parse("select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key [...]
+ parse("select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o [...]
+ parse("select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` right outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/ [...]
+ parse("select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` full outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o [...]
+ parse("select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` full outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3 [...]
+ parse("select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p left outer jo [...]
+ parse("select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p right outer j [...]
+ parse("select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p full outer jo [...]
+ parse("select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` right outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p right outer [...]
+ parse("select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` right outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p left outer j [...]
+ parse("select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` right outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p full outer j [...]
+ parse("select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` full outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p full outer jo [...]
+ parse("select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` full outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p left outer jo [...]
+ parse("select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` full outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p right outer j [...]
+ }
+
+ @Test
+ public void testSelectTSJoinFilGBGBHavingLimit() throws ParseException {
+ parse("select key, (c_int+1)+2 as x, sum(c_int) from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key order by x limit 1");
+ parse("select x, y, count(*) from (select key, (c_int+c_float+1+2) as x, sum(c_int) as y from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key) R group by y, x order by x,y limit 1");
+ parse("select key from(select key from (select key from `c/b/o_t1` limit 5)`//cbo_t2` limit 5)`cbo_/t3////` limit 5");
+ parse("select key, c_int from(select key, c_int from (select key, c_int from `c/b/o_t1` order by c_int limit 5)`c/b/o_t1` order by c_int limit 5)`//cbo_t2` order by c_int limit 5");
+ parse("select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key order by a limit 5) `c/b/o_t1` join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0) group by c_float, `//cbo_t2`.c_int, key order by q/10 d [...]
+ parse("select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b % c asc, b desc limit 5) `c/b/o_t1` left outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 [...]
+ }
+
+ @Test
+ public void testSemiJoin() throws ParseException {
+ parse("select `c/b/o_t1`.c_int from `c/b/o_t1` left semi join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key");
+ parse("select `c/b/o_t1`.c_int from `c/b/o_t1` left semi join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)");
+ parse("select * from (select c, b, a from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left semi join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p left semi join `cbo_/t3////` on `c/b/o_t1`.a=key where (b + [...]
+ parse("select * from (select `cbo_/t3////`.c_int, `c/b/o_t1`.c, b from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 = 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left semi join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p left outer join `cbo_/t3////` on [...]
+ parse("select * from (select c_int, b, `c/b/o_t1`.c from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left semi join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p right outer join `cbo_/t3////` on `c/b/o_t1`. [...]
+ parse("select * from (select c_int, b, `c/b/o_t1`.c from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left semi join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p full outer join `cbo_/t3////` on `c/b/o_t1`.a [...]
+ parse("select a, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by a+b desc, c asc) `c/b/o_t1` left semi join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int [...]
+ parse("select a, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by a+b desc, c asc limit 5) `c/b/o_t1` left semi join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t [...]
+ }
+
+ @Test
+ public void testSelectTs() throws ParseException {
+ parse("select * from `c/b/o_t1`");
+ parse("select * from `c/b/o_t1` as `c/b/o_t1`");
+ parse("select * from `c/b/o_t1` as `//cbo_t2`");
+ parse("select `c/b/o_t1`.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from `c/b/o_t1`");
+ parse("select * from `c/b/o_t1` where (((key=1) and (c_float=10)) and (c_int=20))");
+ }
+
+ @Test
+ public void testSelectFilTs() throws ParseException {
+ parse("select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0");
+ parse("select * from `c/b/o_t1` as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ parse("select * from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ parse("select `//cbo_t2`.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ }
+
+ @Test
+ public void testSelectSelectTsFil() throws ParseException {
+ parse("select * from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1`");
+ parse("select * from (select * from `c/b/o_t1` as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1`");
+ parse("select * from (select * from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1`");
+ parse("select * from (select `//cbo_t2`.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1`");
+ parse("select * from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0");
+ parse("select * from (select * from `c/b/o_t1` as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ parse("select * from (select * from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ parse("select * from (select `//cbo_t2`.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and y+c_int >= 0 or x <= 100");
+ parse("select `c/b/o_t1`.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0");
+ parse("select `//cbo_t2`.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `//cbo_t2` where `//cbo_t2`.c_int >= 0");
+ parse("select * from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0");
+ parse("select * from (select * from `c/b/o_t1` as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ parse("select * from (select * from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ parse("select * from (select `//cbo_t2`.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and y+c_int >= 0 or x <= 100");
+ parse("select `c/b/o_t1`.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0");
+ parse("select `//cbo_t2`.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `//cbo_t2` where `//cbo_t2`.c_int >= 0");
+ }
+
+ @Test
+ public void testNullExprInSelectList() throws ParseException {
+ parse("select null from `cbo_/t3////`");
+ }
+
+ @Test
+ public void testUnaryOperator() throws ParseException {
+ parse("select key from `c/b/o_t1` where c_int = -6 or c_int = +6");
+ }
+
+ @Test
+ public void testQueryReferencingOnlyPartitionColumns() throws ParseException {
+ parse("select count(`c/b/o_t1`.dt) from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.dt = `//cbo_t2`.dt where `c/b/o_t1`.dt = '2014' ");
+ }
+
+ @Test
+ public void testGetStatsWithEmptyPartitionList() throws ParseException {
+ parse("select `c/b/o_t1`.value from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key = `//cbo_t2`.key where `c/b/o_t1`.dt = '10' and `c/b/o_t1`.c_boolean = true");
+ }
+
+ @Test
+ public void testSubQueriesNotExistsDistinctCorr() throws ParseException {
+ parse("select * \n" +
+ "\n" +
+ "from `src/_/cbo` b \n" +
+ "\n" +
+ "where not exists \n" +
+ "\n" +
+ " (select distinct a.key \n" +
+ "\n" +
+ " from `src/_/cbo` a \n" +
+ "\n" +
+ " where b.value = a.value and a.value > 'val_2'\n" +
+ "\n" +
+ " )\n" +
+ "\n");
+ }
+
+ @Test
+ public void testSubQueriesNotExistsNoAggCorrHaving() throws ParseException {
+ parse("select * \n" +
+ "\n" +
+ "from `src/_/cbo` b \n" +
+ "\n" +
+ "group by key, value\n" +
+ "\n" +
+ "having not exists \n" +
+ "\n" +
+ " (select a.key \n" +
+ "\n" +
+ " from `src/_/cbo` a \n" +
+ "\n" +
+ " where b.value = a.value and a.key = b.key and a.value > 'val_12'\n" +
+ "\n" +
+ " )\n" +
+ "\n");
+ }
+
+ @Test
+ public void testSubQueryInFrom() throws ParseException {
+ parse("select * \n" +
+ "\n" +
+ "from (select * \n" +
+ "\n" +
+ " from `src/_/cbo` b \n" +
+ "\n" +
+ " where exists \n" +
+ "\n" +
+ " (select a.key \n" +
+ "\n" +
+ " from `src/_/cbo` a \n" +
+ "\n" +
+ " where b.value = a.value and a.key = b.key and a.value > 'val_9')\n" +
+ "\n" +
+ " ) a\n" +
+ "\n");
+ }
+
+ @Test
+ public void testSubQueryIn() throws ParseException {
+ // from, having
+ parse("select *\n" +
+ "\n" +
+ "from (select b.key, count(*) \n" +
+ "\n" +
+ " from `src/_/cbo` b \n" +
+ "\n" +
+ " group by b.key\n" +
+ "\n" +
+ " having exists \n" +
+ "\n" +
+ " (select a.key \n" +
+ "\n" +
+ " from `src/_/cbo` a \n" +
+ "\n" +
+ " where a.key = b.key and a.value > 'val_9'\n" +
+ "\n" +
+ " )\n" +
+ "\n" +
+ ") a\n" +
+ "\n");
+
+ // non agg, non corr
+ parse("select * \n" +
+ "\n" +
+ "from `src/_/cbo` \n" +
+ "\n" +
+ "where `src/_/cbo`.key in (select key from `src/_/cbo` s1 where s1.key > '9') order by key\n" +
+ "\n");
+
+ // distinct, corr
+ parse("select * \n" +
+ "\n" +
+ "from `src/_/cbo` b \n" +
+ "\n" +
+ "where b.key in\n" +
+ "\n" +
+ " (select distinct a.key \n" +
+ "\n" +
+ " from `src/_/cbo` a \n" +
+ "\n" +
+ " where b.value = a.value and a.key > '9'\n" +
+ "\n" +
+ " ) order by b.key\n" +
+ "\n");
+
+ // non agg, corr, with join in Parent Query
+ parse("select p.p_partkey, li.l_suppkey \n" +
+ "\n" +
+ "from (select distinct l_partkey as p_partkey from `line/item`) p join `line/item` li on p.p_partkey = li.l_partkey \n" +
+ "\n" +
+ "where li.l_linenumber = 1 and\n" +
+ "\n" +
+ " li.l_orderkey in (select l_orderkey from `line/item` where l_shipmode = 'AIR' and l_linenumber = li.l_linenumber)\n" +
+ "\n" +
+ " order by p.p_partkey\n" +
+ "\n");
+
+ // where and having
+ parse("select key, value, count(*) \n" +
+ "\n" +
+ "from `src/_/cbo` b\n" +
+ "\n" +
+ "where b.key in (select key from `src/_/cbo` where `src/_/cbo`.key > '8')\n" +
+ "\n" +
+ "group by key, value\n" +
+ "\n" +
+ "having count(*) in (select count(*) from `src/_/cbo` s1 where s1.key > '9' group by s1.key ) order by key\n" +
+ "\n");
+
+ // non agg, non corr, windowing
+ parse("select p_mfgr, p_name, avg(p_size) \n" +
+ "\n" +
+ "from `p/a/r/t` \n" +
+ "\n" +
+ "group by p_mfgr, p_name\n" +
+ "\n" +
+ "having p_name in \n" +
+ "\n" +
+ " (select first_value(p_name) over(partition by p_mfgr order by p_size) from `p/a/r/t`) order by p_mfgr\n");
+ }
+
+ @Test
+ public void testSubQueriesNotIn() throws ParseException {
+ // non agg, non corr
+ parse("select * \n" +
+ "\n" +
+ "from `src/_/cbo` \n" +
+ "\n" +
+ "where `src/_/cbo`.key not in \n" +
+ "\n" +
+ " ( select key from `src/_/cbo` s1 \n" +
+ "\n" +
+ " where s1.key > '2'\n" +
+ "\n" +
+ " ) order by key\n" +
+ "\n");
+
+ // non agg, corr
+ parse("select p_mfgr, b.p_name, p_size \n" +
+ "\n" +
+ "from `p/a/r/t` b \n" +
+ "\n" +
+ "where b.p_name not in \n" +
+ "\n" +
+ " (select p_name \n" +
+ "\n" +
+ " from (select p_mfgr, p_name, p_size as r from `p/a/r/t`) a \n" +
+ "\n" +
+ " where r < 10 and b.p_mfgr = a.p_mfgr \n" +
+ "\n" +
+ " ) order by p_mfgr,p_size");
+
+ // agg, non corr
+ parse("" +
+ "select p_name, p_size \n" +
+ "\n" +
+ "from \n" +
+ "\n" +
+ "`p/a/r/t` where `p/a/r/t`.p_size not in \n" +
+ "\n" +
+ " (select avg(p_size) \n" +
+ "\n" +
+ " from (select p_size from `p/a/r/t`) a \n" +
+ "\n" +
+ " where p_size < 10\n" +
+ "\n" +
+ " ) order by p_name\n");
+
+ // agg, corr
+ parse("" +
+ "select p_mfgr, p_name, p_size \n" +
+ "\n" +
+ "from `p/a/r/t` b where b.p_size not in \n" +
+ "\n" +
+ " (select min(p_size) \n" +
+ "\n" +
+ " from (select p_mfgr, p_size from `p/a/r/t`) a \n" +
+ "\n" +
+ " where p_size < 10 and b.p_mfgr = a.p_mfgr\n" +
+ "\n" +
+ " ) order by p_name\n");
+
+ // non agg, non corr, Group By in Parent Query
+ parse("select li.l_partkey, count(*) \n" +
+ "\n" +
+ "from `line/item` li \n" +
+ "\n" +
+ "where li.l_linenumber = 1 and \n" +
+ "\n" +
+ " li.l_orderkey not in (select l_orderkey from `line/item` where l_shipmode = 'AIR') \n" +
+ "\n" +
+ "group by li.l_partkey order by li.l_partkey\n");
+
+ // non agg, corr, having
+ parse("select b.p_mfgr, min(p_retailprice) \n" +
+ "\n" +
+ "from `p/a/r/t` b \n" +
+ "\n" +
+ "group by b.p_mfgr\n" +
+ "\n" +
+ "having b.p_mfgr not in \n" +
+ "\n" +
+ " (select p_mfgr \n" +
+ "\n" +
+ " from (select p_mfgr, min(p_retailprice) l, max(p_retailprice) r, avg(p_retailprice) a from `p/a/r/t` group by p_mfgr) a \n" +
+ "\n" +
+ " where min(p_retailprice) = l and r - l > 600\n" +
+ "\n" +
+ " )\n" +
+ "\n" +
+ " order by b.p_mfgr\n");
+
+ // agg, non corr, having
+ parse("select b.p_mfgr, min(p_retailprice) \n" +
+ "\n" +
+ "from `p/a/r/t` b \n" +
+ "\n" +
+ "group by b.p_mfgr\n" +
+ "\n" +
+ "having b.p_mfgr not in \n" +
+ "\n" +
+ " (select p_mfgr \n" +
+ "\n" +
+ " from `p/a/r/t` a\n" +
+ "\n" +
+ " group by p_mfgr\n" +
+ "\n" +
+ " having max(p_retailprice) - min(p_retailprice) > 600\n" +
+ "\n" +
+ " )\n" +
+ "\n" +
+ " order by b.p_mfgr \n");
+ }
+
+ @Test
+ public void testUDF_UDAF() throws ParseException {
+ parse("select count(*), count(c_int), sum(c_int), avg(c_int), max(c_int), min(c_int) from `c/b/o_t1`");
+ parse("select count(*), count(c_int) as a, sum(c_int), avg(c_int), max(c_int), min(c_int), case c_int when 0 then 1 when 1 then 2 else 3 end, sum(case c_int when 0 then 1 when 1 then 2 else 3 end) from `c/b/o_t1` group by c_int order by a");
+ parse("select * from (select count(*) as a, count(distinct c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f from `c/b/o_t1`) `c/b/o_t1`");
+ parse("select * from (select count(*) as a, count(distinct c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f, case c_int when 0 then 1 when 1 then 2 else 3 end as g, sum(case c_int when 0 then 1 when 1 then 2 else 3 end) as h from `c/b/o_t1` group by c_int) `c/b/o_t1` order by a");
+ parse("select f,a,e,b from (select count(*) as a, count(c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f from `c/b/o_t1`) `c/b/o_t1`");
+ parse("select f,a,e,b from (select count(*) as a, count(distinct c_int) as b, sum(distinct c_int) as c, avg(distinct c_int) as d, max(distinct c_int) as e, min(distinct c_int) as f from `c/b/o_t1`) `c/b/o_t1`");
+ parse("select key,count(c_int) as a, avg(c_float) from `c/b/o_t1` group by key order by a");
+ parse("select count(distinct c_int) as a, avg(c_float) from `c/b/o_t1` group by c_float order by a");
+ parse("select count(distinct c_int) as a, avg(c_float) from `c/b/o_t1` group by c_int order by a");
+ parse("select count(distinct c_int) as a, avg(c_float) from `c/b/o_t1` group by c_float, c_int order by a");
+ }
+
+ @Test
+ public void testUnionAll() throws ParseException {
+ parse("select * from (select * from `c/b/o_t1` order by key, c_boolean, value, dt)a union all select * from (select * from `//cbo_t2` order by key, c_boolean, value, dt)b");
+ parse("select key from (select key, c_int from (select * from `c/b/o_t1` union all select * from `//cbo_t2` where `//cbo_t2`.key >=0)r1 union all select key, c_int from `cbo_/t3////`)r2 where key >=0 order by key");
+ parse("select r2.key from (select key, c_int from (select key, c_int from `c/b/o_t1` union all select key, c_int from `cbo_/t3////` )r1 union all select key, c_int from `cbo_/t3////`)r2 join (select key, c_int from (select * from `c/b/o_t1` union all select * from `//cbo_t2` where `//cbo_t2`.key >=0)r1 union all select key, c_int from `cbo_/t3////`)r3 on r2.key=r3.key where r3.key >=0 order by r2.key");
+ }
+
+ @Test
+ public void testCreateView() throws ParseException {
+ parse("create view v1_n7 as select c_int, value, c_boolean, dt from `c/b/o_t1`");
+ parse("create view v2_n2 as select c_int, value from `//cbo_t2`");
+ parse("create view v3_n0 as select v1_n7.value val from v1_n7 join `c/b/o_t1` on v1_n7.c_boolean = `c/b/o_t1`.c_boolean");
+ }
+
+ @Test
+ public void testWithClause() throws ParseException {
+ parse("with q1 as ( select key from `c/b/o_t1` where key = '1')\n" +
+ "select count(*) from q1");
+ parse("with q1 as ( select key,c_int from `c/b/o_t1` where key = '1')\n" +
+ "select * from q1");
+ parse("with q1 as ( select `c/b/o_t1`.c_int c_int from q2 join `c/b/o_t1` where q2.c_int = `c/b/o_t1`.c_int and `c/b/o_t1`.dt='2014'),\n" +
+ "q2 as ( select c_int,c_boolean from v1_n7 where value = '1' or dt = '14')\n" +
+ "select count(*) from q1 join q2 join v4_n0 on q1.c_int = q2.c_int and v4_n0.c_int = q2.c_int");
+ }
+
+ @Test
+ public void testWindowingFunctions() throws ParseException {
+ parse("select count(c_int) over() from `c/b/o_t1`");
+ parse("select count(c_int) over(partition by c_float order by key), sum(c_float) over(partition by c_float order by key), max(c_int) over(partition by c_float order by key), min(c_int) over(partition by c_float order by key), row_number() over(partition by c_float order by key) as rn, rank() over(partition by c_float order by key), dense_rank() over(partition by c_float order by key), round(percent_rank() over(partition by c_float order by key), 2), lead(c_int, 2, c_int) over(partiti [...]
+ parse("select * from (select count(c_int) over(partition by c_float order by key), sum(c_float) over(partition by c_float order by key), max(c_int) over(partition by c_float order by key), min(c_int) over(partition by c_float order by key), row_number() over(partition by c_float order by key) as rn, rank() over(partition by c_float order by key), dense_rank() over(partition by c_float order by key), round(percent_rank() over(partition by c_float order by key),2), lead(c_int, 2, c_int [...]
+ parse("select x from (select count(c_int) over() as x, sum(c_float) over() from `c/b/o_t1`) `c/b/o_t1`");
+ parse("select 1+sum(c_int) over() from `c/b/o_t1`");
+ parse("select sum(c_int)+sum(sum(c_int)) over() from `c/b/o_t1`");
+ parse("select * from (select max(c_int) over (partition by key order by value Rows UNBOUNDED PRECEDING), min(c_int) over (partition by key order by value rows current row), count(c_int) over(partition by key order by value ROWS 1 PRECEDING), avg(value) over (partition by key order by value Rows between unbounded preceding and unbounded following), sum(value) over (partition by key order by value rows between unbounded preceding and current row), avg(c_float) over (partition by key or [...]
+ parse("select i, a, h, b, c, d, e, f, g, a as x, a +1 as y from (select max(c_int) over (partition by key order by value range UNBOUNDED PRECEDING) a, min(c_int) over (partition by key order by value range current row) b, count(c_int) over(partition by key order by value range 1 PRECEDING) c, avg(value) over (partition by key order by value range between unbounded preceding and unbounded following) d, sum(value) over (partition by key order by value range between unbounded preceding [...]
+ parse("select *, rank() over(partition by key order by value) as rr from default.src1");
+ parse("select *, rank() over(partition by key order by value) from default.src1");
+ }
+
+ @Test
+ public void testInsert() throws ParseException {
+ parse("insert into table `src/_/cbo` select * from default.src");
+ parse("insert overwrite table `src/_/cbo` select * from default.src");
+ parse("insert into `t//` values(1)");
+ parse("insert into `t//` values(null)");
+ }
+
+ @Test
+ public void testDropTable() throws ParseException {
+ parse("drop table `t//`");
+ }
+
+ @Test
+ public void testExplain() throws ParseException {
+ parse("explain select * from `t//`");
+ }
+
+ @Test
+ public void testDropDatabase() throws ParseException {
+ parse("drop database `db~!@#$%^&*(),<>` cascade");
+ }
+}
diff --git a/parser/src/test/org/apache/hadoop/hive/ql/parse/TestSpecialCharacterInTableNamesQuotes.java b/parser/src/test/org/apache/hadoop/hive/ql/parse/TestSpecialCharacterInTableNamesQuotes.java
new file mode 100644
index 0000000..b717309
--- /dev/null
+++ b/parser/src/test/org/apache/hadoop/hive/ql/parse/TestSpecialCharacterInTableNamesQuotes.java
@@ -0,0 +1,620 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.ql.parse;
+
+import java.io.IOException;
+
+import org.apache.hadoop.conf.Configuration;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * Parser tests special character in table names.
+ */
+public class TestSpecialCharacterInTableNamesQuotes {
+ private static Configuration conf;
+
+ private ParseDriver parseDriver;
+
+ @BeforeClass
+ public static void initialize() {
+ conf = new Configuration();
+ conf.set("hive.support.quoted.identifiers", "standard");
+ }
+
+ @Before
+ public void setup() throws SemanticException, IOException {
+ parseDriver = new ParseDriver();
+ }
+
+ private ASTNode parse(String query) throws ParseException {
+ return (ASTNode) parseDriver.parse(query, conf).getTree().getChild(0);
+ }
+
+ @Test
+ public void testCreateDatabase() throws ParseException {
+ parse("create database \"db~!@#$%^&*(),<>\"");
+ parse("use \"db~!@#$%^&*(),<>\"");
+ }
+
+ @Test
+ public void testCreateTable() throws ParseException {
+ parse("create table \"c/b/o_t1\"(key string, value string, c_int int, c_float float, c_boolean boolean) partitioned by (dt string) row format delimited fields terminated by ',' STORED AS TEXTFILE");
+ parse("create table \"//cbo_t2\"(key string, value string, c_int int, c_float float, c_boolean boolean) partitioned by (dt string) row format delimited fields terminated by ',' STORED AS TEXTFILE");
+ parse("create table \"cbo_/t3////\"(key string, value string, c_int int, c_float float, c_boolean boolean) row format delimited fields terminated by ',' STORED AS TEXTFILE");
+
+ parse("CREATE TABLE \"p/a/r/t\"(\n" +
+ " p_partkey INT,\n" +
+ " p_name STRING,\n" +
+ " p_mfgr STRING,\n" +
+ " p_brand STRING,\n" +
+ " p_type STRING,\n" +
+ " p_size INT,\n" +
+ " p_container STRING,\n" +
+ " p_retailprice DOUBLE,\n" +
+ " p_comment STRING\n" +
+ ")");
+
+ parse("CREATE TABLE \"line/item\" (L_ORDERKEY INT,\n" +
+ " L_PARTKEY INT,\n" +
+ " L_SUPPKEY INT,\n" +
+ " L_LINENUMBER INT,\n" +
+ " L_QUANTITY DOUBLE,\n" +
+ " L_EXTENDEDPRICE DOUBLE,\n" +
+ " L_DISCOUNT DOUBLE,\n" +
+ " L_TAX DOUBLE,\n" +
+ " L_RETURNFLAG STRING,\n" +
+ " L_LINESTATUS STRING,\n" +
+ " l_shipdate STRING,\n" +
+ " L_COMMITDATE STRING,\n" +
+ " L_RECEIPTDATE STRING,\n" +
+ " L_SHIPINSTRUCT STRING,\n" +
+ " L_SHIPMODE STRING,\n" +
+ " L_COMMENT STRING)\n" +
+ "ROW FORMAT DELIMITED\n" +
+ "FIELDS TERMINATED BY '|'");
+
+ parse("create table \"src/_/cbo\" as select * from default.src");
+ }
+
+ @Test
+ public void testLoadData() throws ParseException {
+ parse("load data local inpath '../../data/files/cbo_t1.txt' into table \"c/b/o_t1\" partition (dt='2014')");
+ parse("load data local inpath '../../data/files/cbo_t2.txt' into table \"//cbo_t2\" partition (dt='2014')");
+ parse("load data local inpath '../../data/files/cbo_t3.txt' into table \"cbo_/t3////\"");
+ parse("LOAD DATA LOCAL INPATH '../../data/files/part_tiny.txt' overwrite into table \"p/a/r/t\"");
+ parse("LOAD DATA LOCAL INPATH '../../data/files/lineitem.txt' OVERWRITE INTO TABLE \"line/item\"");
+ }
+
+ @Test
+ public void testAnalyzeTable() throws ParseException {
+ parse("analyze table \"c/b/o_t1\" partition (dt) compute statistics");
+ parse("analyze table \"c/b/o_t1\" compute statistics for columns key, value, c_int, c_float, c_boolean");
+ parse("analyze table \"//cbo_t2\" partition (dt) compute statistics");
+ parse("analyze table \"//cbo_t2\" compute statistics for columns key, value, c_int, c_float, c_boolean");
+ parse("analyze table \"cbo_/t3////\" compute statistics");
+ parse("analyze table \"cbo_/t3////\" compute statistics for columns key, value, c_int, c_float, c_boolean");
+ parse("analyze table \"src/_/cbo\" compute statistics");
+ parse("analyze table \"src/_/cbo\" compute statistics for columns");
+ parse("analyze table \"p/a/r/t\" compute statistics");
+ parse("analyze table \"p/a/r/t\" compute statistics for columns");
+ parse("analyze table \"line/item\" compute statistics");
+ parse("analyze table \"line/item\" compute statistics for columns");
+ }
+
+ @Test
+ public void testSelect() throws ParseException {
+ parse("select key, (c_int+1)+2 as x, sum(c_int) from \"c/b/o_t1\" group by c_float, \"c/b/o_t1\".c_int, key");
+ parse("select x, y, count(*) from (select key, (c_int+c_float+1+2) as x, sum(c_int) as y from \"c/b/o_t1\" group by c_float, \"c/b/o_t1\".c_int, key) R group by y, x");
+ parse("select \"cbo_/t3////\".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 >= 0) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0) group by c_float, \"c/b/o_t1\".c_int, key order by a) \"c/b/o_t1\" join (select key as p, c_int+1 as q, sum(c_int) as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 >= 0) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0) group by c_float, \"//cbo_t2\".c_int, key [...]
+ parse("select \"cbo_/t3////\".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 >= 0) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0) group by c_float, \"c/b/o_t1\".c_int, key having \"c/b/o_t1\".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b % c asc, b desc) \"c/b/o_t1\" left outer join (select key as p, c_int+1 as q, sum(c_int) as r from \"//cbo_t2\" where (\"//cbo_t2 [...]
+ parse("select \"cbo_/t3////\".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 >= 0) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0) group by c_float, \"c/b/o_t1\".c_int, key having \"c/b/o_t1\".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b+c, a desc) \"c/b/o_t1\" right outer join (select key as p, c_int+1 as q, sum(c_int) as r from \"//cbo_t2\" where (\"//cbo_t2\".c_ [...]
+ parse("select \"cbo_/t3////\".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 >= 0) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0) group by c_float, \"c/b/o_t1\".c_int, key having \"c/b/o_t1\".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by c+a desc) \"c/b/o_t1\" full outer join (select key as p, c_int+1 as q, sum(c_int) as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int [...]
+ parse("select \"cbo_/t3////\".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 >= 0) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0) group by c_float, \"c/b/o_t1\".c_int, key having \"c/b/o_t1\".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) \"c/b/o_t1\" join (select key as p, c_int+1 as q, sum(c_int) as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 >= 0) and (\"//cbo_t2\".c [...]
+ }
+
+ @Test
+ public void testTestGroupByIsEmptyAndThereIsNoOtherColsInAggr() throws ParseException {
+ parse("select unionsrc.key FROM (select 'tst1' as key, count(1) as value from default.src) unionsrc");
+ parse("select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from default.src) unionsrc");
+
+ parse("select unionsrc.key FROM (select 'max' as key, max(c_int) as value from \"cbo_/t3////\" s1\n" +
+ "\n" +
+ "UNION ALL\n" +
+ "\n" +
+ " select 'min' as key, min(c_int) as value from \"cbo_/t3////\" s2\n" +
+ "\n" +
+ " UNION ALL\n" +
+ "\n" +
+ " select 'avg' as key, avg(c_int) as value from \"cbo_/t3////\" s3) unionsrc order by unionsrc.key");
+
+ parse("select unionsrc.key, unionsrc.value FROM (select 'max' as key, max(c_int) as value from \"cbo_/t3////\" s1\n" +
+ "\n" +
+ "UNION ALL\n" +
+ "\n" +
+ " select 'min' as key, min(c_int) as value from \"cbo_/t3////\" s2\n" +
+ "\n" +
+ " UNION ALL\n" +
+ "\n" +
+ " select 'avg' as key, avg(c_int) as value from \"cbo_/t3////\" s3) unionsrc order by unionsrc.key");
+
+ parse("select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value from \"cbo_/t3////\" s1\n" +
+ "\n" +
+ " UNION ALL\n" +
+ "\n" +
+ " select 'min' as key, min(c_int) as value from \"cbo_/t3////\" s2\n" +
+ "\n" +
+ " UNION ALL\n" +
+ "\n" +
+ " select 'avg' as key, avg(c_int) as value from \"cbo_/t3////\" s3) unionsrc group by unionsrc.key order by unionsrc.key");
+ }
+
+ @Test
+ public void testSelectJoinTS() throws ParseException {
+ parse("select \"c/b/o_t1\".c_int, \"//cbo_t2\".c_int from \"c/b/o_t1\" join \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key");
+ parse("select \"c/b/o_t1\".key from \"c/b/o_t1\" join \"cbo_/t3////\"");
+ parse("select \"c/b/o_t1\".key from \"c/b/o_t1\" join \"cbo_/t3////\" where \"c/b/o_t1\".key=\"cbo_/t3////\".key and \"c/b/o_t1\".key >= 1");
+ parse("select \"c/b/o_t1\".c_int, \"//cbo_t2\".c_int from \"c/b/o_t1\" left outer join \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key");
+ parse("select \"c/b/o_t1\".c_int, \"//cbo_t2\".c_int from \"c/b/o_t1\" right outer join \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key");
+ parse("select \"c/b/o_t1\".c_int, \"//cbo_t2\".c_int from \"c/b/o_t1\" full outer join \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key");
+ parse("select b, \"c/b/o_t1\".c, \"//cbo_t2\".p, q, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".a=p join \"cbo_/t3////\" on \"c/b/o_t1\".a=key");
+ parse("select key, \"c/b/o_t1\".c_int, \"//cbo_t2\".p, q from \"c/b/o_t1\" join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".key=p join (select key as a, c_int as b, \"cbo_/t3////\".c_float as c from \"cbo_/t3////\")\"cbo_/t3////\" on \"c/b/o_t1\".key=a");
+ parse("select a, \"c/b/o_t1\".b, key, \"//cbo_t2\".c_int, \"cbo_/t3////\".p from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" join \"//cbo_t2\" on \"c/b/o_t1\".a=key join (select key as p, c_int as q, \"cbo_/t3////\".c_float as r from \"cbo_/t3////\")\"cbo_/t3////\" on \"c/b/o_t1\".a=\"cbo_/t3////\".p");
+ parse("select b, \"c/b/o_t1\".c, \"//cbo_t2\".c_int, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" join \"//cbo_t2\" on \"c/b/o_t1\".a=\"//cbo_t2\".key join \"cbo_/t3////\" on \"c/b/o_t1\".a=\"cbo_/t3////\".key");
+ parse("select \"cbo_/t3////\".c_int, b, \"//cbo_t2\".c_int, \"c/b/o_t1\".c from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" join \"//cbo_t2\" on \"c/b/o_t1\".a=\"//cbo_t2\".key join \"cbo_/t3////\" on \"c/b/o_t1\".a=\"cbo_/t3////\".key");
+ parse("select b, \"c/b/o_t1\".c, \"//cbo_t2\".p, q, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" left outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".a=p join \"cbo_/t3////\" on \"c/b/o_t1\".a=key");
+ parse("select key, \"c/b/o_t1\".c_int, \"//cbo_t2\".p, q from \"c/b/o_t1\" join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".key=p left outer join (select key as a, c_int as b, \"cbo_/t3////\".c_float as c from \"cbo_/t3////\")\"cbo_/t3////\" on \"c/b/o_t1\".key=a");
+ parse("select b, \"c/b/o_t1\".c, \"//cbo_t2\".p, q, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" right outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".a=p join \"cbo_/t3////\" on \"c/b/o_t1\".a=key");
+ parse("select key, \"c/b/o_t1\".c_int, \"//cbo_t2\".p, q from \"c/b/o_t1\" join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".key=p right outer join (select key as a, c_int as b, \"cbo_/t3////\".c_float as c from \"cbo_/t3////\")\"cbo_/t3////\" on \"c/b/o_t1\".key=a");
+ parse("select b, \"c/b/o_t1\".c, \"//cbo_t2\".p, q, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\") \"c/b/o_t1\" full outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".a=p join \"cbo_/t3////\" on \"c/b/o_t1\".a=key");
+ parse("select key, \"c/b/o_t1\".c_int, \"//cbo_t2\".p, q from \"c/b/o_t1\" join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\") \"//cbo_t2\" on \"c/b/o_t1\".key=p full outer join (select key as a, c_int as b, \"cbo_/t3////\".c_float as c from \"cbo_/t3////\")\"cbo_/t3////\" on \"c/b/o_t1\".key=a");
+ }
+
+ @Test
+ public void testSelectJoinFILTS() throws ParseException {
+ parse("select \"c/b/o_t1\".c_int, \"//cbo_t2\".c_int from \"c/b/o_t1\" join \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key where (\"c/b/o_t1\".c_int + \"//cbo_t2\".c_int == 2) and (\"c/b/o_t1\".c_int > 0 or \"//cbo_t2\".c_float >= 0)");
+ parse("select \"c/b/o_t1\".c_int, \"//cbo_t2\".c_int from \"c/b/o_t1\" left outer join \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key where (\"c/b/o_t1\".c_int + \"//cbo_t2\".c_int == 2) and (\"c/b/o_t1\".c_int > 0 or \"//cbo_t2\".c_float >= 0)");
+ parse("select \"c/b/o_t1\".c_int, \"//cbo_t2\".c_int from \"c/b/o_t1\" right outer join \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key where (\"c/b/o_t1\".c_int + \"//cbo_t2\".c_int == 2) and (\"c/b/o_t1\".c_int > 0 or \"//cbo_t2\".c_float >= 0)");
+ parse("select \"c/b/o_t1\".c_int, \"//cbo_t2\".c_int from \"c/b/o_t1\" full outer join \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key where (\"c/b/o_t1\".c_int + \"//cbo_t2\".c_int == 2) and (\"c/b/o_t1\".c_int > 0 or \"//cbo_t2\".c_float >= 0)");
+ parse("select b, \"c/b/o_t1\".c, \"//cbo_t2\".p, q, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" on \"c/b/o_t1\".a=p join [...]
+ parse("select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" left outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" on \"c/b/o_t1\ [...]
+ parse("select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" right outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" on \"c/b/o_t1 [...]
+ parse("select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" full outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" on \"c/b/o_t1\ [...]
+ parse("select * from (select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" full outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" [...]
+ parse("select * from (select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" left outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" [...]
+ parse("select * from (select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" left outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" [...]
+ parse("select * from (select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" left outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" [...]
+ parse("select * from (select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" right outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\ [...]
+ parse("select * from (select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" right outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\ [...]
+ parse("select * from (select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" right outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\ [...]
+ parse("select * from (select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" full outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" [...]
+ parse("select * from (select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" full outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" [...]
+ parse("select * from (select q, b, \"//cbo_t2\".p, \"c/b/o_t1\".c, \"cbo_/t3////\".c_int from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" full outer join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" [...]
+ }
+
+ @Test
+ public void testSelectTSJoinFilGBGBHavingLimit() throws ParseException {
+ parse("select key, (c_int+1)+2 as x, sum(c_int) from \"c/b/o_t1\" group by c_float, \"c/b/o_t1\".c_int, key order by x limit 1");
+ parse("select x, y, count(*) from (select key, (c_int+c_float+1+2) as x, sum(c_int) as y from \"c/b/o_t1\" group by c_float, \"c/b/o_t1\".c_int, key) R group by y, x order by x,y limit 1");
+ parse("select key from(select key from (select key from \"c/b/o_t1\" limit 5)\"//cbo_t2\" limit 5)\"cbo_/t3////\" limit 5");
+ parse("select key, c_int from(select key, c_int from (select key, c_int from \"c/b/o_t1\" order by c_int limit 5)\"c/b/o_t1\" order by c_int limit 5)\"//cbo_t2\" order by c_int limit 5");
+ parse("select \"cbo_/t3////\".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 >= 0) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0) group by c_float, \"c/b/o_t1\".c_int, key order by a limit 5) \"c/b/o_t1\" join (select key as p, c_int+1 as q, sum(c_int) as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 >= 0) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0) group by c_float, \"//cbo_t2\".c_ [...]
+ parse("select \"cbo_/t3////\".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 >= 0) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0) group by c_float, \"c/b/o_t1\".c_int, key having \"c/b/o_t1\".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b % c asc, b desc limit 5) \"c/b/o_t1\" left outer join (select key as p, c_int+1 as q, sum(c_int) as r from \"//cbo_t2\" where (\" [...]
+ }
+
+ @Test
+ public void testSemiJoin() throws ParseException {
+ parse("select \"c/b/o_t1\".c_int from \"c/b/o_t1\" left semi join \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key");
+ parse("select \"c/b/o_t1\".c_int from \"c/b/o_t1\" left semi join \"//cbo_t2\" on \"c/b/o_t1\".key=\"//cbo_t2\".key where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)");
+ parse("select * from (select c, b, a from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" left semi join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" on \"c/b/o_t1\".a=p left semi join \"cbo_/t3////\" o [...]
+ parse("select * from (select \"cbo_/t3////\".c_int, \"c/b/o_t1\".c, b from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 = 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" left semi join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" on \"c/b/o_t1\".a=p [...]
+ parse("select * from (select c_int, b, \"c/b/o_t1\".c from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" left semi join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" on \"c/b/o_t1\".a=p right outer joi [...]
+ parse("select * from (select c_int, b, \"c/b/o_t1\".c from (select key as a, c_int as b, \"c/b/o_t1\".c_float as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 == 2) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0)) \"c/b/o_t1\" left semi join (select \"//cbo_t2\".key as p, \"//cbo_t2\".c_int as q, c_float as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 == 2) and (\"//cbo_t2\".c_int > 0 or \"//cbo_t2\".c_float >= 0)) \"//cbo_t2\" on \"c/b/o_t1\".a=p full outer join [...]
+ parse("select a, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 >= 0) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0) group by c_float, \"c/b/o_t1\".c_int, key having \"c/b/o_t1\".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by a+b desc, c asc) \"c/b/o_t1\" left semi join (select key as p, c_int+1 as q, sum(c_int) as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 >= 0) and [...]
+ parse("select a, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from \"c/b/o_t1\" where (\"c/b/o_t1\".c_int + 1 >= 0) and (\"c/b/o_t1\".c_int > 0 or \"c/b/o_t1\".c_float >= 0) group by c_float, \"c/b/o_t1\".c_int, key having \"c/b/o_t1\".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by a+b desc, c asc limit 5) \"c/b/o_t1\" left semi join (select key as p, c_int+1 as q, sum(c_int) as r from \"//cbo_t2\" where (\"//cbo_t2\".c_int + 1 > [...]
+ }
+
+ @Test
+ public void testSelectTs() throws ParseException {
+ parse("select * from \"c/b/o_t1\"");
+ parse("select * from \"c/b/o_t1\" as \"c/b/o_t1\"");
+ parse("select * from \"c/b/o_t1\" as \"//cbo_t2\"");
+ parse("select \"c/b/o_t1\".key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from \"c/b/o_t1\"");
+ parse("select * from \"c/b/o_t1\" where (((key=1) and (c_float=10)) and (c_int=20))");
+ }
+
+ @Test
+ public void testSelectFilTs() throws ParseException {
+ parse("select * from \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0");
+ parse("select * from \"c/b/o_t1\" as \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ parse("select * from \"c/b/o_t1\" as \"//cbo_t2\" where \"//cbo_t2\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ parse("select \"//cbo_t2\".key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from \"c/b/o_t1\" as \"//cbo_t2\" where \"//cbo_t2\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ }
+
+ @Test
+ public void testSelectSelectTsFil() throws ParseException {
+ parse("select * from (select * from \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0) as \"c/b/o_t1\"");
+ parse("select * from (select * from \"c/b/o_t1\" as \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as \"c/b/o_t1\"");
+ parse("select * from (select * from \"c/b/o_t1\" as \"//cbo_t2\" where \"//cbo_t2\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as \"c/b/o_t1\"");
+ parse("select * from (select \"//cbo_t2\".key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from \"c/b/o_t1\" as \"//cbo_t2\" where \"//cbo_t2\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as \"c/b/o_t1\"");
+ parse("select * from (select * from \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0) as \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0");
+ parse("select * from (select * from \"c/b/o_t1\" as \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ parse("select * from (select * from \"c/b/o_t1\" as \"//cbo_t2\" where \"//cbo_t2\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as \"//cbo_t2\" where \"//cbo_t2\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ parse("select * from (select \"//cbo_t2\".key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from \"c/b/o_t1\" as \"//cbo_t2\" where \"//cbo_t2\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0 and y+c_int >= 0 or x <= 100");
+ parse("select \"c/b/o_t1\".c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0) as \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0");
+ parse("select \"//cbo_t2\".c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0) as \"//cbo_t2\" where \"//cbo_t2\".c_int >= 0");
+ parse("select * from (select * from \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0) as \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0");
+ parse("select * from (select * from \"c/b/o_t1\" as \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ parse("select * from (select * from \"c/b/o_t1\" as \"//cbo_t2\" where \"//cbo_t2\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as \"//cbo_t2\" where \"//cbo_t2\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100");
+ parse("select * from (select \"//cbo_t2\".key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from \"c/b/o_t1\" as \"//cbo_t2\" where \"//cbo_t2\".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0 and y+c_int >= 0 or x <= 100");
+ parse("select \"c/b/o_t1\".c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0) as \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0");
+ parse("select \"//cbo_t2\".c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from \"c/b/o_t1\" where \"c/b/o_t1\".c_int >= 0) as \"//cbo_t2\" where \"//cbo_t2\".c_int >= 0");
+ }
+
+ @Test
+ public void testNullExprInSelectList() throws ParseException {
+ parse("select null from \"cbo_/t3////\"");
+ }
+
+ @Test
+ public void testUnaryOperator() throws ParseException {
+ parse("select key from \"c/b/o_t1\" where c_int = -6 or c_int = +6");
+ }
+
+ @Test
+ public void testQueryReferencingOnlyPartitionColumns() throws ParseException {
+ parse("select count(\"c/b/o_t1\".dt) from \"c/b/o_t1\" join \"//cbo_t2\" on \"c/b/o_t1\".dt = \"//cbo_t2\".dt where \"c/b/o_t1\".dt = '2014' ");
+ }
+
+ @Test
+ public void testGetStatsWithEmptyPartitionList() throws ParseException {
+ parse("select \"c/b/o_t1\".value from \"c/b/o_t1\" join \"//cbo_t2\" on \"c/b/o_t1\".key = \"//cbo_t2\".key where \"c/b/o_t1\".dt = '10' and \"c/b/o_t1\".c_boolean = true");
+ }
+
+ @Test
+ public void testSubQueriesNotExistsDistinctCorr() throws ParseException {
+ parse("select * \n" +
+ "\n" +
+ "from \"src/_/cbo\" b \n" +
+ "\n" +
+ "where not exists \n" +
+ "\n" +
+ " (select distinct a.key \n" +
+ "\n" +
+ " from \"src/_/cbo\" a \n" +
+ "\n" +
+ " where b.value = a.value and a.value > 'val_2'\n" +
+ "\n" +
+ " )\n" +
+ "\n");
+ }
+
+ @Test
+ public void testSubQueriesNotExistsNoAggCorrHaving() throws ParseException {
+ parse("select * \n" +
+ "\n" +
+ "from \"src/_/cbo\" b \n" +
+ "\n" +
+ "group by key, value\n" +
+ "\n" +
+ "having not exists \n" +
+ "\n" +
+ " (select a.key \n" +
+ "\n" +
+ " from \"src/_/cbo\" a \n" +
+ "\n" +
+ " where b.value = a.value and a.key = b.key and a.value > 'val_12'\n" +
+ "\n" +
+ " )\n" +
+ "\n");
+ }
+
+ @Test
+ public void testSubQueryInFrom() throws ParseException {
+ parse("select * \n" +
+ "\n" +
+ "from (select * \n" +
+ "\n" +
+ " from \"src/_/cbo\" b \n" +
+ "\n" +
+ " where exists \n" +
+ "\n" +
+ " (select a.key \n" +
+ "\n" +
+ " from \"src/_/cbo\" a \n" +
+ "\n" +
+ " where b.value = a.value and a.key = b.key and a.value > 'val_9')\n" +
+ "\n" +
+ " ) a\n" +
+ "\n");
+ }
+
+ @Test
+ public void testSubQueryIn() throws ParseException {
+ // from, having
+ parse("select *\n" +
+ "\n" +
+ "from (select b.key, count(*) \n" +
+ "\n" +
+ " from \"src/_/cbo\" b \n" +
+ "\n" +
+ " group by b.key\n" +
+ "\n" +
+ " having exists \n" +
+ "\n" +
+ " (select a.key \n" +
+ "\n" +
+ " from \"src/_/cbo\" a \n" +
+ "\n" +
+ " where a.key = b.key and a.value > 'val_9'\n" +
+ "\n" +
+ " )\n" +
+ "\n" +
+ ") a\n" +
+ "\n");
+
+ // non agg, non corr
+ parse("select * \n" +
+ "\n" +
+ "from \"src/_/cbo\" \n" +
+ "\n" +
+ "where \"src/_/cbo\".key in (select key from \"src/_/cbo\" s1 where s1.key > '9') order by key\n" +
+ "\n");
+
+ // distinct, corr
+ parse("select * \n" +
+ "\n" +
+ "from \"src/_/cbo\" b \n" +
+ "\n" +
+ "where b.key in\n" +
+ "\n" +
+ " (select distinct a.key \n" +
+ "\n" +
+ " from \"src/_/cbo\" a \n" +
+ "\n" +
+ " where b.value = a.value and a.key > '9'\n" +
+ "\n" +
+ " ) order by b.key\n" +
+ "\n");
+
+ // non agg, corr, with join in Parent Query
+ parse("select p.p_partkey, li.l_suppkey \n" +
+ "\n" +
+ "from (select distinct l_partkey as p_partkey from \"line/item\") p join \"line/item\" li on p.p_partkey = li.l_partkey \n" +
+ "\n" +
+ "where li.l_linenumber = 1 and\n" +
+ "\n" +
+ " li.l_orderkey in (select l_orderkey from \"line/item\" where l_shipmode = 'AIR' and l_linenumber = li.l_linenumber)\n" +
+ "\n" +
+ " order by p.p_partkey\n" +
+ "\n");
+
+ // where and having
+ parse("select key, value, count(*) \n" +
+ "\n" +
+ "from \"src/_/cbo\" b\n" +
+ "\n" +
+ "where b.key in (select key from \"src/_/cbo\" where \"src/_/cbo\".key > '8')\n" +
+ "\n" +
+ "group by key, value\n" +
+ "\n" +
+ "having count(*) in (select count(*) from \"src/_/cbo\" s1 where s1.key > '9' group by s1.key ) order by key\n" +
+ "\n");
+
+ // non agg, non corr, windowing
+ parse("select p_mfgr, p_name, avg(p_size) \n" +
+ "\n" +
+ "from \"p/a/r/t\" \n" +
+ "\n" +
+ "group by p_mfgr, p_name\n" +
+ "\n" +
+ "having p_name in \n" +
+ "\n" +
+ " (select first_value(p_name) over(partition by p_mfgr order by p_size) from \"p/a/r/t\") order by p_mfgr\n");
+ }
+
+ @Test
+ public void testSubQueriesNotIn() throws ParseException {
+ // non agg, non corr
+ parse("select * \n" +
+ "\n" +
+ "from \"src/_/cbo\" \n" +
+ "\n" +
+ "where \"src/_/cbo\".key not in \n" +
+ "\n" +
+ " ( select key from \"src/_/cbo\" s1 \n" +
+ "\n" +
+ " where s1.key > '2'\n" +
+ "\n" +
+ " ) order by key\n" +
+ "\n");
+
+ // non agg, corr
+ parse("select p_mfgr, b.p_name, p_size \n" +
+ "\n" +
+ "from \"p/a/r/t\" b \n" +
+ "\n" +
+ "where b.p_name not in \n" +
+ "\n" +
+ " (select p_name \n" +
+ "\n" +
+ " from (select p_mfgr, p_name, p_size as r from \"p/a/r/t\") a \n" +
+ "\n" +
+ " where r < 10 and b.p_mfgr = a.p_mfgr \n" +
+ "\n" +
+ " ) order by p_mfgr,p_size");
+
+ // agg, non corr
+ parse("" +
+ "select p_name, p_size \n" +
+ "\n" +
+ "from \n" +
+ "\n" +
+ "\"p/a/r/t\" where \"p/a/r/t\".p_size not in \n" +
+ "\n" +
+ " (select avg(p_size) \n" +
+ "\n" +
+ " from (select p_size from \"p/a/r/t\") a \n" +
+ "\n" +
+ " where p_size < 10\n" +
+ "\n" +
+ " ) order by p_name\n");
+
+ // agg, corr
+ parse("" +
+ "select p_mfgr, p_name, p_size \n" +
+ "\n" +
+ "from \"p/a/r/t\" b where b.p_size not in \n" +
+ "\n" +
+ " (select min(p_size) \n" +
+ "\n" +
+ " from (select p_mfgr, p_size from \"p/a/r/t\") a \n" +
+ "\n" +
+ " where p_size < 10 and b.p_mfgr = a.p_mfgr\n" +
+ "\n" +
+ " ) order by p_name\n");
+
+ // non agg, non corr, Group By in Parent Query
+ parse("select li.l_partkey, count(*) \n" +
+ "\n" +
+ "from \"line/item\" li \n" +
+ "\n" +
+ "where li.l_linenumber = 1 and \n" +
+ "\n" +
+ " li.l_orderkey not in (select l_orderkey from \"line/item\" where l_shipmode = 'AIR') \n" +
+ "\n" +
+ "group by li.l_partkey order by li.l_partkey\n");
+
+ // non agg, corr, having
+ parse("select b.p_mfgr, min(p_retailprice) \n" +
+ "\n" +
+ "from \"p/a/r/t\" b \n" +
+ "\n" +
+ "group by b.p_mfgr\n" +
+ "\n" +
+ "having b.p_mfgr not in \n" +
+ "\n" +
+ " (select p_mfgr \n" +
+ "\n" +
+ " from (select p_mfgr, min(p_retailprice) l, max(p_retailprice) r, avg(p_retailprice) a from \"p/a/r/t\" group by p_mfgr) a \n" +
+ "\n" +
+ " where min(p_retailprice) = l and r - l > 600\n" +
+ "\n" +
+ " )\n" +
+ "\n" +
+ " order by b.p_mfgr\n");
+
+ // agg, non corr, having
+ parse("select b.p_mfgr, min(p_retailprice) \n" +
+ "\n" +
+ "from \"p/a/r/t\" b \n" +
+ "\n" +
+ "group by b.p_mfgr\n" +
+ "\n" +
+ "having b.p_mfgr not in \n" +
+ "\n" +
+ " (select p_mfgr \n" +
+ "\n" +
+ " from \"p/a/r/t\" a\n" +
+ "\n" +
+ " group by p_mfgr\n" +
+ "\n" +
+ " having max(p_retailprice) - min(p_retailprice) > 600\n" +
+ "\n" +
+ " )\n" +
+ "\n" +
+ " order by b.p_mfgr \n");
+ }
+
+ @Test
+ public void testUDF_UDAF() throws ParseException {
+ parse("select count(*), count(c_int), sum(c_int), avg(c_int), max(c_int), min(c_int) from \"c/b/o_t1\"");
+ parse("select count(*), count(c_int) as a, sum(c_int), avg(c_int), max(c_int), min(c_int), case c_int when 0 then 1 when 1 then 2 else 3 end, sum(case c_int when 0 then 1 when 1 then 2 else 3 end) from \"c/b/o_t1\" group by c_int order by a");
+ parse("select * from (select count(*) as a, count(distinct c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f from \"c/b/o_t1\") \"c/b/o_t1\"");
+ parse("select * from (select count(*) as a, count(distinct c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f, case c_int when 0 then 1 when 1 then 2 else 3 end as g, sum(case c_int when 0 then 1 when 1 then 2 else 3 end) as h from \"c/b/o_t1\" group by c_int) \"c/b/o_t1\" order by a");
+ parse("select f,a,e,b from (select count(*) as a, count(c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f from \"c/b/o_t1\") \"c/b/o_t1\"");
+ parse("select f,a,e,b from (select count(*) as a, count(distinct c_int) as b, sum(distinct c_int) as c, avg(distinct c_int) as d, max(distinct c_int) as e, min(distinct c_int) as f from \"c/b/o_t1\") \"c/b/o_t1\"");
+ parse("select key,count(c_int) as a, avg(c_float) from \"c/b/o_t1\" group by key order by a");
+ parse("select count(distinct c_int) as a, avg(c_float) from \"c/b/o_t1\" group by c_float order by a");
+ parse("select count(distinct c_int) as a, avg(c_float) from \"c/b/o_t1\" group by c_int order by a");
+ parse("select count(distinct c_int) as a, avg(c_float) from \"c/b/o_t1\" group by c_float, c_int order by a");
+ }
+
+ @Test
+ public void testUnionAll() throws ParseException {
+ parse("select * from (select * from \"c/b/o_t1\" order by key, c_boolean, value, dt)a union all select * from (select * from \"//cbo_t2\" order by key, c_boolean, value, dt)b");
+ parse("select key from (select key, c_int from (select * from \"c/b/o_t1\" union all select * from \"//cbo_t2\" where \"//cbo_t2\".key >=0)r1 union all select key, c_int from \"cbo_/t3////\")r2 where key >=0 order by key");
+ parse("select r2.key from (select key, c_int from (select key, c_int from \"c/b/o_t1\" union all select key, c_int from \"cbo_/t3////\" )r1 union all select key, c_int from \"cbo_/t3////\")r2 join (select key, c_int from (select * from \"c/b/o_t1\" union all select * from \"//cbo_t2\" where \"//cbo_t2\".key >=0)r1 union all select key, c_int from \"cbo_/t3////\")r3 on r2.key=r3.key where r3.key >=0 order by r2.key");
+ }
+
+ @Test
+ public void testCreateView() throws ParseException {
+ parse("create view v1_n7 as select c_int, value, c_boolean, dt from \"c/b/o_t1\"");
+ parse("create view v2_n2 as select c_int, value from \"//cbo_t2\"");
+ parse("create view v3_n0 as select v1_n7.value val from v1_n7 join \"c/b/o_t1\" on v1_n7.c_boolean = \"c/b/o_t1\".c_boolean");
+ }
+
+ @Test
+ public void testWithClause() throws ParseException {
+ parse("with q1 as ( select key from \"c/b/o_t1\" where key = '1')\n" +
+ "select count(*) from q1");
+ parse("with q1 as ( select key,c_int from \"c/b/o_t1\" where key = '1')\n" +
+ "select * from q1");
+ parse("with q1 as ( select \"c/b/o_t1\".c_int c_int from q2 join \"c/b/o_t1\" where q2.c_int = \"c/b/o_t1\".c_int and \"c/b/o_t1\".dt='2014'),\n" +
+ "q2 as ( select c_int,c_boolean from v1_n7 where value = '1' or dt = '14')\n" +
+ "select count(*) from q1 join q2 join v4_n0 on q1.c_int = q2.c_int and v4_n0.c_int = q2.c_int");
+ }
+
+ @Test
+ public void testWindowingFunctions() throws ParseException {
+ parse("select count(c_int) over() from \"c/b/o_t1\"");
+ parse("select count(c_int) over(partition by c_float order by key), sum(c_float) over(partition by c_float order by key), max(c_int) over(partition by c_float order by key), min(c_int) over(partition by c_float order by key), row_number() over(partition by c_float order by key) as rn, rank() over(partition by c_float order by key), dense_rank() over(partition by c_float order by key), round(percent_rank() over(partition by c_float order by key), 2), lead(c_int, 2, c_int) over(partiti [...]
+ parse("select * from (select count(c_int) over(partition by c_float order by key), sum(c_float) over(partition by c_float order by key), max(c_int) over(partition by c_float order by key), min(c_int) over(partition by c_float order by key), row_number() over(partition by c_float order by key) as rn, rank() over(partition by c_float order by key), dense_rank() over(partition by c_float order by key), round(percent_rank() over(partition by c_float order by key),2), lead(c_int, 2, c_int [...]
+ parse("select x from (select count(c_int) over() as x, sum(c_float) over() from \"c/b/o_t1\") \"c/b/o_t1\"");
+ parse("select 1+sum(c_int) over() from \"c/b/o_t1\"");
+ parse("select sum(c_int)+sum(sum(c_int)) over() from \"c/b/o_t1\"");
+ parse("select * from (select max(c_int) over (partition by key order by value Rows UNBOUNDED PRECEDING), min(c_int) over (partition by key order by value rows current row), count(c_int) over(partition by key order by value ROWS 1 PRECEDING), avg(value) over (partition by key order by value Rows between unbounded preceding and unbounded following), sum(value) over (partition by key order by value rows between unbounded preceding and current row), avg(c_float) over (partition by key or [...]
+ parse("select i, a, h, b, c, d, e, f, g, a as x, a +1 as y from (select max(c_int) over (partition by key order by value range UNBOUNDED PRECEDING) a, min(c_int) over (partition by key order by value range current row) b, count(c_int) over(partition by key order by value range 1 PRECEDING) c, avg(value) over (partition by key order by value range between unbounded preceding and unbounded following) d, sum(value) over (partition by key order by value range between unbounded preceding [...]
+ parse("select *, rank() over(partition by key order by value) as rr from default.src1");
+ parse("select *, rank() over(partition by key order by value) from default.src1");
+ }
+
+ @Test
+ public void testInsert() throws ParseException {
+ parse("insert into table \"src/_/cbo\" select * from default.src");
+ parse("insert overwrite table \"src/_/cbo\" select * from default.src");
+ parse("insert into \"t//\" values(1)");
+ parse("insert into \"t//\" values(null)");
+ }
+
+ @Test
+ public void testDropTable() throws ParseException {
+ parse("drop table \"t//\"");
+ }
+
+ @Test
+ public void testExplain() throws ParseException {
+ parse("explain select * from \"t//\"");
+ }
+
+ @Test
+ public void testDropDatabase() throws ParseException {
+ parse("drop database \"db~!@#$%^&*(),<>\" cascade");
+ }
+}
diff --git a/ql/src/test/queries/clientpositive/special_character_in_tabnames_1.q b/ql/src/test/queries/clientpositive/special_character_in_tabnames_1.q
index 5ba6c5b..ed998b7 100644
--- a/ql/src/test/queries/clientpositive/special_character_in_tabnames_1.q
+++ b/ql/src/test/queries/clientpositive/special_character_in_tabnames_1.q
@@ -1,10 +1,5 @@
---! qt:disabled:flaky HIVE-23568
--! qt:dataset:src1
--! qt:dataset:src
---! qt:dataset:lineitem
---! qt:dataset:cbo_t3
---! qt:dataset:cbo_t2
---! qt:dataset:cbo_t1
set hive.cbo.enable=true;
set hive.exec.check.crossproducts=false;
set hive.stats.fetch.column.stats=true;
@@ -61,72 +56,26 @@ LOAD DATA LOCAL INPATH '../../data/files/lineitem.txt' OVERWRITE INTO TABLE `lin
create table `src/_/cbo` as select * from default.src;
-analyze table `c/b/o_t1` partition (dt) compute statistics;
-
analyze table `c/b/o_t1` compute statistics for columns key, value, c_int, c_float, c_boolean;
-analyze table `//cbo_t2` partition (dt) compute statistics;
-
analyze table `//cbo_t2` compute statistics for columns key, value, c_int, c_float, c_boolean;
-analyze table `cbo_/t3////` compute statistics;
-
analyze table `cbo_/t3////` compute statistics for columns key, value, c_int, c_float, c_boolean;
-analyze table `src/_/cbo` compute statistics;
-
analyze table `src/_/cbo` compute statistics for columns;
-analyze table `p/a/r/t` compute statistics;
-
analyze table `p/a/r/t` compute statistics for columns;
-analyze table `line/item` compute statistics;
-
analyze table `line/item` compute statistics for columns;
select key, (c_int+1)+2 as x, sum(c_int) from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key;
-select x, y, count(*) from (select key, (c_int+c_float+1+2) as x, sum(c_int) as y from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key) R group by y, x;
-
-select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key order by a) `c/b/o_t1` join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0) group by c_float, `//cbo_t2`.c_int, key order by q/10 desc, r asc) `//cbo_ [...]
-
-select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b % c asc, b desc) `c/b/o_t1` left outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_ [...]
-
-select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b+c, a desc) `c/b/o_t1` right outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c [...]
-
-
-
-select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by c+a desc) `c/b/o_t1` full outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int [...]
-
-
-
-select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) `c/b/o_t1` join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= [...]
-
-
-
set hive.cbo.enable=false;
-
set hive.exec.check.crossproducts=false;
-
-
-
set hive.stats.fetch.column.stats=true;
-
set hive.auto.convert.join=false;
-
-
-- 21. Test groupby is empty and there is no other cols in aggr
-
-select unionsrc.key FROM (select 'tst1' as key, count(1) as value from default.src) unionsrc;
-
-
-
-select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from default.src) unionsrc;
-
-
-
select unionsrc.key FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1
UNION ALL
@@ -137,359 +86,42 @@ UNION ALL
select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc order by unionsrc.key;
-
-
-select unionsrc.key, unionsrc.value FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1
-
-UNION ALL
-
- select 'min' as key, min(c_int) as value from `cbo_/t3////` s2
-
- UNION ALL
-
- select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc order by unionsrc.key;
-
-
-
-select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1
-
- UNION ALL
-
- select 'min' as key, min(c_int) as value from `cbo_/t3////` s2
-
- UNION ALL
-
- select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc group by unionsrc.key order by unionsrc.key;
-
-
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
-
-- SORT_QUERY_RESULTS
-- 4. Test Select + Join + TS
-
-select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key;
-
-select `c/b/o_t1`.key from `c/b/o_t1` join `cbo_/t3////`;
-
-select `c/b/o_t1`.key from `c/b/o_t1` join `cbo_/t3////` where `c/b/o_t1`.key=`cbo_/t3////`.key and `c/b/o_t1`.key >= 1;
-
-select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` left outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key;
-
-select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` right outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key;
-
-select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` full outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key;
-
-
-
-select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key;
-
-select key, `c/b/o_t1`.c_int, `//cbo_t2`.p, q from `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.key=p join (select key as a, c_int as b, `cbo_/t3////`.c_float as c from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.key=a;
-
-select a, `c/b/o_t1`.b, key, `//cbo_t2`.c_int, `cbo_/t3////`.p from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.a=key join (select key as p, c_int as q, `cbo_/t3////`.c_float as r from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.a=`cbo_/t3////`.p;
-
-select b, `c/b/o_t1`.c, `//cbo_t2`.c_int, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.a=`//cbo_t2`.key join `cbo_/t3////` on `c/b/o_t1`.a=`cbo_/t3////`.key;
-
-select `cbo_/t3////`.c_int, b, `//cbo_t2`.c_int, `c/b/o_t1`.c from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.a=`//cbo_t2`.key join `cbo_/t3////` on `c/b/o_t1`.a=`cbo_/t3////`.key;
-
-
-
-select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` left outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key;
-
-select key, `c/b/o_t1`.c_int, `//cbo_t2`.p, q from `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.key=p left outer join (select key as a, c_int as b, `cbo_/t3////`.c_float as c from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.key=a;
-
-
-
-select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` right outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key;
-
-select key, `c/b/o_t1`.c_int, `//cbo_t2`.p, q from `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.key=p right outer join (select key as a, c_int as b, `cbo_/t3////`.c_float as c from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.key=a;
-
-
-
-select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` full outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key;
-
-select key, `c/b/o_t1`.c_int, `//cbo_t2`.p, q from `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.key=p full outer join (select key as a, c_int as b, `cbo_/t3////`.c_float as c from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.key=a;
-
-
+explain select `c/b/o_t1`.key from `c/b/o_t1` join `cbo_/t3////`;
-- 5. Test Select + Join + FIL + TS
-
-select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + `//cbo_t2`.c_int == 2) and (`c/b/o_t1`.c_int > 0 or `//cbo_t2`.c_float >= 0);
-
-select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` left outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + `//cbo_t2`.c_int == 2) and (`c/b/o_t1`.c_int > 0 or `//cbo_t2`.c_float >= 0);
-
-select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` right outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + `//cbo_t2`.c_int == 2) and (`c/b/o_t1`.c_int > 0 or `//cbo_t2`.c_float >= 0);
-
-select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` full outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + `//cbo_t2`.c_int == 2) and (`c/b/o_t1`.c_int > 0 or `//cbo_t2`.c_float >= 0);
-
-
-
-select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key where (b + [...]
-
-
-
-select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key [...]
-
-
-
-select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` right outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key [...]
-
-
-
-select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` full outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key [...]
-
-
-
-select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` full outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c [...]
-
-
-
-select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p left outer join `cbo_/t3 [...]
-
-
-
-select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p right outer join `cbo_/t [...]
-
-
-
-select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p full outer join `cbo_/t3 [...]
-
-
-
-select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` right outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p right outer join `cbo_/ [...]
-
-
-
-select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` right outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p left outer join `cbo_/t [...]
-
-
-
-select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` right outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p full outer join `cbo_/t [...]
-
-
-
-select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` full outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p full outer join `cbo_/t3 [...]
-
-
-
-select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` full outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p left outer join `cbo_/t3 [...]
-
-
-
-select * from (select q, b, `//cbo_t2`.p, `c/b/o_t1`.c, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` full outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p right outer join `cbo_/t [...]
-
-
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
+explain select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + `//cbo_t2`.c_int == 2) and (`c/b/o_t1`.c_int > 0 or `//cbo_t2`.c_float >= 0);
-- 7. Test Select + TS + Join + Fil + GB + GB Having + Limit
-
-select key, (c_int+1)+2 as x, sum(c_int) from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key order by x limit 1;
-
-select x, y, count(*) from (select key, (c_int+c_float+1+2) as x, sum(c_int) as y from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key) R group by y, x order by x,y limit 1;
-
-select key from(select key from (select key from `c/b/o_t1` limit 5)`//cbo_t2` limit 5)`cbo_/t3////` limit 5;
-
-select key, c_int from(select key, c_int from (select key, c_int from `c/b/o_t1` order by c_int limit 5)`c/b/o_t1` order by c_int limit 5)`//cbo_t2` order by c_int limit 5;
-
-
-
-select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key order by a limit 5) `c/b/o_t1` join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0) group by c_float, `//cbo_t2`.c_int, key order by q/10 desc, r asc [...]
-
-
-
-select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b % c asc, b desc limit 5) `c/b/o_t1` left outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and [...]
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
+explain select key, (c_int+1)+2 as x, sum(c_int) from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key order by x limit 1;
-- 12. SemiJoin
-
-select `c/b/o_t1`.c_int from `c/b/o_t1` left semi join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key;
-
-select `c/b/o_t1`.c_int from `c/b/o_t1` left semi join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0);
-
-select * from (select c, b, a from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left semi join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p left semi join `cbo_/t3////` on `c/b/o_t1`.a=key where (b + 1 == 2) and [...]
-
-select * from (select `cbo_/t3////`.c_int, `c/b/o_t1`.c, b from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 = 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left semi join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p left outer join `cbo_/t3////` on `c/b/o_t1` [...]
-
-select * from (select c_int, b, `c/b/o_t1`.c from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left semi join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p right outer join `cbo_/t3////` on `c/b/o_t1`.a=key where [...]
-
-select * from (select c_int, b, `c/b/o_t1`.c from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 == 2) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0)) `c/b/o_t1` left semi join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 == 2) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0)) `//cbo_t2` on `c/b/o_t1`.a=p full outer join `cbo_/t3////` on `c/b/o_t1`.a=key where [...]
-
-select a, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by a+b desc, c asc) `c/b/o_t1` left semi join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int > 0 or `//c [...]
-
-select a, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by a+b desc, c asc limit 5) `c/b/o_t1` left semi join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int > [...]
-
-
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
+explain select `c/b/o_t1`.c_int from `c/b/o_t1` left semi join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key;
-- 1. Test Select + TS
-
-select * from `c/b/o_t1`;
-
-select * from `c/b/o_t1` as `c/b/o_t1`;
-
-select * from `c/b/o_t1` as `//cbo_t2`;
-
-
-
-select `c/b/o_t1`.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from `c/b/o_t1`;
-
-select * from `c/b/o_t1` where (((key=1) and (c_float=10)) and (c_int=20));
-
-
+explain select * from `c/b/o_t1` as `c/b/o_t1`;
-- 2. Test Select + TS + FIL
-
-select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0;
-
-select * from `c/b/o_t1` as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-select * from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-
-
-select `//cbo_t2`.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-
+explain select * from `c/b/o_t1` as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-- 3 Test Select + Select + TS + FIL
-
-select * from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1`;
-
-select * from (select * from `c/b/o_t1` as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1`;
-
-select * from (select * from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1`;
-
-select * from (select `//cbo_t2`.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1`;
-
-
-
-select * from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0;
-
-select * from (select * from `c/b/o_t1` as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-select * from (select * from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-select * from (select `//cbo_t2`.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and y+c_int >= 0 or x <= 100;
-
-
-
-select `c/b/o_t1`.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0;
-
-select `//cbo_t2`.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `//cbo_t2` where `//cbo_t2`.c_int >= 0;
-
-
-
-
-
-
-
-select * from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0;
-
-select * from (select * from `c/b/o_t1` as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-select * from (select * from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-select * from (select `//cbo_t2`.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from `c/b/o_t1` as `//cbo_t2` where `//cbo_t2`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and y+c_int >= 0 or x <= 100;
-
-
-
-select `c/b/o_t1`.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0;
-
-select `//cbo_t2`.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `//cbo_t2` where `//cbo_t2`.c_int >= 0;
-
-
-
-
-
-
+explain select * from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1`;
-- 13. null expr in select list
-
-select null from `cbo_/t3////`;
-
-
+explain select null from `cbo_/t3////`;
-- 14. unary operator
-
-select key from `c/b/o_t1` where c_int = -6 or c_int = +6;
-
-
+explain select key from `c/b/o_t1` where c_int = -6 or c_int = +6;
-- 15. query referencing only partition columns
-
-select count(`c/b/o_t1`.dt) from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.dt = `//cbo_t2`.dt where `c/b/o_t1`.dt = '2014' ;
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
+explain select count(`c/b/o_t1`.dt) from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.dt = `//cbo_t2`.dt where `c/b/o_t1`.dt = '2014' ;
-- 20. Test get stats with empty partition list
-
-select `c/b/o_t1`.value from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key = `//cbo_t2`.key where `c/b/o_t1`.dt = '10' and `c/b/o_t1`.c_boolean = true;
-
-
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
+explain select `c/b/o_t1`.value from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key = `//cbo_t2`.key where `c/b/o_t1`.dt = '10' and `c/b/o_t1`.c_boolean = true;
@@ -497,15 +129,15 @@ set hive.auto.convert.join=false;
-- distinct, corr
-select *
+explain select *
-from `src/_/cbo` b
+from `src/_/cbo` b
-where not exists
+where not exists
- (select distinct a.key
+ (select distinct a.key
- from `src/_/cbo` a
+ from `src/_/cbo` a
where b.value = a.value and a.value > 'val_2'
@@ -517,17 +149,17 @@ where not exists
-- no agg, corr, having
-select *
+explain select *
-from `src/_/cbo` b
+from `src/_/cbo` b
group by key, value
-having not exists
+having not exists
- (select a.key
+ (select a.key
- from `src/_/cbo` a
+ from `src/_/cbo` a
where b.value = a.value and a.key = b.key and a.value > 'val_12'
@@ -541,17 +173,17 @@ having not exists
-- view test
-create view cv1_n0 as
+create view cv1_n0 as
-select *
+select *
-from `src/_/cbo` b
+from `src/_/cbo` b
where exists
- (select a.key
+ (select a.key
- from `src/_/cbo` a
+ from `src/_/cbo` a
where b.value = a.value and a.key = b.key and a.value > 'val_9')
@@ -567,17 +199,17 @@ select * from cv1_n0
-- sq in from
-select *
+explain select *
-from (select *
+from (select *
- from `src/_/cbo` b
+ from `src/_/cbo` b
- where exists
+ where exists
- (select a.key
+ (select a.key
- from `src/_/cbo` a
+ from `src/_/cbo` a
where b.value = a.value and a.key = b.key and a.value > 'val_9')
@@ -589,19 +221,19 @@ from (select *
-- sq in from, having
-select *
+explain select *
-from (select b.key, count(*)
+from (select b.key, count(*)
- from `src/_/cbo` b
+ from `src/_/cbo` b
group by b.key
- having exists
+ having exists
- (select a.key
+ (select a.key
- from `src/_/cbo` a
+ from `src/_/cbo` a
where a.key = b.key and a.value > 'val_9'
@@ -613,25 +245,13 @@ from (select b.key, count(*)
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
-
-- 17. SubQueries In
-- non agg, non corr
-select *
+explain select *
-from `src/_/cbo`
+from `src/_/cbo`
where `src/_/cbo`.key in (select key from `src/_/cbo` s1 where s1.key > '9') order by key
@@ -647,15 +267,15 @@ where `src/_/cbo`.key in (select key from `src/_/cbo` s1 where s1.key > '9') ord
-- distinct, corr
-select *
+explain select *
-from `src/_/cbo` b
+from `src/_/cbo` b
where b.key in
- (select distinct a.key
+ (select distinct a.key
- from `src/_/cbo` a
+ from `src/_/cbo` a
where b.value = a.value and a.key > '9'
@@ -667,9 +287,9 @@ where b.key in
-- non agg, corr, with join in Parent Query
-select p.p_partkey, li.l_suppkey
+explain select p.p_partkey, li.l_suppkey
-from (select distinct l_partkey as p_partkey from `line/item`) p join `line/item` li on p.p_partkey = li.l_partkey
+from (select distinct l_partkey as p_partkey from `line/item`) p join `line/item` li on p.p_partkey = li.l_partkey
where li.l_linenumber = 1 and
@@ -693,7 +313,7 @@ where li.l_linenumber = 1 and
-- Stage 6: Stage 2 o/p semijoin Stage 5
-select key, value, count(*)
+explain select key, value, count(*)
from `src/_/cbo` b
@@ -709,13 +329,13 @@ having count(*) in (select count(*) from `src/_/cbo` s1 where s1.key > '9' group
-- non agg, non corr, windowing
-select p_mfgr, p_name, avg(p_size)
+explain select p_mfgr, p_name, avg(p_size)
-from `p/a/r/t`
+from `p/a/r/t`
group by p_mfgr, p_name
-having p_name in
+having p_name in
(select first_value(p_name) over(partition by p_mfgr order by p_size) from `p/a/r/t`) order by p_mfgr
@@ -723,29 +343,17 @@ having p_name in
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
-
-- 16. SubQueries Not In
-- non agg, non corr
-select *
+explain select *
-from `src/_/cbo`
+from `src/_/cbo`
-where `src/_/cbo`.key not in
+where `src/_/cbo`.key not in
- ( select key from `src/_/cbo` s1
+ ( select key from `src/_/cbo` s1
where s1.key > '2'
@@ -757,17 +365,17 @@ where `src/_/cbo`.key not in
-- non agg, corr
-select p_mfgr, b.p_name, p_size
+explain select p_mfgr, b.p_name, p_size
-from `p/a/r/t` b
+from `p/a/r/t` b
-where b.p_name not in
+where b.p_name not in
- (select p_name
+ (select p_name
- from (select p_mfgr, p_name, p_size as r from `p/a/r/t`) a
+ from (select p_mfgr, p_name, p_size as r from `p/a/r/t`) a
- where r < 10 and b.p_mfgr = a.p_mfgr
+ where r < 10 and b.p_mfgr = a.p_mfgr
) order by p_mfgr,p_size
@@ -777,15 +385,15 @@ where b.p_name not in
-- agg, non corr
-select p_name, p_size
+explain select p_name, p_size
-from
+from
-`p/a/r/t` where `p/a/r/t`.p_size not in
+`p/a/r/t` where `p/a/r/t`.p_size not in
- (select avg(p_size)
+ (select avg(p_size)
- from (select p_size from `p/a/r/t`) a
+ from (select p_size from `p/a/r/t`) a
where p_size < 10
@@ -797,13 +405,13 @@ from
-- agg, corr
-select p_mfgr, p_name, p_size
+explain select p_mfgr, p_name, p_size
-from `p/a/r/t` b where b.p_size not in
+from `p/a/r/t` b where b.p_size not in
- (select min(p_size)
+ (select min(p_size)
- from (select p_mfgr, p_size from `p/a/r/t`) a
+ from (select p_mfgr, p_size from `p/a/r/t`) a
where p_size < 10 and b.p_mfgr = a.p_mfgr
@@ -815,13 +423,13 @@ from `p/a/r/t` b where b.p_size not in
-- non agg, non corr, Group By in Parent Query
-select li.l_partkey, count(*)
+explain select li.l_partkey, count(*)
-from `line/item` li
+from `line/item` li
-where li.l_linenumber = 1 and
+where li.l_linenumber = 1 and
- li.l_orderkey not in (select l_orderkey from `line/item` where l_shipmode = 'AIR')
+ li.l_orderkey not in (select l_orderkey from `line/item` where l_shipmode = 'AIR')
group by li.l_partkey order by li.l_partkey
@@ -835,17 +443,17 @@ group by li.l_partkey order by li.l_partkey
-- non agg, corr, having
-select b.p_mfgr, min(p_retailprice)
+explain select b.p_mfgr, min(p_retailprice)
-from `p/a/r/t` b
+from `p/a/r/t` b
group by b.p_mfgr
-having b.p_mfgr not in
+having b.p_mfgr not in
- (select p_mfgr
+ (select p_mfgr
- from (select p_mfgr, min(p_retailprice) l, max(p_retailprice) r, avg(p_retailprice) a from `p/a/r/t` group by p_mfgr) a
+ from (select p_mfgr, min(p_retailprice) l, max(p_retailprice) r, avg(p_retailprice) a from `p/a/r/t` group by p_mfgr) a
where min(p_retailprice) = l and r - l > 600
@@ -859,15 +467,15 @@ having b.p_mfgr not in
-- agg, non corr, having
-select b.p_mfgr, min(p_retailprice)
+explain select b.p_mfgr, min(p_retailprice)
-from `p/a/r/t` b
+from `p/a/r/t` b
group by b.p_mfgr
-having b.p_mfgr not in
+having b.p_mfgr not in
- (select p_mfgr
+ (select p_mfgr
from `p/a/r/t` a
@@ -877,59 +485,18 @@ having b.p_mfgr not in
)
- order by b.p_mfgr
+ order by b.p_mfgr
;
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
-
-- SORT_QUERY_RESULTS
-- 8. Test UDF/UDAF
-
-select count(*), count(c_int), sum(c_int), avg(c_int), max(c_int), min(c_int) from `c/b/o_t1`;
-
-select count(*), count(c_int) as a, sum(c_int), avg(c_int), max(c_int), min(c_int), case c_int when 0 then 1 when 1 then 2 else 3 end, sum(case c_int when 0 then 1 when 1 then 2 else 3 end) from `c/b/o_t1` group by c_int order by a;
-
-select * from (select count(*) as a, count(distinct c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f from `c/b/o_t1`) `c/b/o_t1`;
-
-select * from (select count(*) as a, count(distinct c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f, case c_int when 0 then 1 when 1 then 2 else 3 end as g, sum(case c_int when 0 then 1 when 1 then 2 else 3 end) as h from `c/b/o_t1` group by c_int) `c/b/o_t1` order by a;
-
-select f,a,e,b from (select count(*) as a, count(c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f from `c/b/o_t1`) `c/b/o_t1`;
-
-select f,a,e,b from (select count(*) as a, count(distinct c_int) as b, sum(distinct c_int) as c, avg(distinct c_int) as d, max(distinct c_int) as e, min(distinct c_int) as f from `c/b/o_t1`) `c/b/o_t1`;
-
-select key,count(c_int) as a, avg(c_float) from `c/b/o_t1` group by key order by a;
-
-select count(distinct c_int) as a, avg(c_float) from `c/b/o_t1` group by c_float order by a;
-
-select count(distinct c_int) as a, avg(c_float) from `c/b/o_t1` group by c_int order by a;
-
-select count(distinct c_int) as a, avg(c_float) from `c/b/o_t1` group by c_float, c_int order by a;
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
+explain select f,a,e,b from (select count(*) as a, count(c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f from `c/b/o_t1`) `c/b/o_t1`;
@@ -938,24 +505,7 @@ set hive.auto.convert.join=false;
-- 11. Union All
-
-select * from (select * from `c/b/o_t1` order by key, c_boolean, value, dt)a union all select * from (select * from `//cbo_t2` order by key, c_boolean, value, dt)b;
-
-select key from (select key, c_int from (select * from `c/b/o_t1` union all select * from `//cbo_t2` where `//cbo_t2`.key >=0)r1 union all select key, c_int from `cbo_/t3////`)r2 where key >=0 order by key;
-
-select r2.key from (select key, c_int from (select key, c_int from `c/b/o_t1` union all select key, c_int from `cbo_/t3////` )r1 union all select key, c_int from `cbo_/t3////`)r2 join (select key, c_int from (select * from `c/b/o_t1` union all select * from `//cbo_t2` where `//cbo_t2`.key >=0)r1 union all select key, c_int from `cbo_/t3////`)r3 on r2.key=r3.key where r3.key >=0 order by r2.key;
-
-
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
+explain select * from (select * from `c/b/o_t1` order by key, c_boolean, value, dt)a union all select * from (select * from `//cbo_t2` order by key, c_boolean, value, dt)b;
@@ -1037,43 +587,13 @@ drop view v3_n0;
drop view v4_n0;
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
-
-- 9. Test Windowing Functions
-- SORT_QUERY_RESULTS
+explain select count(c_int) over(partition by c_float order by key), sum(c_float) over(partition by c_float order by key), max(c_int) over(partition by c_float order by key), min(c_int) over(partition by c_float order by key), row_number() over(partition by c_float order by key) as rn, rank() over(partition by c_float order by key), dense_rank() over(partition by c_float order by key), round(percent_rank() over(partition by c_float order by key), 2), lead(c_int, 2, c_int) over(partition [...]
-select count(c_int) over() from `c/b/o_t1`;
-
-select count(c_int) over(partition by c_float order by key), sum(c_float) over(partition by c_float order by key), max(c_int) over(partition by c_float order by key), min(c_int) over(partition by c_float order by key), row_number() over(partition by c_float order by key) as rn, rank() over(partition by c_float order by key), dense_rank() over(partition by c_float order by key), round(percent_rank() over(partition by c_float order by key), 2), lead(c_int, 2, c_int) over(partition by c_flo [...]
-
-select * from (select count(c_int) over(partition by c_float order by key), sum(c_float) over(partition by c_float order by key), max(c_int) over(partition by c_float order by key), min(c_int) over(partition by c_float order by key), row_number() over(partition by c_float order by key) as rn, rank() over(partition by c_float order by key), dense_rank() over(partition by c_float order by key), round(percent_rank() over(partition by c_float order by key),2), lead(c_int, 2, c_int) over(part [...]
-
-select x from (select count(c_int) over() as x, sum(c_float) over() from `c/b/o_t1`) `c/b/o_t1`;
-
-select 1+sum(c_int) over() from `c/b/o_t1`;
-
-select sum(c_int)+sum(sum(c_int)) over() from `c/b/o_t1`;
-
-select * from (select max(c_int) over (partition by key order by value Rows UNBOUNDED PRECEDING), min(c_int) over (partition by key order by value rows current row), count(c_int) over(partition by key order by value ROWS 1 PRECEDING), avg(value) over (partition by key order by value Rows between unbounded preceding and unbounded following), sum(value) over (partition by key order by value rows between unbounded preceding and current row), avg(c_float) over (partition by key order by valu [...]
-
-select i, a, h, b, c, d, e, f, g, a as x, a +1 as y from (select max(c_int) over (partition by key order by value range UNBOUNDED PRECEDING) a, min(c_int) over (partition by key order by value range current row) b, count(c_int) over(partition by key order by value range 1 PRECEDING) c, avg(value) over (partition by key order by value range between unbounded preceding and unbounded following) d, sum(value) over (partition by key order by value range between unbounded preceding and current [...]
-
-select *, rank() over(partition by key order by value) as rr from default.src1;
-
-select *, rank() over(partition by key order by value) from default.src1;
insert into table `src/_/cbo` select * from default.src;
diff --git a/ql/src/test/queries/clientpositive/special_character_in_tabnames_quotes_1.q b/ql/src/test/queries/clientpositive/special_character_in_tabnames_quotes_1.q
index 7a05ec8..85d714e 100644
--- a/ql/src/test/queries/clientpositive/special_character_in_tabnames_quotes_1.q
+++ b/ql/src/test/queries/clientpositive/special_character_in_tabnames_quotes_1.q
@@ -57,73 +57,27 @@ LOAD DATA LOCAL INPATH '../../data/files/lineitem.txt' OVERWRITE INTO TABLE "lin
create table "src/_/cbo" as select * from default.src;
-analyze table "c/b/o_t1" partition (dt) compute statistics;
-
analyze table "c/b/o_t1" compute statistics for columns key, value, c_int, c_float, c_boolean;
-analyze table "//cbo_t2" partition (dt) compute statistics;
-
analyze table "//cbo_t2" compute statistics for columns key, value, c_int, c_float, c_boolean;
-analyze table "cbo_/t3////" compute statistics;
-
analyze table "cbo_/t3////" compute statistics for columns key, value, c_int, c_float, c_boolean;
-analyze table "src/_/cbo" compute statistics;
-
analyze table "src/_/cbo" compute statistics for columns;
-analyze table "p/a/r/t" compute statistics;
-
analyze table "p/a/r/t" compute statistics for columns;
-analyze table "line/item" compute statistics;
-
analyze table "line/item" compute statistics for columns;
select key, (c_int+1)+2 as x, sum(c_int) from "c/b/o_t1" group by c_float, "c/b/o_t1".c_int, key;
-select x, y, count(*) from (select key, (c_int+c_float+1+2) as x, sum(c_int) as y from "c/b/o_t1" group by c_float, "c/b/o_t1".c_int, key) R group by y, x;
-
-select "cbo_/t3////".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 >= 0) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0) group by c_float, "c/b/o_t1".c_int, key order by a) "c/b/o_t1" join (select key as p, c_int+1 as q, sum(c_int) as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 >= 0) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0) group by c_float, "//cbo_t2".c_int, key order by q/10 desc, r asc) "//cbo_ [...]
-
-select "cbo_/t3////".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 >= 0) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0) group by c_float, "c/b/o_t1".c_int, key having "c/b/o_t1".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b % c asc, b desc) "c/b/o_t1" left outer join (select key as p, c_int+1 as q, sum(c_int) as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 >= 0) and ("//cbo_ [...]
-
-select "cbo_/t3////".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 >= 0) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0) group by c_float, "c/b/o_t1".c_int, key having "c/b/o_t1".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b+c, a desc) "c/b/o_t1" right outer join (select key as p, c_int+1 as q, sum(c_int) as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 >= 0) and ("//cbo_t2".c [...]
-
-
-
-select "cbo_/t3////".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 >= 0) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0) group by c_float, "c/b/o_t1".c_int, key having "c/b/o_t1".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by c+a desc) "c/b/o_t1" full outer join (select key as p, c_int+1 as q, sum(c_int) as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 >= 0) and ("//cbo_t2".c_int [...]
-
-
-
-select "cbo_/t3////".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 >= 0) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0) group by c_float, "c/b/o_t1".c_int, key having "c/b/o_t1".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) "c/b/o_t1" join (select key as p, c_int+1 as q, sum(c_int) as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 >= 0) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= [...]
-
-
-
set hive.cbo.enable=false;
-
set hive.exec.check.crossproducts=false;
-
-
-
set hive.stats.fetch.column.stats=true;
-
set hive.auto.convert.join=false;
-
-
-- 21. Test groupby is empty and there is no other cols in aggr
-
-select unionsrc.key FROM (select 'tst1' as key, count(1) as value from default.src) unionsrc;
-
-
-
-select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from default.src) unionsrc;
-
-
-
-select unionsrc.key FROM (select 'max' as key, max(c_int) as value from "cbo_/t3////" s1
+explain select unionsrc.key FROM (select 'max' as key, max(c_int) as value from "cbo_/t3////" s1
UNION ALL
@@ -133,356 +87,42 @@ UNION ALL
select 'avg' as key, avg(c_int) as value from "cbo_/t3////" s3) unionsrc order by unionsrc.key;
-
-
-select unionsrc.key, unionsrc.value FROM (select 'max' as key, max(c_int) as value from "cbo_/t3////" s1
-
-UNION ALL
-
- select 'min' as key, min(c_int) as value from "cbo_/t3////" s2
-
- UNION ALL
-
- select 'avg' as key, avg(c_int) as value from "cbo_/t3////" s3) unionsrc order by unionsrc.key;
-
-
-
-select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value from "cbo_/t3////" s1
-
- UNION ALL
-
- select 'min' as key, min(c_int) as value from "cbo_/t3////" s2
-
- UNION ALL
-
- select 'avg' as key, avg(c_int) as value from "cbo_/t3////" s3) unionsrc group by unionsrc.key order by unionsrc.key;
-
-
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
-
-- SORT_QUERY_RESULTS
-- 4. Test Select + Join + TS
-
-select "c/b/o_t1".c_int, "//cbo_t2".c_int from "c/b/o_t1" join "//cbo_t2" on "c/b/o_t1".key="//cbo_t2".key;
-
-select "c/b/o_t1".key from "c/b/o_t1" join "cbo_/t3////";
-
-select "c/b/o_t1".key from "c/b/o_t1" join "cbo_/t3////" where "c/b/o_t1".key="cbo_/t3////".key and "c/b/o_t1".key >= 1;
-
-select "c/b/o_t1".c_int, "//cbo_t2".c_int from "c/b/o_t1" left outer join "//cbo_t2" on "c/b/o_t1".key="//cbo_t2".key;
-
-select "c/b/o_t1".c_int, "//cbo_t2".c_int from "c/b/o_t1" right outer join "//cbo_t2" on "c/b/o_t1".key="//cbo_t2".key;
-
-select "c/b/o_t1".c_int, "//cbo_t2".c_int from "c/b/o_t1" full outer join "//cbo_t2" on "c/b/o_t1".key="//cbo_t2".key;
-
-
-
-select b, "c/b/o_t1".c, "//cbo_t2".p, q, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1") "c/b/o_t1" join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2") "//cbo_t2" on "c/b/o_t1".a=p join "cbo_/t3////" on "c/b/o_t1".a=key;
-
-select key, "c/b/o_t1".c_int, "//cbo_t2".p, q from "c/b/o_t1" join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2") "//cbo_t2" on "c/b/o_t1".key=p join (select key as a, c_int as b, "cbo_/t3////".c_float as c from "cbo_/t3////")"cbo_/t3////" on "c/b/o_t1".key=a;
-
-select a, "c/b/o_t1".b, key, "//cbo_t2".c_int, "cbo_/t3////".p from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1") "c/b/o_t1" join "//cbo_t2" on "c/b/o_t1".a=key join (select key as p, c_int as q, "cbo_/t3////".c_float as r from "cbo_/t3////")"cbo_/t3////" on "c/b/o_t1".a="cbo_/t3////".p;
-
-select b, "c/b/o_t1".c, "//cbo_t2".c_int, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1") "c/b/o_t1" join "//cbo_t2" on "c/b/o_t1".a="//cbo_t2".key join "cbo_/t3////" on "c/b/o_t1".a="cbo_/t3////".key;
-
-select "cbo_/t3////".c_int, b, "//cbo_t2".c_int, "c/b/o_t1".c from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1") "c/b/o_t1" join "//cbo_t2" on "c/b/o_t1".a="//cbo_t2".key join "cbo_/t3////" on "c/b/o_t1".a="cbo_/t3////".key;
-
-
-
-select b, "c/b/o_t1".c, "//cbo_t2".p, q, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1") "c/b/o_t1" left outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2") "//cbo_t2" on "c/b/o_t1".a=p join "cbo_/t3////" on "c/b/o_t1".a=key;
-
-select key, "c/b/o_t1".c_int, "//cbo_t2".p, q from "c/b/o_t1" join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2") "//cbo_t2" on "c/b/o_t1".key=p left outer join (select key as a, c_int as b, "cbo_/t3////".c_float as c from "cbo_/t3////")"cbo_/t3////" on "c/b/o_t1".key=a;
-
-
-
-select b, "c/b/o_t1".c, "//cbo_t2".p, q, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1") "c/b/o_t1" right outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2") "//cbo_t2" on "c/b/o_t1".a=p join "cbo_/t3////" on "c/b/o_t1".a=key;
-
-select key, "c/b/o_t1".c_int, "//cbo_t2".p, q from "c/b/o_t1" join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2") "//cbo_t2" on "c/b/o_t1".key=p right outer join (select key as a, c_int as b, "cbo_/t3////".c_float as c from "cbo_/t3////")"cbo_/t3////" on "c/b/o_t1".key=a;
-
-
-
-select b, "c/b/o_t1".c, "//cbo_t2".p, q, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1") "c/b/o_t1" full outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2") "//cbo_t2" on "c/b/o_t1".a=p join "cbo_/t3////" on "c/b/o_t1".a=key;
-
-select key, "c/b/o_t1".c_int, "//cbo_t2".p, q from "c/b/o_t1" join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2") "//cbo_t2" on "c/b/o_t1".key=p full outer join (select key as a, c_int as b, "cbo_/t3////".c_float as c from "cbo_/t3////")"cbo_/t3////" on "c/b/o_t1".key=a;
-
-
+explain select "c/b/o_t1".key from "c/b/o_t1" join "cbo_/t3////";
-- 5. Test Select + Join + FIL + TS
-
-select "c/b/o_t1".c_int, "//cbo_t2".c_int from "c/b/o_t1" join "//cbo_t2" on "c/b/o_t1".key="//cbo_t2".key where ("c/b/o_t1".c_int + "//cbo_t2".c_int == 2) and ("c/b/o_t1".c_int > 0 or "//cbo_t2".c_float >= 0);
-
-select "c/b/o_t1".c_int, "//cbo_t2".c_int from "c/b/o_t1" left outer join "//cbo_t2" on "c/b/o_t1".key="//cbo_t2".key where ("c/b/o_t1".c_int + "//cbo_t2".c_int == 2) and ("c/b/o_t1".c_int > 0 or "//cbo_t2".c_float >= 0);
-
-select "c/b/o_t1".c_int, "//cbo_t2".c_int from "c/b/o_t1" right outer join "//cbo_t2" on "c/b/o_t1".key="//cbo_t2".key where ("c/b/o_t1".c_int + "//cbo_t2".c_int == 2) and ("c/b/o_t1".c_int > 0 or "//cbo_t2".c_float >= 0);
-
-select "c/b/o_t1".c_int, "//cbo_t2".c_int from "c/b/o_t1" full outer join "//cbo_t2" on "c/b/o_t1".key="//cbo_t2".key where ("c/b/o_t1".c_int + "//cbo_t2".c_int == 2) and ("c/b/o_t1".c_int > 0 or "//cbo_t2".c_float >= 0);
-
-
-
-select b, "c/b/o_t1".c, "//cbo_t2".p, q, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p join "cbo_/t3////" on "c/b/o_t1".a=key where (b + [...]
-
-
-
-select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" left outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p join "cbo_/t3////" on "c/b/o_t1".a=key [...]
-
-
-
-select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" right outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p join "cbo_/t3////" on "c/b/o_t1".a=key [...]
-
-
-
-select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" full outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p join "cbo_/t3////" on "c/b/o_t1".a=key [...]
-
-
-
-select * from (select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" full outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p join "cbo_/t3////" on "c [...]
-
-
-
-select * from (select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" left outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p left outer join "cbo_/t3 [...]
-
-
-
-select * from (select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" left outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p right outer join "cbo_/t [...]
-
-
-
-select * from (select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" left outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p full outer join "cbo_/t3 [...]
-
-
-
-select * from (select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" right outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p right outer join "cbo_/ [...]
-
-
-
-select * from (select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" right outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p left outer join "cbo_/t [...]
-
-
-
-select * from (select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" right outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p full outer join "cbo_/t [...]
-
-
-
-select * from (select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" full outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p full outer join "cbo_/t3 [...]
-
-
-
-select * from (select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" full outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p left outer join "cbo_/t3 [...]
-
-
-
-select * from (select q, b, "//cbo_t2".p, "c/b/o_t1".c, "cbo_/t3////".c_int from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" full outer join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p right outer join "cbo_/t [...]
-
-
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
+explain select "c/b/o_t1".c_int, "//cbo_t2".c_int from "c/b/o_t1" join "//cbo_t2" on "c/b/o_t1".key="//cbo_t2".key where ("c/b/o_t1".c_int + "//cbo_t2".c_int == 2) and ("c/b/o_t1".c_int > 0 or "//cbo_t2".c_float >= 0);
-- 7. Test Select + TS + Join + Fil + GB + GB Having + Limit
-
-select key, (c_int+1)+2 as x, sum(c_int) from "c/b/o_t1" group by c_float, "c/b/o_t1".c_int, key order by key, x limit 1;
-
-select x, y, count(*) from (select key, (c_int+c_float+1+2) as x, sum(c_int) as y from "c/b/o_t1" group by c_float, "c/b/o_t1".c_int, key) R group by y, x order by x,y limit 1;
-
-select key from(select key from (select key from "c/b/o_t1" order by key limit 5)"//cbo_t2" order by key limit 5)"cbo_/t3////" order by key limit 5;
-
-select key, c_int from(select key, c_int from (select key, c_int from "c/b/o_t1" order by key, c_int limit 5)"c/b/o_t1" order by key, c_int limit 5)"//cbo_t2" order by key, c_int limit 5;
-
-
-
-select "cbo_/t3////".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 >= 0) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0) group by c_float, "c/b/o_t1".c_int, key order by a, b limit 5) "c/b/o_t1" join (select key as p, c_int+1 as q, sum(c_int) as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 >= 0) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0) group by c_float, "//cbo_t2".c_int, key order by p, q/10 desc, [...]
-
-select "cbo_/t3////".c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 >= 0) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0) group by c_float, "c/b/o_t1".c_int, key having "c/b/o_t1".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by a, b % c asc, b desc limit 5) "c/b/o_t1" left outer join (select key as p, c_int+1 as q, sum(c_int) as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 >= 0) a [...]
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
+explain select key, (c_int+1)+2 as x, sum(c_int) from "c/b/o_t1" group by c_float, "c/b/o_t1".c_int, key order by x limit 1;
-- 12. SemiJoin
-
-select "c/b/o_t1".c_int from "c/b/o_t1" left semi join "//cbo_t2" on "c/b/o_t1".key="//cbo_t2".key;
-
-select "c/b/o_t1".c_int from "c/b/o_t1" left semi join "//cbo_t2" on "c/b/o_t1".key="//cbo_t2".key where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0);
-
-select * from (select c, b, a from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" left semi join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p left semi join "cbo_/t3////" on "c/b/o_t1".a=key where (b + 1 == 2) and [...]
-
-select * from (select "cbo_/t3////".c_int, "c/b/o_t1".c, b from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 = 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" left semi join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p left outer join "cbo_/t3////" on "c/b/o_t1" [...]
-
-select * from (select c_int, b, "c/b/o_t1".c from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" left semi join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p right outer join "cbo_/t3////" on "c/b/o_t1".a=key where [...]
-
-select * from (select c_int, b, "c/b/o_t1".c from (select key as a, c_int as b, "c/b/o_t1".c_float as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 == 2) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0)) "c/b/o_t1" left semi join (select "//cbo_t2".key as p, "//cbo_t2".c_int as q, c_float as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 == 2) and ("//cbo_t2".c_int > 0 or "//cbo_t2".c_float >= 0)) "//cbo_t2" on "c/b/o_t1".a=p full outer join "cbo_/t3////" on "c/b/o_t1".a=key where [...]
-
-select a, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 >= 0) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0) group by c_float, "c/b/o_t1".c_int, key having "c/b/o_t1".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by a, a+b desc, c asc) "c/b/o_t1" left semi join (select key as p, c_int+1 as q, sum(c_int) as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 >= 0) and ("//cbo_t2".c_int > 0 or " [...]
-
-select a, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from "c/b/o_t1" where ("c/b/o_t1".c_int + 1 >= 0) and ("c/b/o_t1".c_int > 0 or "c/b/o_t1".c_float >= 0) group by c_float, "c/b/o_t1".c_int, key having "c/b/o_t1".c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by a+b desc, c asc limit 5) "c/b/o_t1" left semi join (select key as p, c_int+1 as q, sum(c_int) as r from "//cbo_t2" where ("//cbo_t2".c_int + 1 >= 0) and ("//cbo_t2".c_int > [...]
-
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
+explain select "c/b/o_t1".c_int from "c/b/o_t1" left semi join "//cbo_t2" on "c/b/o_t1".key="//cbo_t2".key;
-- 1. Test Select + TS
-
-select * from "c/b/o_t1";
-
-select * from "c/b/o_t1" as "c/b/o_t1";
-
-select * from "c/b/o_t1" as "//cbo_t2";
-
-
-
-select "c/b/o_t1".key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from "c/b/o_t1";
-
-select * from "c/b/o_t1" where (((key=1) and (c_float=10)) and (c_int=20));
-
-
+explain select * from "c/b/o_t1" as "c/b/o_t1";
-- 2. Test Select + TS + FIL
-
-select * from "c/b/o_t1" where "c/b/o_t1".c_int >= 0;
-
-select * from "c/b/o_t1" as "c/b/o_t1" where "c/b/o_t1".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-select * from "c/b/o_t1" as "//cbo_t2" where "//cbo_t2".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-
-
-select "//cbo_t2".key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from "c/b/o_t1" as "//cbo_t2" where "//cbo_t2".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-
+explain select * from "c/b/o_t1" as "c/b/o_t1" where "c/b/o_t1".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-- 3 Test Select + Select + TS + FIL
-
-select * from (select * from "c/b/o_t1" where "c/b/o_t1".c_int >= 0) as "c/b/o_t1";
-
-select * from (select * from "c/b/o_t1" as "c/b/o_t1" where "c/b/o_t1".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as "c/b/o_t1";
-
-select * from (select * from "c/b/o_t1" as "//cbo_t2" where "//cbo_t2".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as "c/b/o_t1";
-
-select * from (select "//cbo_t2".key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from "c/b/o_t1" as "//cbo_t2" where "//cbo_t2".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as "c/b/o_t1";
-
-
-
-select * from (select * from "c/b/o_t1" where "c/b/o_t1".c_int >= 0) as "c/b/o_t1" where "c/b/o_t1".c_int >= 0;
-
-select * from (select * from "c/b/o_t1" as "c/b/o_t1" where "c/b/o_t1".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as "c/b/o_t1" where "c/b/o_t1".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-select * from (select * from "c/b/o_t1" as "//cbo_t2" where "//cbo_t2".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as "//cbo_t2" where "//cbo_t2".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-select * from (select "//cbo_t2".key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from "c/b/o_t1" as "//cbo_t2" where "//cbo_t2".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as "c/b/o_t1" where "c/b/o_t1".c_int >= 0 and y+c_int >= 0 or x <= 100;
-
-
-
-select "c/b/o_t1".c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from "c/b/o_t1" where "c/b/o_t1".c_int >= 0) as "c/b/o_t1" where "c/b/o_t1".c_int >= 0;
-
-select "//cbo_t2".c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from "c/b/o_t1" where "c/b/o_t1".c_int >= 0) as "//cbo_t2" where "//cbo_t2".c_int >= 0;
-
-
-
-
-
-
-
-select * from (select * from "c/b/o_t1" where "c/b/o_t1".c_int >= 0) as "c/b/o_t1" where "c/b/o_t1".c_int >= 0;
-
-select * from (select * from "c/b/o_t1" as "c/b/o_t1" where "c/b/o_t1".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as "c/b/o_t1" where "c/b/o_t1".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-select * from (select * from "c/b/o_t1" as "//cbo_t2" where "//cbo_t2".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as "//cbo_t2" where "//cbo_t2".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
-
-select * from (select "//cbo_t2".key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from "c/b/o_t1" as "//cbo_t2" where "//cbo_t2".c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as "c/b/o_t1" where "c/b/o_t1".c_int >= 0 and y+c_int >= 0 or x <= 100;
-
-
-
-select "c/b/o_t1".c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from "c/b/o_t1" where "c/b/o_t1".c_int >= 0) as "c/b/o_t1" where "c/b/o_t1".c_int >= 0;
-
-select "//cbo_t2".c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from "c/b/o_t1" where "c/b/o_t1".c_int >= 0) as "//cbo_t2" where "//cbo_t2".c_int >= 0;
-
-
-
-
-
-
+explain select * from (select * from "c/b/o_t1" where "c/b/o_t1".c_int >= 0) as "c/b/o_t1";
-- 13. null expr in select list
-
-select null from "cbo_/t3////";
-
-
+explain select null from "cbo_/t3////";
-- 14. unary operator
-
-select key from "c/b/o_t1" where c_int = -6 or c_int = +6;
-
-
+explain select key from "c/b/o_t1" where c_int = -6 or c_int = +6;
-- 15. query referencing only partition columns
-
-select count("c/b/o_t1".dt) from "c/b/o_t1" join "//cbo_t2" on "c/b/o_t1".dt = "//cbo_t2".dt where "c/b/o_t1".dt = '2014' ;
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
+explain select count("c/b/o_t1".dt) from "c/b/o_t1" join "//cbo_t2" on "c/b/o_t1".dt = "//cbo_t2".dt where "c/b/o_t1".dt = '2014' ;
-- 20. Test get stats with empty partition list
-
-select "c/b/o_t1".value from "c/b/o_t1" join "//cbo_t2" on "c/b/o_t1".key = "//cbo_t2".key where "c/b/o_t1".dt = '10' and "c/b/o_t1".c_boolean = true;
-
-
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
+explain select "c/b/o_t1".value from "c/b/o_t1" join "//cbo_t2" on "c/b/o_t1".key = "//cbo_t2".key where "c/b/o_t1".dt = '10' and "c/b/o_t1".c_boolean = true;
@@ -490,7 +130,7 @@ set hive.auto.convert.join=false;
-- distinct, corr
-select *
+explain select *
from "src/_/cbo" b
@@ -510,7 +150,7 @@ where not exists
-- no agg, corr, having
-select *
+explain select *
from "src/_/cbo" b
@@ -534,7 +174,7 @@ having not exists
-- view test
-create view cv1 as
+create view cv1_n0 as
select *
@@ -552,7 +192,7 @@ where exists
-select * from cv1
+select * from cv1_n0
;
@@ -560,7 +200,7 @@ select * from cv1
-- sq in from
-select *
+explain select *
from (select *
@@ -582,7 +222,7 @@ from (select *
-- sq in from, having
-select *
+explain select *
from (select b.key, count(*)
@@ -606,23 +246,11 @@ from (select b.key, count(*)
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
-
-- 17. SubQueries In
-- non agg, non corr
-select *
+explain select *
from "src/_/cbo"
@@ -640,7 +268,7 @@ where "src/_/cbo".key in (select key from "src/_/cbo" s1 where s1.key > '9') ord
-- distinct, corr
-select *
+explain select *
from "src/_/cbo" b
@@ -660,7 +288,7 @@ where b.key in
-- non agg, corr, with join in Parent Query
-select p.p_partkey, li.l_suppkey
+explain select p.p_partkey, li.l_suppkey
from (select distinct l_partkey as p_partkey from "line/item") p join "line/item" li on p.p_partkey = li.l_partkey
@@ -686,7 +314,7 @@ where li.l_linenumber = 1 and
-- Stage 6: Stage 2 o/p semijoin Stage 5
-select key, value, count(*)
+explain select key, value, count(*)
from "src/_/cbo" b
@@ -702,7 +330,7 @@ having count(*) in (select count(*) from "src/_/cbo" s1 where s1.key > '9' group
-- non agg, non corr, windowing
-select p_mfgr, p_name, avg(p_size)
+explain select p_mfgr, p_name, avg(p_size)
from "p/a/r/t"
@@ -716,23 +344,11 @@ having p_name in
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
-
-- 16. SubQueries Not In
-- non agg, non corr
-select *
+explain select *
from "src/_/cbo"
@@ -750,7 +366,7 @@ where "src/_/cbo".key not in
-- non agg, corr
-select p_mfgr, b.p_name, p_size
+explain select p_mfgr, b.p_name, p_size
from "p/a/r/t" b
@@ -770,7 +386,7 @@ where b.p_name not in
-- agg, non corr
-select p_name, p_size
+explain select p_name, p_size
from
@@ -790,7 +406,7 @@ from
-- agg, corr
-select p_mfgr, p_name, p_size
+explain select p_mfgr, p_name, p_size
from "p/a/r/t" b where b.p_size not in
@@ -808,7 +424,7 @@ from "p/a/r/t" b where b.p_size not in
-- non agg, non corr, Group By in Parent Query
-select li.l_partkey, count(*)
+explain select li.l_partkey, count(*)
from "line/item" li
@@ -828,7 +444,7 @@ group by li.l_partkey order by li.l_partkey
-- non agg, corr, having
-select b.p_mfgr, min(p_retailprice)
+explain select b.p_mfgr, min(p_retailprice)
from "p/a/r/t" b
@@ -852,7 +468,7 @@ having b.p_mfgr not in
-- agg, non corr, having
-select b.p_mfgr, min(p_retailprice)
+explain select b.p_mfgr, min(p_retailprice)
from "p/a/r/t" b
@@ -876,53 +492,12 @@ having b.p_mfgr not in
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
-
-
-- SORT_QUERY_RESULTS
-- 8. Test UDF/UDAF
-
-select count(*), count(c_int), sum(c_int), avg(c_int), max(c_int), min(c_int) from "c/b/o_t1";
-
-select count(*), count(c_int) as a, sum(c_int), avg(c_int), max(c_int), min(c_int), case c_int when 0 then 1 when 1 then 2 else 3 end, sum(case c_int when 0 then 1 when 1 then 2 else 3 end) from "c/b/o_t1" group by c_int order by a;
-
-select * from (select count(*) as a, count(distinct c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f from "c/b/o_t1") "c/b/o_t1";
-
-select * from (select count(*) as a, count(distinct c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f, case c_int when 0 then 1 when 1 then 2 else 3 end as g, sum(case c_int when 0 then 1 when 1 then 2 else 3 end) as h from "c/b/o_t1" group by c_int) "c/b/o_t1" order by a;
-
-select f,a,e,b from (select count(*) as a, count(c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f from "c/b/o_t1") "c/b/o_t1";
-
-select f,a,e,b from (select count(*) as a, count(distinct c_int) as b, sum(distinct c_int) as c, avg(distinct c_int) as d, max(distinct c_int) as e, min(distinct c_int) as f from "c/b/o_t1") "c/b/o_t1";
-
-select key,count(c_int) as a, avg(c_float) from "c/b/o_t1" group by key order by a;
-
-select count(distinct c_int) as a, avg(c_float) from "c/b/o_t1" group by c_float order by a;
-
-select count(distinct c_int) as a, avg(c_float) from "c/b/o_t1" group by c_int order by a;
-
-select count(distinct c_int) as a, avg(c_float) from "c/b/o_t1" group by c_float, c_int order by a;
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
+explain select f,a,e,b from (select count(*) as a, count(c_int) as b, sum(c_int) as c, avg(c_int) as d, max(c_int) as e, min(c_int) as f from "c/b/o_t1") "c/b/o_t1";
@@ -931,56 +506,39 @@ set hive.auto.convert.join=false;
-- 11. Union All
-
-select * from (select * from "c/b/o_t1" order by key, c_boolean, value, dt)a union all select * from (select * from "//cbo_t2" order by key, c_boolean, value, dt)b;
-
-select key from (select key, c_int from (select * from "c/b/o_t1" union all select * from "//cbo_t2" where "//cbo_t2".key >=0)r1 union all select key, c_int from "cbo_/t3////")r2 where key >=0 order by key;
-
-select r2.key from (select key, c_int from (select key, c_int from "c/b/o_t1" union all select key, c_int from "cbo_/t3////" )r1 union all select key, c_int from "cbo_/t3////")r2 join (select key, c_int from (select * from "c/b/o_t1" union all select * from "//cbo_t2" where "//cbo_t2".key >=0)r1 union all select key, c_int from "cbo_/t3////")r3 on r2.key=r3.key where r3.key >=0 order by r2.key;
-
-
-
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
-
-
-
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
+explain select * from (select * from "c/b/o_t1" order by key, c_boolean, value, dt)a union all select * from (select * from "//cbo_t2" order by key, c_boolean, value, dt)b;
-- 10. Test views
-create view v1 as select c_int, value, c_boolean, dt from "c/b/o_t1";
+create view v1_n7 as select c_int, value, c_boolean, dt from "c/b/o_t1";
-create view v2 as select c_int, value from "//cbo_t2";
+create view v2_n2 as select c_int, value from "//cbo_t2";
-select value from v1 where c_boolean=false;
+select value from v1_n7 where c_boolean=false;
-select max(c_int) from v1 group by (c_boolean);
+select max(c_int) from v1_n7 group by (c_boolean);
-select count(v1.c_int) from v1 join "//cbo_t2" on v1.c_int = "//cbo_t2".c_int;
+select count(v1_n7.c_int) from v1_n7 join "//cbo_t2" on v1_n7.c_int = "//cbo_t2".c_int;
-select count(v1.c_int) from v1 join v2 on v1.c_int = v2.c_int;
+select count(v1_n7.c_int) from v1_n7 join v2_n2 on v1_n7.c_int = v2_n2.c_int;
-select count(*) from v1 a join v1 b on a.value = b.value;
+select count(*) from v1_n7 a join v1_n7 b on a.value = b.value;
-create view v3 as select v1.value val from v1 join "c/b/o_t1" on v1.c_boolean = "c/b/o_t1".c_boolean;
+create view v3_n0 as select v1_n7.value val from v1_n7 join "c/b/o_t1" on v1_n7.c_boolean = "c/b/o_t1".c_boolean;
-select count(val) from v3 where val != '1';
+select count(val) from v3_n0 where val != '1';
with q1 as ( select key from "c/b/o_t1" where key = '1')
@@ -988,13 +546,13 @@ select count(*) from q1;
-with q1 as ( select value from v1 where c_boolean = false)
+with q1 as ( select value from v1_n7 where c_boolean = false)
select count(value) from q1 ;
-create view v4 as
+create view v4_n0 as
with q1 as ( select key,c_int from "c/b/o_t1" where key = '1')
@@ -1006,7 +564,7 @@ select * from q1
with q1 as ( select c_int from q2 where c_boolean = false),
-q2 as ( select c_int,c_boolean from v1 where value = '1')
+q2 as ( select c_int,c_boolean from v1_n7 where value = '1')
select sum(c_int) from (select c_int from q1) a;
@@ -1014,67 +572,37 @@ select sum(c_int) from (select c_int from q1) a;
with q1 as ( select "c/b/o_t1".c_int c_int from q2 join "c/b/o_t1" where q2.c_int = "c/b/o_t1".c_int and "c/b/o_t1".dt='2014'),
-q2 as ( select c_int,c_boolean from v1 where value = '1' or dt = '14')
-
-select count(*) from q1 join q2 join v4 on q1.c_int = q2.c_int and v4.c_int = q2.c_int;
-
-
-
-
+q2 as ( select c_int,c_boolean from v1_n7 where value = '1' or dt = '14')
-drop view v1;
+select count(*) from q1 join q2 join v4_n0 on q1.c_int = q2.c_int and v4_n0.c_int = q2.c_int;
-drop view v2;
-drop view v3;
-drop view v4;
-set hive.cbo.enable=false;
-
-set hive.exec.check.crossproducts=false;
+drop view v1_n7;
+drop view v2_n2;
-set hive.stats.fetch.column.stats=true;
-
-set hive.auto.convert.join=false;
-
+drop view v3_n0;
+drop view v4_n0;
-- 9. Test Windowing Functions
-- SORT_QUERY_RESULTS
+explain select count(c_int) over(partition by c_float order by key), sum(c_float) over(partition by c_float order by key), max(c_int) over(partition by c_float order by key), min(c_int) over(partition by c_float order by key), row_number() over(partition by c_float order by key) as rn, rank() over(partition by c_float order by key), dense_rank() over(partition by c_float order by key), round(percent_rank() over(partition by c_float order by key), 2), lead(c_int, 2, c_int) over(partition [...]
-select count(c_int) over() from "c/b/o_t1";
-
-select count(c_int) over(partition by c_float order by key), sum(c_float) over(partition by c_float order by key), max(c_int) over(partition by c_float order by key), min(c_int) over(partition by c_float order by key), row_number() over(partition by c_float order by key) as rn, rank() over(partition by c_float order by key), dense_rank() over(partition by c_float order by key), round(percent_rank() over(partition by c_float order by key), 2), lead(c_int, 2, c_int) over(partition by c_flo [...]
-
-select * from (select count(c_int) over(partition by c_float order by key), sum(c_float) over(partition by c_float order by key), max(c_int) over(partition by c_float order by key), min(c_int) over(partition by c_float order by key), row_number() over(partition by c_float order by key) as rn, rank() over(partition by c_float order by key), dense_rank() over(partition by c_float order by key), round(percent_rank() over(partition by c_float order by key),2), lead(c_int, 2, c_int) over(part [...]
-
-select x from (select count(c_int) over() as x, sum(c_float) over() from "c/b/o_t1") "c/b/o_t1";
-
-select 1+sum(c_int) over() from "c/b/o_t1";
-
-select sum(c_int)+sum(sum(c_int)) over() from "c/b/o_t1";
-
-select * from (select max(c_int) over (partition by key order by value Rows UNBOUNDED PRECEDING), min(c_int) over (partition by key order by value rows current row), count(c_int) over(partition by key order by value ROWS 1 PRECEDING), avg(value) over (partition by key order by value Rows between unbounded preceding and unbounded following), sum(value) over (partition by key order by value rows between unbounded preceding and current row), avg(c_float) over (partition by key order by valu [...]
-
-select i, a, h, b, c, d, e, f, g, a as x, a +1 as y from (select max(c_int) over (partition by key order by value range UNBOUNDED PRECEDING) a, min(c_int) over (partition by key order by value range current row) b, count(c_int) over(partition by key order by value range 1 PRECEDING) c, avg(value) over (partition by key order by value range between unbounded preceding and unbounded following) d, sum(value) over (partition by key order by value range between unbounded preceding and current [...]
-
-select *, rank() over(partition by key order by value) as rr from default.src1;
-
-select *, rank() over(partition by key order by value) from default.src1;
insert into table "src/_/cbo" select * from default.src;
-select * from "src/_/cbo" order by key, value limit 1;
+explain select * from "src/_/cbo" limit 1;
insert overwrite table "src/_/cbo" select * from default.src;
-select * from "src/_/cbo" order by key, value limit 1;
+explain select * from "src/_/cbo" limit 1;
drop table "t//";
create table "t//" (col string);
@@ -1084,5 +612,3 @@ analyze table "t//" compute statistics;
explain select * from "t//";
drop database "db~!@@#$%^&*(),<>" cascade;
-
-set hive.support.quoted.identifiers=column;
diff --git a/ql/src/test/results/clientpositive/llap/special_character_in_tabnames_1.q.out b/ql/src/test/results/clientpositive/llap/special_character_in_tabnames_1.q.out
index 14c8fad..0f13ef5 100644
--- a/ql/src/test/results/clientpositive/llap/special_character_in_tabnames_1.q.out
+++ b/ql/src/test/results/clientpositive/llap/special_character_in_tabnames_1.q.out
@@ -158,18 +158,6 @@ POSTHOOK: Output: database:db~!@#$%^&*(),<>
POSTHOOK: Output: db~!@#$%^&*(),<>@src/_/cbo
POSTHOOK: Lineage: src/_/cbo.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
POSTHOOK: Lineage: src/_/cbo.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
-PREHOOK: query: analyze table `c/b/o_t1` partition (dt) compute statistics
-PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Output: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Output: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: query: analyze table `c/b/o_t1` partition (dt) compute statistics
-POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Output: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Output: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
PREHOOK: query: analyze table `c/b/o_t1` compute statistics for columns key, value, c_int, c_float, c_boolean
PREHOOK: type: ANALYZE_TABLE
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
@@ -184,18 +172,6 @@ POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
POSTHOOK: Output: db~!@#$%^&*(),<>@c/b/o_t1
POSTHOOK: Output: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
#### A masked pattern was here ####
-PREHOOK: query: analyze table `//cbo_t2` partition (dt) compute statistics
-PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-PREHOOK: Output: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Output: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-POSTHOOK: query: analyze table `//cbo_t2` partition (dt) compute statistics
-POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-POSTHOOK: Output: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Output: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
PREHOOK: query: analyze table `//cbo_t2` compute statistics for columns key, value, c_int, c_float, c_boolean
PREHOOK: type: ANALYZE_TABLE
PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
@@ -210,14 +186,6 @@ POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
POSTHOOK: Output: db~!@#$%^&*(),<>@//cbo_t2
POSTHOOK: Output: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
#### A masked pattern was here ####
-PREHOOK: query: analyze table `cbo_/t3////` compute statistics
-PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
-PREHOOK: Output: db~!@#$%^&*(),<>@cbo_/t3////
-POSTHOOK: query: analyze table `cbo_/t3////` compute statistics
-POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
-POSTHOOK: Output: db~!@#$%^&*(),<>@cbo_/t3////
PREHOOK: query: analyze table `cbo_/t3////` compute statistics for columns key, value, c_int, c_float, c_boolean
PREHOOK: type: ANALYZE_TABLE
PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
@@ -228,14 +196,6 @@ POSTHOOK: type: ANALYZE_TABLE
POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
POSTHOOK: Output: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-PREHOOK: query: analyze table `src/_/cbo` compute statistics
-PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
-PREHOOK: Output: db~!@#$%^&*(),<>@src/_/cbo
-POSTHOOK: query: analyze table `src/_/cbo` compute statistics
-POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
-POSTHOOK: Output: db~!@#$%^&*(),<>@src/_/cbo
PREHOOK: query: analyze table `src/_/cbo` compute statistics for columns
PREHOOK: type: ANALYZE_TABLE
PREHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
@@ -246,14 +206,6 @@ POSTHOOK: type: ANALYZE_TABLE
POSTHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
POSTHOOK: Output: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-PREHOOK: query: analyze table `p/a/r/t` compute statistics
-PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@p/a/r/t
-PREHOOK: Output: db~!@#$%^&*(),<>@p/a/r/t
-POSTHOOK: query: analyze table `p/a/r/t` compute statistics
-POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@p/a/r/t
-POSTHOOK: Output: db~!@#$%^&*(),<>@p/a/r/t
PREHOOK: query: analyze table `p/a/r/t` compute statistics for columns
PREHOOK: type: ANALYZE_TABLE
PREHOOK: Input: db~!@#$%^&*(),<>@p/a/r/t
@@ -264,14 +216,6 @@ POSTHOOK: type: ANALYZE_TABLE
POSTHOOK: Input: db~!@#$%^&*(),<>@p/a/r/t
POSTHOOK: Output: db~!@#$%^&*(),<>@p/a/r/t
#### A masked pattern was here ####
-PREHOOK: query: analyze table `line/item` compute statistics
-PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@line/item
-PREHOOK: Output: db~!@#$%^&*(),<>@line/item
-POSTHOOK: query: analyze table `line/item` compute statistics
-POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@line/item
-POSTHOOK: Output: db~!@#$%^&*(),<>@line/item
PREHOOK: query: analyze table `line/item` compute statistics for columns
PREHOOK: type: ANALYZE_TABLE
PREHOOK: Input: db~!@#$%^&*(),<>@line/item
@@ -297,18493 +241,3833 @@ POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
1 4 12
1 4 2
NULL NULL NULL
-PREHOOK: query: select x, y, count(*) from (select key, (c_int+c_float+1+2) as x, sum(c_int) as y from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key) R group by y, x
+PREHOOK: query: select unionsrc.key FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1
+
+UNION ALL
+
+ select 'min' as key, min(c_int) as value from `cbo_/t3////` s2
+
+ UNION ALL
+
+ select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc order by unionsrc.key
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
+PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-POSTHOOK: query: select x, y, count(*) from (select key, (c_int+c_float+1+2) as x, sum(c_int) as y from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key) R group by y, x
+POSTHOOK: query: select unionsrc.key FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1
+
+UNION ALL
+
+ select 'min' as key, min(c_int) as value from `cbo_/t3////` s2
+
+ UNION ALL
+
+ select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc order by unionsrc.key
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
+POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-5.0 12 1
-5.0 2 3
-NULL NULL 1
-PREHOOK: query: select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key order by a) `c/b/o_t1` join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0) group by c_float, `//cbo_t2`.c_int, key order by q/10 desc [...]
+avg
+max
+min
+PREHOOK: query: explain select `c/b/o_t1`.key from `c/b/o_t1` join `cbo_/t3////`
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-POSTHOOK: query: select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key order by a) `c/b/o_t1` join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int > 0 or `//cbo_t2`.c_float >= 0) group by c_float, `//cbo_t2`.c_int, key order by q/10 des [...]
+POSTHOOK: query: explain select `c/b/o_t1`.key from `c/b/o_t1` join `cbo_/t3////`
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-1 12 6
-1 2 6
-PREHOOK: query: select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b % c asc, b desc) `c/b/o_t1` left outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= [...]
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (CUSTOM_SIMPLE_EDGE), Map 3 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: c/b/o_t1
+ Statistics: Num rows: 20 Data size: 1615 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ null sort order:
+ sort order:
+ Statistics: Num rows: 20 Data size: 1615 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: key (type: string)
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Map 3
+ Map Operator Tree:
+ TableScan
+ alias: cbo_/t3////
+ Statistics: Num rows: 20 Data size: 262 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ null sort order:
+ sort order:
+ Statistics: Num rows: 20 Data size: 262 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0
+ 1
+ outputColumnNames: _col0
+ Statistics: Num rows: 400 Data size: 33915 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 400 Data size: 33915 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + `//cbo_t2`.c_int == 2) and (`c/b/o_t1`.c_int > 0 or `//cbo_t2`.c_float >= 0)
PREHOOK: type: QUERY
PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-POSTHOOK: query: select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b % c asc, b desc) `c/b/o_t1` left outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 > [...]
+POSTHOOK: query: explain select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key where (`c/b/o_t1`.c_int + `//cbo_t2`.c_int == 2) and (`c/b/o_t1`.c_int > 0 or `//cbo_t2`.c_float >= 0)
POSTHOOK: type: QUERY
POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-1 12 6
-1 2 6
-PREHOOK: query: select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b+c, a desc) `c/b/o_t1` right outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) a [...]
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: c/b/o_t1
+ filterExpr: key is not null (type: boolean)
+ Statistics: Num rows: 20 Data size: 1691 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: key is not null (type: boolean)
+ Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: key (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: key (type: string)
+ Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: c_int (type: int)
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Map 3
+ Map Operator Tree:
+ TableScan
+ alias: //cbo_t2
+ filterExpr: key is not null (type: boolean)
+ Statistics: Num rows: 20 Data size: 1767 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: key is not null (type: boolean)
+ Statistics: Num rows: 18 Data size: 1581 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: key (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: key (type: string)
+ Statistics: Num rows: 18 Data size: 1581 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: c_int (type: int), c_float (type: float)
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 key (type: string)
+ 1 key (type: string)
+ outputColumnNames: _col2, _col11, _col12
+ Statistics: Num rows: 64 Data size: 756 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: (((_col2 + _col11) = 2) and ((_col2 > 0) or (_col12 >= 0.0))) (type: boolean)
+ Statistics: Num rows: 32 Data size: 384 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col2 (type: int), _col11 (type: int)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 32 Data size: 256 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 32 Data size: 256 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain select key, (c_int+1)+2 as x, sum(c_int) from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key order by x limit 1
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-POSTHOOK: query: select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b+c, a desc) `c/b/o_t1` right outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) [...]
+POSTHOOK: query: explain select key, (c_int+1)+2 as x, sum(c_int) from `c/b/o_t1` group by c_float, `c/b/o_t1`.c_int, key order by x limit 1
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-1 12 6
-1 2 6
-PREHOOK: query: select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by c+a desc) `c/b/o_t1` full outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and ( [...]
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: c/b/o_t1
+ Statistics: Num rows: 20 Data size: 1767 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: key (type: string), c_int (type: int), c_float (type: float)
+ outputColumnNames: key, c_int, c_float
+ Statistics: Num rows: 20 Data size: 1767 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ aggregations: sum(c_int)
+ keys: c_float (type: float), c_int (type: int), key (type: string)
+ minReductionHashAggr: 0.6
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2, _col3
+ Statistics: Num rows: 10 Data size: 1010 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: float), _col1 (type: int), _col2 (type: string)
+ null sort order: zzz
+ sort order: +++
+ Map-reduce partition columns: _col0 (type: float), _col1 (type: int), _col2 (type: string)
+ Statistics: Num rows: 10 Data size: 1010 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col3 (type: bigint)
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: sum(VALUE._col0)
+ keys: KEY._col0 (type: float), KEY._col1 (type: int), KEY._col2 (type: string)
+ mode: mergepartial
+ outputColumnNames: _col0, _col1, _col2, _col3
+ Statistics: Num rows: 10 Data size: 1010 Basic stats: COMPLETE Column stats: COMPLETE
+ Top N Key Operator
+ sort order: +
+ keys: ((_col1 + 1) + 2) (type: int)
+ null sort order: z
+ Statistics: Num rows: 10 Data size: 1010 Basic stats: COMPLETE Column stats: COMPLETE
+ top n: 1
+ Select Operator
+ expressions: _col2 (type: string), ((_col1 + 1) + 2) (type: int), _col3 (type: bigint)
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 10 Data size: 885 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col1 (type: int)
+ null sort order: z
+ sort order: +
+ Statistics: Num rows: 10 Data size: 885 Basic stats: COMPLETE Column stats: COMPLETE
+ TopN Hash Memory Usage: 0.1
+ value expressions: _col0 (type: string), _col2 (type: bigint)
+ Reducer 3
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Select Operator
+ expressions: VALUE._col0 (type: string), KEY.reducesinkkey0 (type: int), VALUE._col1 (type: bigint)
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 10 Data size: 885 Basic stats: COMPLETE Column stats: COMPLETE
+ Limit
+ Number of rows: 1
+ Statistics: Num rows: 1 Data size: 97 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 97 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: 1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain select `c/b/o_t1`.c_int from `c/b/o_t1` left semi join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key
PREHOOK: type: QUERY
PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-POSTHOOK: query: select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by c+a desc) `c/b/o_t1` full outer join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and [...]
+POSTHOOK: query: explain select `c/b/o_t1`.c_int from `c/b/o_t1` left semi join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key
POSTHOOK: type: QUERY
POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-1 12 6
-1 2 6
-PREHOOK: query: select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) `c/b/o_t1` join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int > 0 or `//cb [...]
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: c/b/o_t1
+ filterExpr: key is not null (type: boolean)
+ Statistics: Num rows: 20 Data size: 1691 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: key is not null (type: boolean)
+ Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: key (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: key (type: string)
+ Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: c_int (type: int)
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Map 3
+ Map Operator Tree:
+ TableScan
+ alias: //cbo_t2
+ filterExpr: key is not null (type: boolean)
+ Statistics: Num rows: 20 Data size: 1615 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: key is not null (type: boolean)
+ Statistics: Num rows: 18 Data size: 1445 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: key (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 18 Data size: 1445 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col0 (type: string)
+ minReductionHashAggr: 0.6666666
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 6 Data size: 510 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 6 Data size: 510 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Semi Join 0 to 1
+ keys:
+ 0 key (type: string)
+ 1 _col0 (type: string)
+ outputColumnNames: _col2
+ Statistics: Num rows: 18 Data size: 68 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col2 (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 18 Data size: 68 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 18 Data size: 68 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain select * from `c/b/o_t1` as `c/b/o_t1`
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-POSTHOOK: query: select `cbo_/t3////`.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from `c/b/o_t1` where (`c/b/o_t1`.c_int + 1 >= 0) and (`c/b/o_t1`.c_int > 0 or `c/b/o_t1`.c_float >= 0) group by c_float, `c/b/o_t1`.c_int, key having `c/b/o_t1`.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) `c/b/o_t1` join (select key as p, c_int+1 as q, sum(c_int) as r from `//cbo_t2` where (`//cbo_t2`.c_int + 1 >= 0) and (`//cbo_t2`.c_int > 0 or `//c [...]
+POSTHOOK: query: explain select * from `c/b/o_t1` as `c/b/o_t1`
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
-#### A masked pattern was here ####
-1 12 6
-1 2 6
-PREHOOK: query: select unionsrc.key FROM (select 'tst1' as key, count(1) as value from default.src) unionsrc
-PREHOOK: type: QUERY
-PREHOOK: Input: default@src
-#### A masked pattern was here ####
-POSTHOOK: query: select unionsrc.key FROM (select 'tst1' as key, count(1) as value from default.src) unionsrc
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@src
#### A masked pattern was here ####
-tst1
-PREHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from default.src) unionsrc
+STAGE DEPENDENCIES:
+ Stage-0 is a root stage
+
+STAGE PLANS:
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ TableScan
+ alias: c/b/o_t1
+ Select Operator
+ expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+ ListSink
+
+PREHOOK: query: explain select * from `c/b/o_t1` as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100
PREHOOK: type: QUERY
-PREHOOK: Input: default@src
+PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
+PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
#### A masked pattern was here ####
-POSTHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from default.src) unionsrc
+POSTHOOK: query: explain select * from `c/b/o_t1` as `c/b/o_t1` where `c/b/o_t1`.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100
POSTHOOK: type: QUERY
-POSTHOOK: Input: default@src
+POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
+POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
#### A masked pattern was here ####
-tst1 500
-PREHOOK: query: select unionsrc.key FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1
-
-UNION ALL
-
- select 'min' as key, min(c_int) as value from `cbo_/t3////` s2
+STAGE DEPENDENCIES:
+ Stage-0 is a root stage
- UNION ALL
+STAGE PLANS:
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ TableScan
+ alias: c/b/o_t1
+ filterExpr: (((c_int >= 0) and ((c_float + c_int) >= 0)) or (c_float <= 100.0)) (type: boolean)
+ Filter Operator
+ predicate: (((c_int >= 0) and ((c_float + c_int) >= 0)) or (c_float <= 100.0)) (type: boolean)
+ Select Operator
+ expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+ ListSink
- select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc order by unionsrc.key
+PREHOOK: query: explain select * from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1`
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
+PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
#### A masked pattern was here ####
-POSTHOOK: query: select unionsrc.key FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1
-
-UNION ALL
-
- select 'min' as key, min(c_int) as value from `cbo_/t3////` s2
-
- UNION ALL
-
- select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc order by unionsrc.key
+POSTHOOK: query: explain select * from (select * from `c/b/o_t1` where `c/b/o_t1`.c_int >= 0) as `c/b/o_t1`
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
+POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
#### A masked pattern was here ####
-avg
-max
-min
-PREHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1
-
-UNION ALL
-
- select 'min' as key, min(c_int) as value from `cbo_/t3////` s2
+STAGE DEPENDENCIES:
+ Stage-0 is a root stage
- UNION ALL
+STAGE PLANS:
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ TableScan
+ alias: c/b/o_t1
+ filterExpr: (c_int >= 0) (type: boolean)
+ Filter Operator
+ predicate: (c_int >= 0) (type: boolean)
+ Select Operator
+ expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+ ListSink
- select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc order by unionsrc.key
+PREHOOK: query: explain select null from `cbo_/t3////`
PREHOOK: type: QUERY
PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-POSTHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1
-
-UNION ALL
-
- select 'min' as key, min(c_int) as value from `cbo_/t3////` s2
-
- UNION ALL
-
- select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc order by unionsrc.key
+POSTHOOK: query: explain select null from `cbo_/t3////`
POSTHOOK: type: QUERY
POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-avg 1.5
-max 3.0
-min 1.0
-PREHOOK: query: select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1
-
- UNION ALL
-
- select 'min' as key, min(c_int) as value from `cbo_/t3////` s2
+STAGE DEPENDENCIES:
+ Stage-0 is a root stage
- UNION ALL
+STAGE PLANS:
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ TableScan
+ alias: cbo_/t3////
+ Select Operator
+ expressions: null (type: void)
+ outputColumnNames: _col0
+ ListSink
- select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc group by unionsrc.key order by unionsrc.key
+PREHOOK: query: explain select key from `c/b/o_t1` where c_int = -6 or c_int = +6
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
+PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
#### A masked pattern was here ####
-POSTHOOK: query: select unionsrc.key, count(1) FROM (select 'max' as key, max(c_int) as value from `cbo_/t3////` s1
-
- UNION ALL
-
- select 'min' as key, min(c_int) as value from `cbo_/t3////` s2
-
- UNION ALL
-
- select 'avg' as key, avg(c_int) as value from `cbo_/t3////` s3) unionsrc group by unionsrc.key order by unionsrc.key
+POSTHOOK: query: explain select key from `c/b/o_t1` where c_int = -6 or c_int = +6
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
+POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
#### A masked pattern was here ####
-avg 1
-max 1
-min 1
-PREHOOK: query: select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key
+STAGE DEPENDENCIES:
+ Stage-0 is a root stage
+
+STAGE PLANS:
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ TableScan
+ alias: c/b/o_t1
+ filterExpr: (c_int) IN (-6, 6) (type: boolean)
+ Filter Operator
+ predicate: (c_int) IN (-6, 6) (type: boolean)
+ Select Operator
+ expressions: key (type: string)
+ outputColumnNames: _col0
+ ListSink
+
+PREHOOK: query: explain select count(`c/b/o_t1`.dt) from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.dt = `//cbo_t2`.dt where `c/b/o_t1`.dt = '2014'
PREHOOK: type: QUERY
PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
#### A masked pattern was here ####
-POSTHOOK: query: select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key
+POSTHOOK: query: explain select count(`c/b/o_t1`.dt) from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.dt = `//cbo_t2`.dt where `c/b/o_t1`.dt = '2014'
POSTHOOK: type: QUERY
POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
#### A masked pattern was here ####
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-PREHOOK: query: select `c/b/o_t1`.key from `c/b/o_t1` join `cbo_/t3////`
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: c/b/o_t1
+ filterExpr: (dt = '2014') (type: boolean)
+ Statistics: Num rows: 20 Data size: 2022 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: '2014' (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: '2014' (type: string)
+ Statistics: Num rows: 20 Data size: 2022 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: '2014' (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 20 Data size: 1760 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col0 (type: string)
+ minReductionHashAggr: 0.95
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 88 Basic stats: COMPLETE Column stats: COMPLETE
+ Dynamic Partitioning Event Operator
+ Target column: dt (string)
+ Target Input: //cbo_t2
+ Partition key expr: dt
+ Statistics: Num rows: 1 Data size: 88 Basic stats: COMPLETE Column stats: COMPLETE
+ Target Vertex: Map 4
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Map 4
+ Map Operator Tree:
+ TableScan
+ alias: //cbo_t2
+ filterExpr: (dt = '2014') (type: boolean)
+ Statistics: Num rows: 20 Data size: 2022 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: '2014' (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: '2014' (type: string)
+ Statistics: Num rows: 20 Data size: 2022 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 '2014' (type: string)
+ 1 '2014' (type: string)
+ Statistics: Num rows: 400 Data size: 3200 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: '2014' (type: string)
+ outputColumnNames: _col5
+ Statistics: Num rows: 400 Data size: 3200 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ aggregations: count(_col5)
+ minReductionHashAggr: 0.99
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ null sort order:
+ sort order:
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: bigint)
+ Reducer 3
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain select `c/b/o_t1`.value from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key = `//cbo_t2`.key where `c/b/o_t1`.dt = '10' and `c/b/o_t1`.c_boolean = true
PREHOOK: type: QUERY
+PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
+PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
-POSTHOOK: query: select `c/b/o_t1`.key from `c/b/o_t1` join `cbo_/t3////`
+POSTHOOK: query: explain select `c/b/o_t1`.value from `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.key = `//cbo_t2`.key where `c/b/o_t1`.dt = '10' and `c/b/o_t1`.c_boolean = true
POSTHOOK: type: QUERY
+POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
+POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
#### A masked pattern was here ####
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-PREHOOK: query: select `c/b/o_t1`.key from `c/b/o_t1` join `cbo_/t3////` where `c/b/o_t1`.key=`cbo_/t3////`.key and `c/b/o_t1`.key >= 1
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: c/b/o_t1
+ filterExpr: (key is not null and (dt = '10') and (c_boolean = true)) (type: boolean)
+ Statistics: Num rows: 1 Data size: 458 Basic stats: COMPLETE Column stats: PARTIAL
+ Filter Operator
+ predicate: (key is not null and (dt = '10') and (c_boolean = true)) (type: boolean)
+ Statistics: Num rows: 1 Data size: 458 Basic stats: COMPLETE Column stats: PARTIAL
+ Reduce Output Operator
+ key expressions: key (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: key (type: string)
+ Statistics: Num rows: 1 Data size: 458 Basic stats: COMPLETE Column stats: PARTIAL
+ value expressions: value (type: string)
+ Execution mode: vectorized, llap
+ LLAP IO: unknown
+ Map 3
+ Map Operator Tree:
+ TableScan
+ alias: //cbo_t2
+ filterExpr: key is not null (type: boolean)
+ Statistics: Num rows: 20 Data size: 1615 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: key is not null (type: boolean)
+ Statistics: Num rows: 18 Data size: 1445 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: key (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: key (type: string)
+ Statistics: Num rows: 18 Data size: 1445 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 key (type: string)
+ 1 key (type: string)
+ outputColumnNames: _col1
+ Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: PARTIAL
+ Select Operator
+ expressions: _col1 (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: PARTIAL
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: PARTIAL
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain select *
+
+from `src/_/cbo` b
+
+where not exists
+
+ (select distinct a.key
+
+ from `src/_/cbo` a
+
+ where b.value = a.value and a.value > 'val_2'
+
+ )
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+PREHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-POSTHOOK: query: select `c/b/o_t1`.key from `c/b/o_t1` join `cbo_/t3////` where `c/b/o_t1`.key=`cbo_/t3////`.key and `c/b/o_t1`.key >= 1
+POSTHOOK: query: explain select *
+
+from `src/_/cbo` b
+
+where not exists
+
+ (select distinct a.key
+
+ from `src/_/cbo` a
+
+ where b.value = a.value and a.value > 'val_2'
+
+ )
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+POSTHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-PREHOOK: query: select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` left outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE)
+ Reducer 3 <- Map 1 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: b
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: value (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: value (type: string)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: key (type: string)
+ Filter Operator
+ predicate: (value > 'val_2') (type: boolean)
+ Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: key (type: string), value (type: string)
+ minReductionHashAggr: 0.0
+ mode: hash
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string), _col1 (type: string)
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
+ Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Outer Join 0 to 1
+ keys:
+ 0 value (type: string)
+ 1 _col1 (type: string)
+ outputColumnNames: _col0, _col1, _col6
+ Statistics: Num rows: 635 Data size: 125406 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: _col6 is null (type: boolean)
+ Statistics: Num rows: 500 Data size: 98737 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: string), _col1 (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 500 Data size: 98737 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 500 Data size: 98737 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ Reducer 3
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ keys: KEY._col0 (type: string), KEY._col1 (type: string)
+ mode: mergepartial
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col1 (type: string)
+ outputColumnNames: _col1
+ Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col1 (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col1 (type: string)
+ Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain select *
+
+from `src/_/cbo` b
+
+group by key, value
+
+having not exists
+
+ (select a.key
+
+ from `src/_/cbo` a
+
+ where b.value = a.value and a.key = b.key and a.value > 'val_12'
+
+ )
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
+PREHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-POSTHOOK: query: select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` left outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key
+POSTHOOK: query: explain select *
+
+from `src/_/cbo` b
+
+group by key, value
+
+having not exists
+
+ (select a.key
+
+ from `src/_/cbo` a
+
+ where b.value = a.value and a.key = b.key and a.value > 'val_12'
+
+ )
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
+POSTHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-NULL NULL
-NULL NULL
-PREHOOK: query: select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` right outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE)
+ Reducer 3 <- Map 1 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: b
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: key (type: string), value (type: string)
+ outputColumnNames: key, value
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: key (type: string), value (type: string)
+ minReductionHashAggr: 0.0
+ mode: hash
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 250 Data size: 44500 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string), _col1 (type: string)
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
+ Statistics: Num rows: 250 Data size: 44500 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: (value > 'val_12') (type: boolean)
+ Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: value (type: string), key (type: string)
+ outputColumnNames: _col1, _col2
+ Statistics: Num rows: 166 Data size: 43990 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col1 (type: string), _col2 (type: string)
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col1 (type: string), _col2 (type: string)
+ Statistics: Num rows: 166 Data size: 43990 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ keys: KEY._col0 (type: string), KEY._col1 (type: string)
+ mode: mergepartial
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 250 Data size: 44500 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col1 (type: string), _col0 (type: string)
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col1 (type: string), _col0 (type: string)
+ Statistics: Num rows: 250 Data size: 44500 Basic stats: COMPLETE Column stats: COMPLETE
+ Reducer 3
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Outer Join 0 to 1
+ keys:
+ 0 _col1 (type: string), _col0 (type: string)
+ 1 _col1 (type: string), _col2 (type: string)
+ outputColumnNames: _col0, _col1, _col4
+ Statistics: Num rows: 416 Data size: 88577 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: _col4 is null (type: boolean)
+ Statistics: Num rows: 250 Data size: 53287 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: string), _col1 (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 250 Data size: 53287 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 250 Data size: 53287 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: create view cv1_n0 as
+
+select *
+
+from `src/_/cbo` b
+
+where exists
+
+ (select a.key
+
+ from `src/_/cbo` a
+
+ where b.value = a.value and a.key = b.key and a.value > 'val_9')
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
+PREHOOK: Output: database:db~!@#$%^&*(),<>
+PREHOOK: Output: db~!@#$%^&*(),<>@cv1_n0
+POSTHOOK: query: create view cv1_n0 as
+
+select *
+
+from `src/_/cbo` b
+
+where exists
+
+ (select a.key
+
+ from `src/_/cbo` a
+
+ where b.value = a.value and a.key = b.key and a.value > 'val_9')
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
+POSTHOOK: Output: database:db~!@#$%^&*(),<>
+POSTHOOK: Output: db~!@#$%^&*(),<>@cv1_n0
+POSTHOOK: Lineage: cv1_n0.key SIMPLE [(src/_/cbo)b.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: cv1_n0.value SIMPLE [(src/_/cbo)b.FieldSchema(name:value, type:string, comment:null), ]
+PREHOOK: query: select * from cv1_n0
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
+PREHOOK: Input: db~!@#$%^&*(),<>@cv1_n0
+PREHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-POSTHOOK: query: select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` right outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key
+POSTHOOK: query: select * from cv1_n0
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
+POSTHOOK: Input: db~!@#$%^&*(),<>@cv1_n0
+POSTHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-NULL 2
-NULL 2
-NULL 2
-NULL 2
-NULL 2
-NULL NULL
-NULL NULL
-PREHOOK: query: select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` full outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key
+90 val_90
+90 val_90
+90 val_90
+92 val_92
+95 val_95
+95 val_95
+96 val_96
+97 val_97
+97 val_97
+98 val_98
+98 val_98
+PREHOOK: query: explain select *
+
+from (select *
+
+ from `src/_/cbo` b
+
+ where exists
+
+ (select a.key
+
+ from `src/_/cbo` a
+
+ where b.value = a.value and a.key = b.key and a.value > 'val_9')
+
+ ) a
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-#### A masked pattern was here ####
-POSTHOOK: query: select `c/b/o_t1`.c_int, `//cbo_t2`.c_int from `c/b/o_t1` full outer join `//cbo_t2` on `c/b/o_t1`.key=`//cbo_t2`.key
-POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
+PREHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-1 1
-NULL 2
-NULL 2
-NULL 2
-NULL 2
-NULL 2
-NULL NULL
-NULL NULL
-NULL NULL
-NULL NULL
-PREHOOK: query: select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key
-PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
-#### A masked pattern was here ####
-POSTHOOK: query: select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key
-POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
-#### A masked pattern was here ####
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-PREHOOK: query: select key, `c/b/o_t1`.c_int, `//cbo_t2`.p, q from `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.key=p join (select key as a, c_int as b, `cbo_/t3////`.c_float as c from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.key=a
-PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
-#### A masked pattern was here ####
-POSTHOOK: query: select key, `c/b/o_t1`.c_int, `//cbo_t2`.p, q from `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.key=p join (select key as a, c_int as b, `cbo_/t3////`.c_float as c from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.key=a
+POSTHOOK: query: explain select *
+
+from (select *
+
+ from `src/_/cbo` b
+
+ where exists
+
+ (select a.key
+
+ from `src/_/cbo` a
+
+ where b.value = a.value and a.key = b.key and a.value > 'val_9')
+
+ ) a
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+POSTHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-PREHOOK: query: select a, `c/b/o_t1`.b, key, `//cbo_t2`.c_int, `cbo_/t3////`.p from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.a=key join (select key as p, c_int as q, `cbo_/t3////`.c_float as r from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.a=`cbo_/t3////`.p
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: b
+ filterExpr: (value is not null and key is not null) (type: boolean)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: (value is not null and key is not null) (type: boolean)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: value (type: string), key (type: string)
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: value (type: string), key (type: string)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Map 3
+ Map Operator Tree:
+ TableScan
+ alias: a
+ filterExpr: ((value > 'val_9') and key is not null) (type: boolean)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: ((value > 'val_9') and key is not null) (type: boolean)
+ Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: value (type: string), key (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col0 (type: string), _col1 (type: string)
+ minReductionHashAggr: 0.0
+ mode: hash
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string), _col1 (type: string)
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
+ Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Semi Join 0 to 1
+ keys:
+ 0 value (type: string), key (type: string)
+ 1 _col0 (type: string), _col1 (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 131 Data size: 23318 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 131 Data size: 23318 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain select *
+
+from (select b.key, count(*)
+
+ from `src/_/cbo` b
+
+ group by b.key
+
+ having exists
+
+ (select a.key
+
+ from `src/_/cbo` a
+
+ where a.key = b.key and a.value > 'val_9'
+
+ )
+
+) a
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+PREHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-POSTHOOK: query: select a, `c/b/o_t1`.b, key, `//cbo_t2`.c_int, `cbo_/t3////`.p from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.a=key join (select key as p, c_int as q, `cbo_/t3////`.c_float as r from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.a=`cbo_/t3////`.p
+POSTHOOK: query: explain select *
+
+from (select b.key, count(*)
+
+ from `src/_/cbo` b
+
+ group by b.key
+
+ having exists
+
+ (select a.key
+
+ from `src/_/cbo` a
+
+ where a.key = b.key and a.value > 'val_9'
+
+ )
+
+) a
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+POSTHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
- 1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-1 1 1 1 1
-PREHOOK: query: select b, `c/b/o_t1`.c, `//cbo_t2`.c_int, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.a=`//cbo_t2`.key join `cbo_/t3////` on `c/b/o_t1`.a=`cbo_/t3////`.key
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE)
+ Reducer 3 <- Map 4 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: b
+ filterExpr: key is not null (type: boolean)
+ Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: key is not null (type: boolean)
+ Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ aggregations: count()
+ keys: key (type: string)
+ minReductionHashAggr: 0.5
+ mode: hash
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: bigint)
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Map 4
+ Map Operator Tree:
+ TableScan
+ alias: a
+ filterExpr: ((value > 'val_9') and key is not null) (type: boolean)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: ((value > 'val_9') and key is not null) (type: boolean)
+ Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: key (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 166 Data size: 14442 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col0 (type: string)
+ minReductionHashAggr: 0.5
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 83 Data size: 7221 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 83 Data size: 7221 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ keys: KEY._col0 (type: string)
+ mode: mergepartial
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: bigint)
+ Reducer 3
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Semi Join 0 to 1
+ keys:
+ 0 _col0 (type: string)
+ 1 _col0 (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain select *
+
+from `src/_/cbo`
+
+where `src/_/cbo`.key in (select key from `src/_/cbo` s1 where s1.key > '9') order by key
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+PREHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-POSTHOOK: query: select b, `c/b/o_t1`.c, `//cbo_t2`.c_int, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.a=`//cbo_t2`.key join `cbo_/t3////` on `c/b/o_t1`.a=`cbo_/t3////`.key
+POSTHOOK: query: explain select *
+
+from `src/_/cbo`
+
+where `src/_/cbo`.key in (select key from `src/_/cbo` s1 where s1.key > '9') order by key
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+POSTHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-1 1.0 1 1
-PREHOOK: query: select `cbo_/t3////`.c_int, b, `//cbo_t2`.c_int, `c/b/o_t1`.c from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.a=`//cbo_t2`.key join `cbo_/t3////` on `c/b/o_t1`.a=`cbo_/t3////`.key
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: src/_/cbo
+ filterExpr: key is not null (type: boolean)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: key is not null (type: boolean)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: key (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: key (type: string)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: value (type: string)
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Map 4
+ Map Operator Tree:
+ TableScan
+ alias: s1
+ filterExpr: (key > '9') (type: boolean)
+ Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: (key > '9') (type: boolean)
+ Statistics: Num rows: 166 Data size: 14442 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: key (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 166 Data size: 14442 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col0 (type: string)
+ minReductionHashAggr: 0.5
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 83 Data size: 7221 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 83 Data size: 7221 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Semi Join 0 to 1
+ keys:
+ 0 key (type: string)
+ 1 _col0 (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 131 Data size: 23318 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ null sort order: z
+ sort order: +
+ Statistics: Num rows: 131 Data size: 23318 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: string)
+ Reducer 3
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Select Operator
+ expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 131 Data size: 23318 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 131 Data size: 23318 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain select *
+
+from `src/_/cbo` b
+
+where b.key in
+
+ (select distinct a.key
+
+ from `src/_/cbo` a
+
+ where b.value = a.value and a.key > '9'
+
+ ) order by b.key
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+PREHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-POSTHOOK: query: select `cbo_/t3////`.c_int, b, `//cbo_t2`.c_int, `c/b/o_t1`.c from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` join `//cbo_t2` on `c/b/o_t1`.a=`//cbo_t2`.key join `cbo_/t3////` on `c/b/o_t1`.a=`cbo_/t3////`.key
+POSTHOOK: query: explain select *
+
+from `src/_/cbo` b
+
+where b.key in
+
+ (select distinct a.key
+
+ from `src/_/cbo` a
+
+ where b.value = a.value and a.key > '9'
+
+ ) order by b.key
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+POSTHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-1 1 1 1.0
-PREHOOK: query: select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` left outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Reducer 4 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
+ Reducer 4 <- Map 1 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: b
+ filterExpr: ((key is not null and value is not null) or ((key > '9') and value is not null)) (type: boolean)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: (key is not null and value is not null) (type: boolean)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: key (type: string), value (type: string)
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: key (type: string), value (type: string)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: ((key > '9') and value is not null) (type: boolean)
+ Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: key (type: string), value (type: string)
+ minReductionHashAggr: 0.0
+ mode: hash
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string), _col1 (type: string)
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
+ Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Semi Join 0 to 1
+ keys:
+ 0 key (type: string), value (type: string)
+ 1 _col0 (type: string), _col1 (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 64 Data size: 11392 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ null sort order: z
+ sort order: +
+ Statistics: Num rows: 64 Data size: 11392 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: string)
+ Reducer 3
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Select Operator
+ expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 64 Data size: 11392 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 64 Data size: 11392 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ Reducer 4
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ keys: KEY._col0 (type: string), KEY._col1 (type: string)
+ mode: mergepartial
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col0 (type: string), _col1 (type: string)
+ minReductionHashAggr: 0.0
+ mode: hash
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 41 Data size: 7298 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string), _col1 (type: string)
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
+ Statistics: Num rows: 41 Data size: 7298 Basic stats: COMPLETE Column stats: COMPLETE
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain select p.p_partkey, li.l_suppkey
+
+from (select distinct l_partkey as p_partkey from `line/item`) p join `line/item` li on p.p_partkey = li.l_partkey
+
+where li.l_linenumber = 1 and
+
+ li.l_orderkey in (select l_orderkey from `line/item` where l_shipmode = 'AIR' and l_linenumber = li.l_linenumber)
+
+ order by p.p_partkey
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+PREHOOK: Input: db~!@#$%^&*(),<>@line/item
#### A masked pattern was here ####
-POSTHOOK: query: select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` left outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key
+POSTHOOK: query: explain select p.p_partkey, li.l_suppkey
+
+from (select distinct l_partkey as p_partkey from `line/item`) p join `line/item` li on p.p_partkey = li.l_partkey
+
+where li.l_linenumber = 1 and
+
+ li.l_orderkey in (select l_orderkey from `line/item` where l_shipmode = 'AIR' and l_linenumber = li.l_linenumber)
+
+ order by p.p_partkey
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+POSTHOOK: Input: db~!@#$%^&*(),<>@line/item
#### A masked pattern was here ####
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-1 1.0 1 1 1
-PREHOOK: query: select key, `c/b/o_t1`.c_int, `//cbo_t2`.p, q from `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.key=p left outer join (select key as a, c_int as b, `cbo_/t3////`.c_float as c from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.key=a
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE)
+ Reducer 3 <- Map 6 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
+ Reducer 4 <- Map 7 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE)
+ Reducer 5 <- Reducer 4 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: line/item
+ filterExpr: l_partkey is not null (type: boolean)
+ Statistics: Num rows: 100 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: l_partkey is not null (type: boolean)
+ Statistics: Num rows: 100 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: l_partkey (type: int)
+ minReductionHashAggr: 0.5
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 50 Data size: 200 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 50 Data size: 200 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Map 6
+ Map Operator Tree:
+ TableScan
+ alias: li
+ filterExpr: (l_partkey is not null and l_orderkey is not null and (l_linenumber = 1)) (type: boolean)
+ Statistics: Num rows: 100 Data size: 1600 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: (l_partkey is not null and l_orderkey is not null and (l_linenumber = 1)) (type: boolean)
+ Statistics: Num rows: 14 Data size: 224 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: l_partkey (type: int)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: l_partkey (type: int)
+ Statistics: Num rows: 14 Data size: 224 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: l_orderkey (type: int), l_suppkey (type: int)
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Map 7
+ Map Operator Tree:
+ TableScan
+ alias: line/item
+ filterExpr: ((l_shipmode = 'AIR') and l_orderkey is not null and (l_linenumber = 1)) (type: boolean)
+ Statistics: Num rows: 100 Data size: 9600 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: ((l_shipmode = 'AIR') and l_orderkey is not null and (l_linenumber = 1)) (type: boolean)
+ Statistics: Num rows: 2 Data size: 192 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: l_orderkey (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col0 (type: int), 1 (type: int)
+ minReductionHashAggr: 0.5
+ mode: hash
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int), 1 (type: int)
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: int), 1 (type: int)
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ keys: KEY._col0 (type: int)
+ mode: mergepartial
+ outputColumnNames: _col0
+ Statistics: Num rows: 50 Data size: 200 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 50 Data size: 200 Basic stats: COMPLETE Column stats: COMPLETE
+ Reducer 3
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 _col0 (type: int)
+ 1 l_partkey (type: int)
+ outputColumnNames: _col0, _col1, _col3
+ Statistics: Num rows: 14 Data size: 168 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col1 (type: int), 1 (type: int)
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col1 (type: int), 1 (type: int)
+ Statistics: Num rows: 14 Data size: 168 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: int), _col3 (type: int)
+ Reducer 4
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Semi Join 0 to 1
+ keys:
+ 0 _col1 (type: int), 1 (type: int)
+ 1 _col0 (type: int), 1 (type: int)
+ outputColumnNames: _col0, _col3
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col0 (type: int), _col3 (type: int)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ null sort order: z
+ sort order: +
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: int)
+ Reducer 5
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Select Operator
+ expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain select key, value, count(*)
+
+from `src/_/cbo` b
+
+where b.key in (select key from `src/_/cbo` where `src/_/cbo`.key > '8')
+
+group by key, value
+
+having count(*) in (select count(*) from `src/_/cbo` s1 where s1.key > '9' group by s1.key ) order by key
PREHOOK: type: QUERY
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-PREHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-PREHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-PREHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+PREHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
-POSTHOOK: query: select key, `c/b/o_t1`.c_int, `//cbo_t2`.p, q from `c/b/o_t1` join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.key=p left outer join (select key as a, c_int as b, `cbo_/t3////`.c_float as c from `cbo_/t3////`)`cbo_/t3////` on `c/b/o_t1`.key=a
+POSTHOOK: query: explain select key, value, count(*)
+
+from `src/_/cbo` b
+
+where b.key in (select key from `src/_/cbo` where `src/_/cbo`.key > '8')
+
+group by key, value
+
+having count(*) in (select count(*) from `src/_/cbo` s1 where s1.key > '9' group by s1.key ) order by key
POSTHOOK: type: QUERY
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2
-POSTHOOK: Input: db~!@#$%^&*(),<>@//cbo_t2@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1
-POSTHOOK: Input: db~!@#$%^&*(),<>@c/b/o_t1@dt=2014
-POSTHOOK: Input: db~!@#$%^&*(),<>@cbo_/t3////
+POSTHOOK: Input: db~!@#$%^&*(),<>@src/_/cbo
#### A masked pattern was here ####
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
- 1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-1 1 1 1
-PREHOOK: query: select b, `c/b/o_t1`.c, `//cbo_t2`.p, q, `cbo_/t3////`.c_int from (select key as a, c_int as b, `c/b/o_t1`.c_float as c from `c/b/o_t1`) `c/b/o_t1` right outer join (select `//cbo_t2`.key as p, `//cbo_t2`.c_int as q, c_float as r from `//cbo_t2`) `//cbo_t2` on `c/b/o_t1`.a=p join `cbo_/t3////` on `c/b/o_t1`.a=key
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 6 (SIMPLE_EDGE)
+ Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
+ Reducer 4 <- Reducer 3 (SIMPLE_EDGE), Reducer 7 (SIMPLE_EDGE)
+ Reducer 5 <- Reducer 4 (SIMPLE_EDGE)
+ Reducer 7 <- Map 6 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: b
+ filterExpr: key is not null (type: boolean)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: key is not null (type: boolean)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: key (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: key (type: string)
+ Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: value (type: string)
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Map 6
+ Map Operator Tree:
+ TableScan
+ alias: src/_/cbo
+ filterExpr: ((key > '8') or (key > '9')) (type: boolean)
+ Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: (key > '8') (type: boolean)
+ Statistics: Num rows: 166 Data size: 14442 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: key (type: string)
+ outputColumnNames: _col0
+ Statistics: Num rows: 166 Data size: 14442 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col0 (type: string)
+ minReductionHashAggr: 0.5
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 83 Data size: 7221 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 83 Data size: 7221 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: (key > '9') (type: boolean)
+ Statistics: Num rows: 166 Data size: 14442 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ aggregations: count()
+ keys: key (type: string)
+ minReductionHashAggr: 0.5
+ mode: hash
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
+ Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: bigint)
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Semi Join 0 to 1
+ keys:
+ 0 key (type: string)
+ 1 _col0 (type: string)
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 131 Data size: 23318 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ aggregations: count()
+ keys: _col0 (type: string), _col1 (type: string)
+ minReductionHashAggr: 0.0
+ mode: hash
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 65 Data size: 12090 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string), _col1 (type: string)
+ null sort order: zz
+ sort order: ++
+ Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
+ Statistics: Num rows: 65 Data size: 12090 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col2 (type: bigint)
+ Reducer 3
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ keys: KEY._col0 (type: string), KEY._col1 (type: string)
+ mode: mergepartial
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 65 Data size: 12090 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: _col2 is not null (type: boolean)
+ Statistics: Num rows: 65 Data size: 12090 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col2 (type: bigint)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col2 (type: bigint)
+ Statistics: Num rows: 65 Data size: 12090 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col0 (type: string), _col1 (type: string)
+ Reducer 4
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Left Semi Join 0 to 1
+ keys:
+ 0 _col2 (type: bigint)
+ 1 _col0 (type: bigint)
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 41 Data size: 7626 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ null sort order: z
+ sort order: +
+ Statistics: Num rows: 41 Data size: 7626 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: string), _col2 (type: bigint)
+ Reducer 5
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Select Operator
+ expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: string), VALUE._col1 (type: bigint)
+ outputColumnNames: _col0, _col1, _col2
+ Statistics: Num rows: 41 Data size: 7626 Basic stats: COMPLETE Column stats: COMPLETE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 41 Data size: 7626 Basic stats: COMPLETE Column stats: COMPLETE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+ Reducer 7
+ Execution mode: vectorized, llap
+ Reduce Operator Tree:
+ Group By Operator
+ aggregations: count(VALUE._col0)
+ keys: KEY._col0 (type: string)
+ mode: mergepartial
+ outputColumnNames: _col0, _col1
+ Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col1 (type: bigint)
+ outputColumnNames: _col1
+ Statistics: Num rows: 83 Data size: 664 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: _col1 is not null (type: boolean)
+ Statistics: Num rows: 83 Data size: 664 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: _col1 (type: bigint)
+ outputColumnNames: _col0
+ Statistics: Num rows: 83 Data size: 664 Basic stats: COMPLETE Column stats: COMPLETE
+ Group By Operator
+ keys: _col0 (type: bigint)
+ minReductionHashAggr: 0.5060241
+ mode: hash
+ outputColumnNames: _col0
+ Statistics: Num rows: 41 Data size: 328 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: bigint)
+ null sort order: z
+ sort order: +
+ Map-reduce partition columns: _col0 (type: bigint)
+ Statistics: Num rows: 41 Data size: 328 Basic stats: COMPLETE Column stats: COMPLETE
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
... 39176 lines suppressed ...