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 2015/08/07 13:12:20 UTC

[1/4] hive git commit: HIVE-11391: CBO (Calcite Return Path): Add CBO tests with return path on (Jesus Camacho Rodriguez, reviewed by Pengcheng Xiong)

Repository: hive
Updated Branches:
  refs/heads/master 6441a8794 -> 7e4f3bbff


http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_views.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_views.q.out b/ql/src/test/results/clientpositive/cbo_rp_views.q.out
new file mode 100644
index 0000000..4a7b935
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_views.q.out
@@ -0,0 +1,237 @@
+PREHOOK: query: -- 10. Test views
+create view v1 as select c_int, value, c_boolean, dt from cbo_t1
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Output: database:default
+PREHOOK: Output: default@v1
+POSTHOOK: query: -- 10. Test views
+create view v1 as select c_int, value, c_boolean, dt from cbo_t1
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@v1
+PREHOOK: query: create view v2 as select c_int, value from cbo_t2
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Output: database:default
+PREHOOK: Output: default@v2
+POSTHOOK: query: create view v2 as select c_int, value from cbo_t2
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@v2
+PREHOOK: query: select value from v1 where c_boolean=false
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@v1
+#### A masked pattern was here ####
+POSTHOOK: query: select value from v1 where c_boolean=false
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@v1
+#### A masked pattern was here ####
+1
+1
+PREHOOK: query: select max(c_int) from v1 group by (c_boolean)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@v1
+#### A masked pattern was here ####
+POSTHOOK: query: select max(c_int) from v1 group by (c_boolean)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@v1
+#### A masked pattern was here ####
+NULL
+1
+1
+PREHOOK: query: select count(v1.c_int)  from v1 join cbo_t2 on v1.c_int = cbo_t2.c_int
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@v1
+#### A masked pattern was here ####
+POSTHOOK: query: select count(v1.c_int)  from v1 join cbo_t2 on v1.c_int = cbo_t2.c_int
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@v1
+#### A masked pattern was here ####
+234
+PREHOOK: query: select count(v1.c_int)  from v1 join v2 on v1.c_int = v2.c_int
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@v1
+PREHOOK: Input: default@v2
+#### A masked pattern was here ####
+POSTHOOK: query: select count(v1.c_int)  from v1 join v2 on v1.c_int = v2.c_int
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@v1
+POSTHOOK: Input: default@v2
+#### A masked pattern was here ####
+234
+PREHOOK: query: select count(*) from v1 a join v1 b on a.value = b.value
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@v1
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from v1 a join v1 b on a.value = b.value
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@v1
+#### A masked pattern was here ####
+156
+PREHOOK: query: create view v3 as select v1.value val from v1 join cbo_t1 on v1.c_boolean = cbo_t1.c_boolean
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@v1
+PREHOOK: Output: database:default
+PREHOOK: Output: default@v3
+POSTHOOK: query: create view v3 as select v1.value val from v1 join cbo_t1 on v1.c_boolean = cbo_t1.c_boolean
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@v1
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@v3
+PREHOOK: query: select count(val) from v3 where val != '1'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@v1
+PREHOOK: Input: default@v3
+#### A masked pattern was here ####
+POSTHOOK: query: select count(val) from v3 where val != '1'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@v1
+POSTHOOK: Input: default@v3
+#### A masked pattern was here ####
+96
+PREHOOK: query: with q1 as ( select key from cbo_t1 where key = '1')
+select count(*) from q1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: with q1 as ( select key from cbo_t1 where key = '1')
+select count(*) from q1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+12
+PREHOOK: query: with q1 as ( select value from v1 where c_boolean = false)
+select count(value) from q1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@v1
+#### A masked pattern was here ####
+POSTHOOK: query: with q1 as ( select value from v1 where c_boolean = false)
+select count(value) from q1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@v1
+#### A masked pattern was here ####
+2
+PREHOOK: query: create view v4 as
+with q1 as ( select key,c_int from cbo_t1  where key = '1')
+select * from q1
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Output: database:default
+PREHOOK: Output: default@v4
+POSTHOOK: query: create view v4 as
+with q1 as ( select key,c_int from cbo_t1  where key = '1')
+select * from q1
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@v4
+PREHOOK: query: with q1 as ( select c_int from q2 where c_boolean = false),
+q2 as ( select c_int,c_boolean from v1  where value = '1')
+select sum(c_int) from (select c_int from q1) a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@v1
+#### A masked pattern was here ####
+POSTHOOK: query: with q1 as ( select c_int from q2 where c_boolean = false),
+q2 as ( select c_int,c_boolean from v1  where value = '1')
+select sum(c_int) from (select c_int from q1) a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@v1
+#### A masked pattern was here ####
+2
+PREHOOK: query: with q1 as ( select cbo_t1.c_int c_int from q2 join cbo_t1 where q2.c_int = cbo_t1.c_int  and cbo_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
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@v1
+PREHOOK: Input: default@v4
+#### A masked pattern was here ####
+POSTHOOK: query: with q1 as ( select cbo_t1.c_int c_int from q2 join cbo_t1 where q2.c_int = cbo_t1.c_int  and cbo_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
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@v1
+POSTHOOK: Input: default@v4
+#### A masked pattern was here ####
+31104
+PREHOOK: query: drop view v1
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: default@v1
+PREHOOK: Output: default@v1
+POSTHOOK: query: drop view v1
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: default@v1
+POSTHOOK: Output: default@v1
+PREHOOK: query: drop view v2
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: default@v2
+PREHOOK: Output: default@v2
+POSTHOOK: query: drop view v2
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: default@v2
+POSTHOOK: Output: default@v2
+PREHOOK: query: drop view v3
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: default@v3
+PREHOOK: Output: default@v3
+POSTHOOK: query: drop view v3
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: default@v3
+POSTHOOK: Output: default@v3
+PREHOOK: query: drop view v4
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: default@v4
+PREHOOK: Output: default@v4
+POSTHOOK: query: drop view v4
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: default@v4
+POSTHOOK: Output: default@v4

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_windowing.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_windowing.q.out b/ql/src/test/results/clientpositive/cbo_rp_windowing.q.out
new file mode 100644
index 0000000..52b584a
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_windowing.q.out
@@ -0,0 +1,293 @@
+PREHOOK: query: -- 9. Test Windowing Functions
+-- SORT_QUERY_RESULTS
+
+select count(c_int) over() from cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- 9. Test Windowing Functions
+-- SORT_QUERY_RESULTS
+
+select count(c_int) over() from cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+PREHOOK: query: 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_float order by key), lag(c_float, 2, c_float) over(partition by c_float order by key) from cbo_t1 order by rn
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: 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_float order by key), lag(c_float, 2, c_float) over(partition by c_float order by key) from cbo_t1 order by rn
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+0	NULL	NULL	NULL	1	1	1	0.0	NULL	NULL
+0	NULL	NULL	NULL	2	1	1	0.0	NULL	NULL
+16	16.0	1	1	10	5	3	0.24	1	1.0
+16	16.0	1	1	11	5	3	0.24	1	1.0
+16	16.0	1	1	12	5	3	0.24	1	1.0
+16	16.0	1	1	13	5	3	0.24	1	1.0
+16	16.0	1	1	14	5	3	0.24	1	1.0
+16	16.0	1	1	15	5	3	0.24	1	1.0
+16	16.0	1	1	16	5	3	0.24	1	1.0
+16	16.0	1	1	5	5	3	0.24	1	1.0
+16	16.0	1	1	6	5	3	0.24	1	1.0
+16	16.0	1	1	7	5	3	0.24	1	1.0
+16	16.0	1	1	8	5	3	0.24	1	1.0
+16	16.0	1	1	9	5	3	0.24	1	1.0
+18	18.0	1	1	17	17	4	0.94	1	1.0
+18	18.0	1	1	18	17	4	0.94	1	1.0
+2	2.0	1	1	1	1	1	0.0	1	1.0
+2	2.0	1	1	2	1	1	0.0	1	1.0
+4	4.0	1	1	3	3	2	0.12	1	1.0
+4	4.0	1	1	4	3	2	0.12	1	1.0
+PREHOOK: query: 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(partition by c_float   order by key  ), lag(c_float, 2, c_float) over(partition by c_float   order by key) from cbo_t1 order by rn) cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: 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(partition by c_float   order by key  ), lag(c_float, 2, c_float) over(partition by c_float   order by key) from cbo_t1 order by rn) cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+0	NULL	NULL	NULL	1	1	1	0.0	NULL	NULL
+0	NULL	NULL	NULL	2	1	1	0.0	NULL	NULL
+16	16.0	1	1	10	5	3	0.24	1	1.0
+16	16.0	1	1	11	5	3	0.24	1	1.0
+16	16.0	1	1	12	5	3	0.24	1	1.0
+16	16.0	1	1	13	5	3	0.24	1	1.0
+16	16.0	1	1	14	5	3	0.24	1	1.0
+16	16.0	1	1	15	5	3	0.24	1	1.0
+16	16.0	1	1	16	5	3	0.24	1	1.0
+16	16.0	1	1	5	5	3	0.24	1	1.0
+16	16.0	1	1	6	5	3	0.24	1	1.0
+16	16.0	1	1	7	5	3	0.24	1	1.0
+16	16.0	1	1	8	5	3	0.24	1	1.0
+16	16.0	1	1	9	5	3	0.24	1	1.0
+18	18.0	1	1	17	17	4	0.94	1	1.0
+18	18.0	1	1	18	17	4	0.94	1	1.0
+2	2.0	1	1	1	1	1	0.0	1	1.0
+2	2.0	1	1	2	1	1	0.0	1	1.0
+4	4.0	1	1	3	3	2	0.12	1	1.0
+4	4.0	1	1	4	3	2	0.12	1	1.0
+PREHOOK: query: select x from (select count(c_int) over() as x, sum(c_float) over() from cbo_t1) cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select x from (select count(c_int) over() as x, sum(c_float) over() from cbo_t1) cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+18
+PREHOOK: query: select 1+sum(c_int) over() from cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select 1+sum(c_int) over() from cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+19
+19
+19
+19
+19
+19
+19
+19
+19
+19
+19
+19
+19
+19
+19
+19
+19
+19
+19
+19
+PREHOOK: query: select sum(c_int)+sum(sum(c_int)) over() from cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(c_int)+sum(sum(c_int)) over() from cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+36
+PREHOOK: query: 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 value Rows between 1 preceding and unbounded following), sum(c_float) over (partition by key order by value rows between 1 preceding and current row), max(c_float) over (partition by key order by value rows between 1 preceding and unbounded following), min(c_float) over (partition by key order by value rows between 1 preceding and 1 following) from cbo_t1) cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: 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 value Rows between 1 preceding and unbounded following), sum(c_float) over (partition by key order by value rows between 1 preceding and current row), max(c_float) over (partition by key order by value rows between 1 preceding and unbounded following), min(c_float) over (partition by key order by value rows between 1 preceding and 1 following) from cbo_t1) cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	1.0	1.0	1.0	1.0	1.0
+1	1	1	1.0	1.0	1.0	1.0	1.0	1.0
+1	1	1	1.0	1.0	1.0	1.0	1.0	1.0
+1	1	1	1.0	1.0	1.0	1.0	1.0	1.0
+1	1	2	1.0	10.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	11.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	12.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	2.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	2.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	2.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	2.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	3.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	4.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	5.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	6.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	7.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	8.0	1.0	2.0	1.0	1.0
+1	1	2	1.0	9.0	1.0	2.0	1.0	1.0
+NULL	NULL	0	NULL	NULL	NULL	NULL	NULL	NULL
+NULL	NULL	0	NULL	NULL	NULL	NULL	NULL	NULL
+PREHOOK: query: 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 row) e, avg(c_float) over (partition by key order by value range between 1 preceding and unbounded following) f, sum(c_float) over (partition by key order by value range between 1 preceding and current row) g, max(c_float) over (partition by key order by value range between 1 preceding and unbounded following) h, min(c_float) over (partition by key order by value range between 1 preceding and 1 following) i from cbo_t1) cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: 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 row) e, avg(c_float) over (partition by key order by value range between 1 preceding and unbounded following) f, sum(c_float) over (partition by key order by value range between 1 preceding and current row) g, max(c_float) over (partition by key order by value range between 1 preceding and unbounded following) h, min(c_float) over (partition by key order by value range between 1 preceding and 1 following) i from cbo_t1) cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1.0	1	1.0	1	12	1.0	12.0	1.0	12.0	1	2
+1.0	1	1.0	1	12	1.0	12.0	1.0	12.0	1	2
+1.0	1	1.0	1	12	1.0	12.0	1.0	12.0	1	2
+1.0	1	1.0	1	12	1.0	12.0	1.0	12.0	1	2
+1.0	1	1.0	1	12	1.0	12.0	1.0	12.0	1	2
+1.0	1	1.0	1	12	1.0	12.0	1.0	12.0	1	2
+1.0	1	1.0	1	12	1.0	12.0	1.0	12.0	1	2
+1.0	1	1.0	1	12	1.0	12.0	1.0	12.0	1	2
+1.0	1	1.0	1	12	1.0	12.0	1.0	12.0	1	2
+1.0	1	1.0	1	12	1.0	12.0	1.0	12.0	1	2
+1.0	1	1.0	1	12	1.0	12.0	1.0	12.0	1	2
+1.0	1	1.0	1	12	1.0	12.0	1.0	12.0	1	2
+1.0	1	1.0	1	2	1.0	2.0	1.0	2.0	1	2
+1.0	1	1.0	1	2	1.0	2.0	1.0	2.0	1	2
+1.0	1	1.0	1	2	1.0	2.0	1.0	2.0	1	2
+1.0	1	1.0	1	2	1.0	2.0	1.0	2.0	1	2
+1.0	1	1.0	1	2	1.0	2.0	1.0	2.0	1	2
+1.0	1	1.0	1	2	1.0	2.0	1.0	2.0	1	2
+NULL	NULL	NULL	NULL	0	NULL	NULL	NULL	NULL	NULL	NULL
+NULL	NULL	NULL	NULL	0	NULL	NULL	NULL	NULL	NULL	NULL
+PREHOOK: query: select *, rank() over(partition by key order by value) as rr from src1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src1
+#### A masked pattern was here ####
+POSTHOOK: query: select *, rank() over(partition by key order by value) as rr from src1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src1
+#### A masked pattern was here ####
+		1
+		1
+		1
+		1
+	val_165	5
+	val_193	6
+	val_265	7
+	val_27	8
+	val_409	9
+	val_484	10
+128		1
+146	val_146	1
+150	val_150	1
+213	val_213	1
+224		1
+238	val_238	1
+255	val_255	1
+273	val_273	1
+278	val_278	1
+311	val_311	1
+369		1
+401	val_401	1
+406	val_406	1
+66	val_66	1
+98	val_98	1
+PREHOOK: query: select *, rank() over(partition by key order by value) from src1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src1
+#### A masked pattern was here ####
+POSTHOOK: query: select *, rank() over(partition by key order by value) from src1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src1
+#### A masked pattern was here ####
+		1
+		1
+		1
+		1
+	val_165	5
+	val_193	6
+	val_265	7
+	val_27	8
+	val_409	9
+	val_484	10
+128		1
+146	val_146	1
+150	val_150	1
+213	val_213	1
+224		1
+238	val_238	1
+255	val_255	1
+273	val_273	1
+278	val_278	1
+311	val_311	1
+369		1
+401	val_401	1
+406	val_406	1
+66	val_66	1
+98	val_98	1


[3/4] hive git commit: HIVE-11391: CBO (Calcite Return Path): Add CBO tests with return path on (Jesus Camacho Rodriguez, reviewed by Pengcheng Xiong)

Posted by jc...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_join.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_join.q.out b/ql/src/test/results/clientpositive/cbo_rp_join.q.out
new file mode 100644
index 0000000..c5e9858
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_join.q.out
@@ -0,0 +1,15028 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+-- 4. Test Select + Join + TS
+select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 join             cbo_t2 on cbo_t1.key=cbo_t2.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+-- 4. Test Select + Join + TS
+select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 join             cbo_t2 on cbo_t1.key=cbo_t2.key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@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 cbo_t1.key from cbo_t1 join cbo_t3
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t1.key from cbo_t1 join cbo_t3
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@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 cbo_t1.key from cbo_t1 join cbo_t3 where cbo_t1.key=cbo_t3.key and cbo_t1.key >= 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t1.key from cbo_t1 join cbo_t3 where cbo_t1.key=cbo_t3.key and cbo_t1.key >= 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@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 
+PREHOOK: query: select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 left outer join  cbo_t2 on cbo_t1.key=cbo_t2.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 left outer join  cbo_t2 on cbo_t1.key=cbo_t2.key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@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
+NULL	NULL
+NULL	NULL
+PREHOOK: query: select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 right outer join cbo_t2 on cbo_t1.key=cbo_t2.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 right outer join cbo_t2 on cbo_t1.key=cbo_t2.key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@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
+NULL	2
+NULL	2
+NULL	2
+NULL	2
+NULL	2
+NULL	NULL
+NULL	NULL
+PREHOOK: query: select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 full outer join  cbo_t2 on cbo_t1.key=cbo_t2.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 full outer join  cbo_t2 on cbo_t1.key=cbo_t2.key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@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
+NULL	2
+NULL	2
+NULL	2
+NULL	2
+NULL	2
+NULL	NULL
+NULL	NULL
+NULL	NULL
+NULL	NULL
+PREHOOK: query: select b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_t1.a=p join cbo_t3 on cbo_t1.a=key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_t1.a=p join cbo_t3 on cbo_t1.a=key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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, cbo_t1.c_int, cbo_t2.p, q from cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_t1.key=p join (select key as a, c_int as b, cbo_t3.c_float as c from cbo_t3)cbo_t3 on cbo_t1.key=a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select key, cbo_t1.c_int, cbo_t2.p, q from cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_t1.key=p join (select key as a, c_int as b, cbo_t3.c_float as c from cbo_t3)cbo_t3 on cbo_t1.key=a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1 	1	1 	1
+1 	1	1 	1
+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, cbo_t1.b, key, cbo_t2.c_int, cbo_t3.p from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_t1 join cbo_t2  on cbo_t1.a=key join (select key as p, c_int as q, cbo_t3.c_float as r from cbo_t3)cbo_t3 on cbo_t1.a=cbo_t3.p
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select a, cbo_t1.b, key, cbo_t2.c_int, cbo_t3.p from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_t1 join cbo_t2  on cbo_t1.a=key join (select key as p, c_int as q, cbo_t3.c_float as r from cbo_t3)cbo_t3 on cbo_t1.a=cbo_t3.p
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1	1	1	1	1
+1 	1	1 	1	1 
+1 	1	1 	1	1 
+1 	1	1 	1	1 
+1 	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, cbo_t1.c, cbo_t2.c_int, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_t1 join cbo_t2 on cbo_t1.a=cbo_t2.key join cbo_t3 on cbo_t1.a=cbo_t3.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select b, cbo_t1.c, cbo_t2.c_int, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_t1 join cbo_t2 on cbo_t1.a=cbo_t2.key join cbo_t3 on cbo_t1.a=cbo_t3.key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@cbo_t3
+#### 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, cbo_t1.c from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_t1 join cbo_t2 on cbo_t1.a=cbo_t2.key join cbo_t3 on cbo_t1.a=cbo_t3.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t3.c_int, b, cbo_t2.c_int, cbo_t1.c from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_t1 join cbo_t2 on cbo_t1.a=cbo_t2.key join cbo_t3 on cbo_t1.a=cbo_t3.key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@cbo_t3
+#### 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, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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, cbo_t1.c_int, cbo_t2.p, q from cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_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 cbo_t1.key=a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select key, cbo_t1.c_int, cbo_t2.p, q from cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_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 cbo_t1.key=a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1 	1	1 	1
+1 	1	1 	1
+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, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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, cbo_t1.c_int, cbo_t2.p, q from cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_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 cbo_t1.key=a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select key, cbo_t1.c_int, cbo_t2.p, q from cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_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 cbo_t1.key=a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1 	1	1 	1
+1 	1	1 	1
+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
+PREHOOK: query: select b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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, cbo_t1.c_int, cbo_t2.p, q from cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_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 cbo_t1.key=a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select key, cbo_t1.c_int, cbo_t2.p, q from cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_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 cbo_t1.key=a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1	1	1	1
+1 	1	1 	1
+1 	1	1 	1
+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
+PREHOOK: query: -- 5. Test Select + Join + FIL + TS
+select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 join cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + cbo_t2.c_int == 2) and (cbo_t1.c_int > 0 or cbo_t2.c_float >= 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- 5. Test Select + Join + FIL + TS
+select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 join cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + cbo_t2.c_int == 2) and (cbo_t1.c_int > 0 or cbo_t2.c_float >= 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@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 cbo_t1.c_int, cbo_t2.c_int from cbo_t1 left outer join  cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + cbo_t2.c_int == 2) and (cbo_t1.c_int > 0 or cbo_t2.c_float >= 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 left outer join  cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + cbo_t2.c_int == 2) and (cbo_t1.c_int > 0 or cbo_t2.c_float >= 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@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 cbo_t1.c_int, cbo_t2.c_int from cbo_t1 right outer join cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + cbo_t2.c_int == 2) and (cbo_t1.c_int > 0 or cbo_t2.c_float >= 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 right outer join cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + cbo_t2.c_int == 2) and (cbo_t1.c_int > 0 or cbo_t2.c_float >= 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@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 cbo_t1.c_int, cbo_t2.c_int from cbo_t1 full outer join  cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + cbo_t2.c_int == 2) and (cbo_t1.c_int > 0 or cbo_t2.c_float >= 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 full outer join  cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + cbo_t2.c_int == 2) and (cbo_t1.c_int > 0 or cbo_t2.c_float >= 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@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 b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or cbo_t2.q >= 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int

<TRUNCATED>

[2/4] hive git commit: HIVE-11391: CBO (Calcite Return Path): Add CBO tests with return path on (Jesus Camacho Rodriguez, reviewed by Pengcheng Xiong)

Posted by jc...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_limit.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_limit.q.out b/ql/src/test/results/clientpositive/cbo_rp_limit.q.out
new file mode 100644
index 0000000..13df214
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_limit.q.out
@@ -0,0 +1,90 @@
+PREHOOK: query: -- 7. Test Select + TS + Join + Fil + GB + GB Having + Limit
+select key, (c_int+1)+2 as x, sum(c_int) from cbo_t1 group by c_float, cbo_t1.c_int, key order by x limit 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- 7. Test Select + TS + Join + Fil + GB + GB Having + Limit
+select key, (c_int+1)+2 as x, sum(c_int) from cbo_t1 group by c_float, cbo_t1.c_int, key order by x limit 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+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 cbo_t1 group by c_float, cbo_t1.c_int, key) R group by y, x order by x,y limit 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### 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 cbo_t1 group by c_float, cbo_t1.c_int, key) R group by y, x order by x,y limit 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+NULL	NULL	1
+PREHOOK: query: select key from(select key from (select key from cbo_t1 limit 5)cbo_t2  limit 5)cbo_t3  limit 5
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select key from(select key from (select key from cbo_t1 limit 5)cbo_t2  limit 5)cbo_t3  limit 5
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1
+1
+1
+1
+1
+PREHOOK: query: select key, c_int from(select key, c_int from (select key, c_int from cbo_t1 order by c_int limit 5)cbo_t1  order by c_int limit 5)cbo_t2  order by c_int limit 5
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select key, c_int from(select key, c_int from (select key, c_int from cbo_t1 order by c_int limit 5)cbo_t1  order by c_int limit 5)cbo_t2  order by c_int limit 5
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+NULL	NULL
+NULL	NULL
+1	1
+1	1
+1	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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0) group by c_float, cbo_t1.c_int, key order by a limit 5) cbo_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 limit 5) cbo_t2 on cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c order by cbo_t3.c_int+c desc, c limit 5
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0) group by c_float, cbo_t1.c_int, key order by a limit 5) cbo_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 limit 5) cbo_t2 on cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c order by cbo_t3.c_int+c desc, c limit 5
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_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) cbo_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_t2.c_int > 0 or cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key  having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 limit 5) cbo_t2 on cbo_t1.a=p left outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c  having cbo_t3.c_int > 0 and (c_int >=1 or c >= 1) and (c_int + c) >= 0  order by cbo_t3.c_int % c asc, cbo_t3.c_int, c desc limit 5
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_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) cbo_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_t2.c_int > 0 or cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key  having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 limit 5) cbo_t2 on cbo_t1.a=p left outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c  having cbo_t3.c_int > 0 and (c_int >=1 or c >= 1) and (c_int + c) >= 0  order by cbo_t3.c_int % c asc, cbo_t3.c_int, c desc limit 5
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+1	12	6
+1	2	6

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_semijoin.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_semijoin.q.out b/ql/src/test/results/clientpositive/cbo_rp_semijoin.q.out
new file mode 100644
index 0000000..bdd8125
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_semijoin.q.out
@@ -0,0 +1,440 @@
+PREHOOK: query: -- 12. SemiJoin
+select cbo_t1.c_int           from cbo_t1 left semi join   cbo_t2 on cbo_t1.key=cbo_t2.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- 12. SemiJoin
+select cbo_t1.c_int           from cbo_t1 left semi join   cbo_t2 on cbo_t1.key=cbo_t2.key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@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
+PREHOOK: query: select cbo_t1.c_int           from cbo_t1 left semi join   cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t1.c_int           from cbo_t1 left semi join   cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@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
+PREHOOK: query: select * from (select c, b, a from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p left semi join cbo_t3 on cbo_t1.a=key where (b + 1 == 2) and (b > 0 or c >= 0)) R where  (b + 1 = 2) and (R.b > 0 or c >= 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select c, b, a from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p left semi join cbo_t3 on cbo_t1.a=key where (b + 1 == 2) and (b > 0 or c >= 0)) R where  (b + 1 = 2) and (R.b > 0 or c >= 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+1.0	1	 1
+1.0	1	 1
+1.0	1	 1 
+1.0	1	 1 
+1.0	1	1
+1.0	1	1
+1.0	1	1
+1.0	1	1
+1.0	1	1
+1.0	1	1
+1.0	1	1
+1.0	1	1
+1.0	1	1
+1.0	1	1
+1.0	1	1
+1.0	1	1
+1.0	1	1 
+1.0	1	1 
+PREHOOK: query: select * from (select cbo_t3.c_int, cbo_t1.c, b from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 = 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p left outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t3.c_int  == 2) and (b > 0 or c_int >= 0)) R where  (R.c_int + 1 = 2) and (R.b > 0 or c_int >= 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select cbo_t3.c_int, cbo_t1.c, b from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 = 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p left outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t3.c_int  == 2) and (b > 0 or c_int >= 0)) R where  (R.c_int + 1 = 2) and (R.b > 0 or c_int >= 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+1	1.0	1
+PREHOOK: query: select * from (select c_int, b, cbo_t1.c from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p right outer join cbo_t3 on cbo_t1.a=key where (b + 1 == 2) and (b > 0 or c_int >= 0)) R where  (c + 1 = 2) and (R.b > 0 or c_int >= 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select c_int, b, cbo_t1.c from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p right outer join cbo_t3 on cbo_t1.a=key where (b + 1 == 2) and (b > 0 or c_int >= 0)) R where  (c + 1 = 2) and (R.b > 0 or c_int >= 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+PREHOOK: query: select * from (select c_int, b, cbo_t1.c from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p full outer join cbo_t3 on cbo_t1.a=key where (b + 1 == 2) and (b > 0 or c_int >= 0)) R where  (c + 1 = 2) and (R.b > 0 or c_int >= 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select c_int, b, cbo_t1.c from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p full outer join cbo_t3 on cbo_t1.a=key where (b + 1 == 2) and (b > 0 or c_int >= 0)) R where  (c + 1 = 2) and (R.b > 0 or c_int >= 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+1	1	1.0
+PREHOOK: query: select a, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_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) cbo_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 cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by q+r/10 desc, p) cbo_t2 on cbo_t1.a=p left semi join cbo_t3 on cbo_t1.a=key where (b + 1  >= 0) and (b > 0 or a >= 0) group by a, c  having a > 0 and (a >=1 or c >= 1) and (a + c) >= 0 order by c, a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select a, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_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) cbo_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 cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by q+r/10 desc, p) cbo_t2 on cbo_t1.a=p left semi join cbo_t3 on cbo_t1.a=key where (b + 1  >= 0) and (b > 0 or a >= 0) group by a, c  having a > 0 and (a >=1 or c >= 1) and (a + c) >= 0 order by c, a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+ 1	2	1
+ 1 	2	1
+1 	2	1
+1	12	1
+PREHOOK: query: select a, c, count(*)  from (select key as a, c_int+1 as b, sum(c_int) as c from cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_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) cbo_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 cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by q+r/10 desc, p limit 5) cbo_t2 on cbo_t1.a=p left semi join cbo_t3 on cbo_t1.a=key where (b + 1  >= 0) and (b > 0 or a >= 0) group by a, c  having a > 0 and (a >=1 or c >= 1) and (a + c) >= 0 order by c, a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select a, c, count(*)  from (select key as a, c_int+1 as b, sum(c_int) as c from cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_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) cbo_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 cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by q+r/10 desc, p limit 5) cbo_t2 on cbo_t1.a=p left semi join cbo_t3 on cbo_t1.a=key where (b + 1  >= 0) and (b > 0 or a >= 0) group by a, c  having a > 0 and (a >=1 or c >= 1) and (a + c) >= 0 order by c, a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+ 1	2	1
+ 1 	2	1
+1 	2	1
+1	12	1

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_simple_select.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_simple_select.q.out b/ql/src/test/results/clientpositive/cbo_rp_simple_select.q.out
new file mode 100644
index 0000000..d161d9f
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_simple_select.q.out
@@ -0,0 +1,755 @@
+PREHOOK: query: -- 1. Test Select + TS
+select * from cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- 1. Test Select + TS
+select * from cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+NULL	NULL	NULL	NULL	NULL	2014
+NULL	NULL	NULL	NULL	NULL	2014
+PREHOOK: query: select * from cbo_t1 as cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from cbo_t1 as cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+NULL	NULL	NULL	NULL	NULL	2014
+NULL	NULL	NULL	NULL	NULL	2014
+PREHOOK: query: select * from cbo_t1 as cbo_t2
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from cbo_t1 as cbo_t2
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+NULL	NULL	NULL	NULL	NULL	2014
+NULL	NULL	NULL	NULL	NULL	2014
+PREHOOK: query: select cbo_t1.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t1.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+ 1	1	25.0
+ 1	1	25.0
+ 1 	1	25.0
+ 1 	1	25.0
+1 	1	25.0
+1 	1	25.0
+1	1	25.0
+1	1	25.0
+NULL	NULL	NULL
+NULL	NULL	NULL
+PREHOOK: query: select * from cbo_t1 where (((key=1) and (c_float=10)) and (c_int=20))
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from cbo_t1 where (((key=1) and (c_float=10)) and (c_int=20))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+PREHOOK: query: -- 2. Test Select + TS + FIL
+select * from cbo_t1 where cbo_t1.c_int >= 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- 2. Test Select + TS + FIL
+select * from cbo_t1 where cbo_t1.c_int >= 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+PREHOOK: query: select * from cbo_t1 as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from cbo_t1 as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+PREHOOK: query: select * from cbo_t1 as cbo_t2 where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from cbo_t1 as cbo_t2 where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+PREHOOK: query: select cbo_t2.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from cbo_t1 as cbo_t2  where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t2.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from cbo_t1 as cbo_t2  where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+ 1	1	25.0
+ 1	1	25.0
+ 1 	1	25.0
+ 1 	1	25.0
+1 	1	25.0
+1 	1	25.0
+1	1	25.0
+1	1	25.0
+PREHOOK: query: -- 3 Test Select + Select + TS + FIL
+select * from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- 3 Test Select + Select + TS + FIL
+select * from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+PREHOOK: query: select * from (select * from cbo_t1 as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select * from cbo_t1 as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+PREHOOK: query: select * from (select * from cbo_t1 as cbo_t2 where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select * from cbo_t1 as cbo_t2 where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+PREHOOK: query: select * from (select cbo_t2.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from cbo_t1 as cbo_t2  where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select cbo_t2.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from cbo_t1 as cbo_t2  where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+ 1	1	25.0
+ 1	1	25.0
+ 1 	1	25.0
+ 1 	1	25.0
+1 	1	25.0
+1 	1	25.0
+1	1	25.0
+1	1	25.0
+PREHOOK: query: select * from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_t1.c_int >= 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_t1.c_int >= 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+PREHOOK: query: select * from (select * from cbo_t1 as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select * from cbo_t1 as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+PREHOOK: query: select * from (select * from cbo_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
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select * from cbo_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
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+PREHOOK: query: select * from (select cbo_t2.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from cbo_t1 as cbo_t2  where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1 where cbo_t1.c_int >= 0 and y+c_int >= 0 or x <= 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select cbo_t2.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from cbo_t1 as cbo_t2  where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1 where cbo_t1.c_int >= 0 and y+c_int >= 0 or x <= 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+ 1	1	25.0
+ 1	1	25.0
+ 1 	1	25.0
+ 1 	1	25.0
+1 	1	25.0
+1 	1	25.0
+1	1	25.0
+1	1	25.0
+PREHOOK: query: select cbo_t1.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_t1.c_int >= 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t1.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_t1.c_int >= 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+PREHOOK: query: 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 cbo_t1 where cbo_t1.c_int >= 0) as cbo_t2 where cbo_t2.c_int >= 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: 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 cbo_t1 where cbo_t1.c_int >= 0) as cbo_t2 where cbo_t2.c_int >= 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+PREHOOK: query: select * from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_t1.c_int >= 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_t1.c_int >= 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+PREHOOK: query: select * from (select * from cbo_t1 as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select * from cbo_t1 as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+PREHOOK: query: select * from (select * from cbo_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
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select * from cbo_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
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+PREHOOK: query: select * from (select cbo_t2.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from cbo_t1 as cbo_t2  where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1 where cbo_t1.c_int >= 0 and y+c_int >= 0 or x <= 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select * from (select cbo_t2.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from cbo_t1 as cbo_t2  where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1 where cbo_t1.c_int >= 0 and y+c_int >= 0 or x <= 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+1	1	25.0
+ 1	1	25.0
+ 1	1	25.0
+ 1 	1	25.0
+ 1 	1	25.0
+1 	1	25.0
+1 	1	25.0
+1	1	25.0
+1	1	25.0
+PREHOOK: query: select cbo_t1.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_t1.c_int >= 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select cbo_t1.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_t1.c_int >= 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+PREHOOK: query: 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 cbo_t1 where cbo_t1.c_int >= 0) as cbo_t2 where cbo_t2.c_int >= 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: 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 cbo_t1 where cbo_t1.c_int >= 0) as cbo_t2 where cbo_t2.c_int >= 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+2.0	1	25.0
+PREHOOK: query: -- 13. null expr in select list
+select null from cbo_t3
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: -- 13. null expr in select list
+select null from cbo_t3
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+PREHOOK: query: -- 14. unary operator
+select key from cbo_t1 where c_int = -6  or c_int = +6
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- 14. unary operator
+select key from cbo_t1 where c_int = -6  or c_int = +6
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+PREHOOK: query: -- 15. query referencing only partition columns
+select count(cbo_t1.dt) from cbo_t1 join cbo_t2 on cbo_t1.dt  = cbo_t2.dt  where cbo_t1.dt = '2014'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- 15. query referencing only partition columns
+select count(cbo_t1.dt) from cbo_t1 join cbo_t2 on cbo_t1.dt  = cbo_t2.dt  where cbo_t1.dt = '2014'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+400

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_stats.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_stats.q.out b/ql/src/test/results/clientpositive/cbo_rp_stats.q.out
new file mode 100644
index 0000000..554a8f0
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_stats.q.out
@@ -0,0 +1,14 @@
+PREHOOK: query: -- 20. Test get stats with empty partition list
+select cbo_t1.value from cbo_t1 join cbo_t2 on cbo_t1.key = cbo_t2.key where cbo_t1.dt = '10' and cbo_t1.c_boolean = true
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- 20. Test get stats with empty partition list
+select cbo_t1.value from cbo_t1 join cbo_t2 on cbo_t1.key = cbo_t2.key where cbo_t1.dt = '10' and cbo_t1.c_boolean = true
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_subq_exists.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_subq_exists.q.out b/ql/src/test/results/clientpositive/cbo_rp_subq_exists.q.out
new file mode 100644
index 0000000..50bfbe2
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_subq_exists.q.out
@@ -0,0 +1,297 @@
+PREHOOK: query: -- 18. SubQueries Not Exists
+-- distinct, corr
+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: default@src_cbo
+#### A masked pattern was here ####
+POSTHOOK: query: -- 18. SubQueries Not Exists
+-- distinct, corr
+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: default@src_cbo
+#### A masked pattern was here ####
+0	val_0
+0	val_0
+0	val_0
+10	val_10
+100	val_100
+100	val_100
+103	val_103
+103	val_103
+104	val_104
+104	val_104
+105	val_105
+11	val_11
+111	val_111
+113	val_113
+113	val_113
+114	val_114
+116	val_116
+118	val_118
+118	val_118
+119	val_119
+119	val_119
+119	val_119
+12	val_12
+12	val_12
+120	val_120
+120	val_120
+125	val_125
+125	val_125
+126	val_126
+128	val_128
+128	val_128
+128	val_128
+129	val_129
+129	val_129
+131	val_131
+133	val_133
+134	val_134
+134	val_134
+136	val_136
+137	val_137
+137	val_137
+138	val_138
+138	val_138
+138	val_138
+138	val_138
+143	val_143
+145	val_145
+146	val_146
+146	val_146
+149	val_149
+149	val_149
+15	val_15
+15	val_15
+150	val_150
+152	val_152
+152	val_152
+153	val_153
+155	val_155
+156	val_156
+157	val_157
+158	val_158
+160	val_160
+162	val_162
+163	val_163
+164	val_164
+164	val_164
+165	val_165
+165	val_165
+166	val_166
+167	val_167
+167	val_167
+167	val_167
+168	val_168
+169	val_169
+169	val_169
+169	val_169
+169	val_169
+17	val_17
+170	val_170
+172	val_172
+172	val_172
+174	val_174
+174	val_174
+175	val_175
+175	val_175
+176	val_176
+176	val_176
+177	val_177
+178	val_178
+179	val_179
+179	val_179
+18	val_18
+18	val_18
+180	val_180
+181	val_181
+183	val_183
+186	val_186
+187	val_187
+187	val_187
+187	val_187
+189	val_189
+19	val_19
+190	val_190
+191	val_191
+191	val_191
+192	val_192
+193	val_193
+193	val_193
+193	val_193
+194	val_194
+195	val_195
+195	val_195
+196	val_196
+197	val_197
+197	val_197
+199	val_199
+199	val_199
+199	val_199
+2	val_2
+PREHOOK: query: -- no agg, corr, having
+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: default@src_cbo
+#### A masked pattern was here ####
+POSTHOOK: query: -- no agg, corr, having
+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: default@src_cbo
+#### A masked pattern was here ####
+0	val_0
+10	val_10
+100	val_100
+103	val_103
+104	val_104
+105	val_105
+11	val_11
+111	val_111
+113	val_113
+114	val_114
+116	val_116
+118	val_118
+119	val_119
+12	val_12
+PREHOOK: query: -- 19. SubQueries Exists
+-- view test
+create view cv1 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: default@src_cbo
+PREHOOK: Output: database:default
+PREHOOK: Output: default@cv1
+POSTHOOK: query: -- 19. SubQueries Exists
+-- view test
+create view cv1 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: default@src_cbo
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@cv1
+PREHOOK: query: select * from cv1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cv1
+PREHOOK: Input: default@src_cbo
+#### A masked pattern was here ####
+POSTHOOK: query: select * from cv1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cv1
+POSTHOOK: Input: default@src_cbo
+#### A masked pattern was here ####
+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: -- sq in from
+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: default@src_cbo
+#### A masked pattern was here ####
+POSTHOOK: query: -- sq in from
+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: default@src_cbo
+#### A masked pattern was here ####
+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: -- sq in from, having
+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: default@src_cbo
+#### A masked pattern was here ####
+POSTHOOK: query: -- sq in from, having
+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: default@src_cbo
+#### A masked pattern was here ####
+90	3
+92	1
+95	2
+96	1
+97	2
+98	2

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_subq_in.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_subq_in.q.out b/ql/src/test/results/clientpositive/cbo_rp_subq_in.q.out
new file mode 100644
index 0000000..f6bfad2
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_subq_in.q.out
@@ -0,0 +1,151 @@
+PREHOOK: query: -- 17. SubQueries In
+-- non agg, non corr
+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: default@src_cbo
+#### A masked pattern was here ####
+POSTHOOK: query: -- 17. SubQueries In
+-- non agg, non corr
+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: default@src_cbo
+#### A masked pattern was here ####
+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: -- agg, corr
+-- add back once rank issue fixed for cbo
+
+-- distinct, corr
+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: default@src_cbo
+#### A masked pattern was here ####
+POSTHOOK: query: -- agg, corr
+-- add back once rank issue fixed for cbo
+
+-- distinct, corr
+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: default@src_cbo
+#### A masked pattern was here ####
+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: -- non agg, corr, with join in Parent Query
+select p.p_partkey, li.l_suppkey 
+from (select distinct l_partkey as p_partkey from lineitem) p join lineitem li on p.p_partkey = li.l_partkey 
+where li.l_linenumber = 1 and
+ li.l_orderkey in (select l_orderkey from lineitem where l_shipmode = 'AIR' and l_linenumber = li.l_linenumber)
+ order by p.p_partkey
+PREHOOK: type: QUERY
+PREHOOK: Input: default@lineitem
+#### A masked pattern was here ####
+POSTHOOK: query: -- non agg, corr, with join in Parent Query
+select p.p_partkey, li.l_suppkey 
+from (select distinct l_partkey as p_partkey from lineitem) p join lineitem li on p.p_partkey = li.l_partkey 
+where li.l_linenumber = 1 and
+ li.l_orderkey in (select l_orderkey from lineitem where l_shipmode = 'AIR' and l_linenumber = li.l_linenumber)
+ order by p.p_partkey
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@lineitem
+#### A masked pattern was here ####
+4297	1798
+108570	8571
+PREHOOK: query: -- where and having
+-- Plan is:
+-- Stage 1: b semijoin sq1:src_cbo (subquery in where)
+-- Stage 2: group by Stage 1 o/p
+-- Stage 5: group by on sq2:src_cbo (subquery in having)
+-- Stage 6: Stage 2 o/p semijoin Stage 5
+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: default@src_cbo
+#### A masked pattern was here ####
+POSTHOOK: query: -- where and having
+-- Plan is:
+-- Stage 1: b semijoin sq1:src_cbo (subquery in where)
+-- Stage 2: group by Stage 1 o/p
+-- Stage 5: group by on sq2:src_cbo (subquery in having)
+-- Stage 6: Stage 2 o/p semijoin Stage 5
+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: default@src_cbo
+#### A masked pattern was here ####
+80	val_80	1
+82	val_82	1
+83	val_83	2
+84	val_84	2
+85	val_85	1
+86	val_86	1
+87	val_87	1
+9	val_9	1
+90	val_90	3
+92	val_92	1
+95	val_95	2
+96	val_96	1
+97	val_97	2
+98	val_98	2
+PREHOOK: query: -- non agg, non corr, windowing
+select p_mfgr, p_name, avg(p_size) 
+from part 
+group by p_mfgr, p_name
+having p_name in 
+  (select first_value(p_name) over(partition by p_mfgr order by p_size) from part) order by p_mfgr
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part
+#### A masked pattern was here ####
+POSTHOOK: query: -- non agg, non corr, windowing
+select p_mfgr, p_name, avg(p_size) 
+from part 
+group by p_mfgr, p_name
+having p_name in 
+  (select first_value(p_name) over(partition by p_mfgr order by p_size) from part) order by p_mfgr
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part
+#### A masked pattern was here ####
+Manufacturer#1	almond antique burnished rose metallic	2.0
+Manufacturer#2	almond aquamarine midnight light salmon	2.0
+Manufacturer#3	almond antique misty red olive	1.0
+Manufacturer#4	almond aquamarine yellow dodger mint	7.0
+Manufacturer#5	almond antique sky peru orange	2.0

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_subq_not_in.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_subq_not_in.q.out b/ql/src/test/results/clientpositive/cbo_rp_subq_not_in.q.out
new file mode 100644
index 0000000..c7274f7
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_subq_not_in.q.out
@@ -0,0 +1,365 @@
+PREHOOK: query: -- 16. SubQueries Not In
+-- non agg, non corr
+select * 
+from src_cbo 
+where src_cbo.key not in  
+  ( select key  from src_cbo s1 
+    where s1.key > '2'
+  ) order by key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src_cbo
+#### A masked pattern was here ####
+POSTHOOK: query: -- 16. SubQueries Not In
+-- non agg, non corr
+select * 
+from src_cbo 
+where src_cbo.key not in  
+  ( select key  from src_cbo s1 
+    where s1.key > '2'
+  ) order by key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src_cbo
+#### A masked pattern was here ####
+0	val_0
+0	val_0
+0	val_0
+10	val_10
+100	val_100
+100	val_100
+103	val_103
+103	val_103
+104	val_104
+104	val_104
+105	val_105
+11	val_11
+111	val_111
+113	val_113
+113	val_113
+114	val_114
+116	val_116
+118	val_118
+118	val_118
+119	val_119
+119	val_119
+119	val_119
+12	val_12
+12	val_12
+120	val_120
+120	val_120
+125	val_125
+125	val_125
+126	val_126
+128	val_128
+128	val_128
+128	val_128
+129	val_129
+129	val_129
+131	val_131
+133	val_133
+134	val_134
+134	val_134
+136	val_136
+137	val_137
+137	val_137
+138	val_138
+138	val_138
+138	val_138
+138	val_138
+143	val_143
+145	val_145
+146	val_146
+146	val_146
+149	val_149
+149	val_149
+15	val_15
+15	val_15
+150	val_150
+152	val_152
+152	val_152
+153	val_153
+155	val_155
+156	val_156
+157	val_157
+158	val_158
+160	val_160
+162	val_162
+163	val_163
+164	val_164
+164	val_164
+165	val_165
+165	val_165
+166	val_166
+167	val_167
+167	val_167
+167	val_167
+168	val_168
+169	val_169
+169	val_169
+169	val_169
+169	val_169
+17	val_17
+170	val_170
+172	val_172
+172	val_172
+174	val_174
+174	val_174
+175	val_175
+175	val_175
+176	val_176
+176	val_176
+177	val_177
+178	val_178
+179	val_179
+179	val_179
+18	val_18
+18	val_18
+180	val_180
+181	val_181
+183	val_183
+186	val_186
+187	val_187
+187	val_187
+187	val_187
+189	val_189
+19	val_19
+190	val_190
+191	val_191
+191	val_191
+192	val_192
+193	val_193
+193	val_193
+193	val_193
+194	val_194
+195	val_195
+195	val_195
+196	val_196
+197	val_197
+197	val_197
+199	val_199
+199	val_199
+199	val_199
+2	val_2
+PREHOOK: query: -- non agg, corr
+select p_mfgr, b.p_name, p_size 
+from part b 
+where b.p_name not in 
+  (select p_name 
+  from (select p_mfgr, p_name, p_size as r from part) a 
+  where r < 10 and b.p_mfgr = a.p_mfgr 
+  ) order by p_mfgr,p_size
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part
+#### A masked pattern was here ####
+POSTHOOK: query: -- non agg, corr
+select p_mfgr, b.p_name, p_size 
+from part b 
+where b.p_name not in 
+  (select p_name 
+  from (select p_mfgr, p_name, p_size as r from part) a 
+  where r < 10 and b.p_mfgr = a.p_mfgr 
+  ) order by p_mfgr,p_size
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part
+#### A masked pattern was here ####
+Manufacturer#1	almond aquamarine burnished black steel	28
+Manufacturer#1	almond antique chartreuse lavender yellow	34
+Manufacturer#1	almond aquamarine pink moccasin thistle	42
+Manufacturer#2	almond antique violet chocolate turquoise	14
+Manufacturer#2	almond aquamarine sandy cyan gainsboro	18
+Manufacturer#2	almond aquamarine rose maroon antique	25
+Manufacturer#2	almond antique violet turquoise frosted	40
+Manufacturer#3	almond antique forest lavender goldenrod	14
+Manufacturer#3	almond antique chartreuse khaki white	17
+Manufacturer#3	almond antique metallic orange dim	19
+Manufacturer#3	almond antique olive coral navajo	45
+Manufacturer#4	almond antique gainsboro frosted violet	10
+Manufacturer#4	almond azure aquamarine papaya violet	12
+Manufacturer#4	almond aquamarine floral ivory bisque	27
+Manufacturer#4	almond antique violet mint lemon	39
+Manufacturer#5	almond azure blanched chiffon midnight	23
+Manufacturer#5	almond antique blue firebrick mint	31
+Manufacturer#5	almond aquamarine dodger light gainsboro	46
+PREHOOK: query: -- agg, non corr
+select p_name, p_size 
+from 
+part where part.p_size not in 
+  (select avg(p_size) 
+  from (select p_size from part) a 
+  where p_size < 10
+  ) order by p_name
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part
+#### A masked pattern was here ####
+POSTHOOK: query: -- agg, non corr
+select p_name, p_size 
+from 
+part where part.p_size not in 
+  (select avg(p_size) 
+  from (select p_size from part) a 
+  where p_size < 10
+  ) order by p_name
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part
+#### A masked pattern was here ####
+almond antique blue firebrick mint	31
+almond antique burnished rose metallic	2
+almond antique burnished rose metallic	2
+almond antique chartreuse khaki white	17
+almond antique chartreuse lavender yellow	34
+almond antique forest lavender goldenrod	14
+almond antique gainsboro frosted violet	10
+almond antique medium spring khaki	6
+almond antique metallic orange dim	19
+almond antique misty red olive	1
+almond antique olive coral navajo	45
+almond antique salmon chartreuse burlywood	6
+almond antique sky peru orange	2
+almond antique violet chocolate turquoise	14
+almond antique violet mint lemon	39
+almond antique violet turquoise frosted	40
+almond aquamarine burnished black steel	28
+almond aquamarine dodger light gainsboro	46
+almond aquamarine floral ivory bisque	27
+almond aquamarine midnight light salmon	2
+almond aquamarine pink moccasin thistle	42
+almond aquamarine rose maroon antique	25
+almond aquamarine sandy cyan gainsboro	18
+almond aquamarine yellow dodger mint	7
+almond azure aquamarine papaya violet	12
+almond azure blanched chiffon midnight	23
+PREHOOK: query: -- agg, corr
+select p_mfgr, p_name, p_size 
+from part b where b.p_size not in 
+  (select min(p_size) 
+  from (select p_mfgr, p_size from part) a 
+  where p_size < 10 and b.p_mfgr = a.p_mfgr
+  ) order by  p_name
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part
+#### A masked pattern was here ####
+POSTHOOK: query: -- agg, corr
+select p_mfgr, p_name, p_size 
+from part b where b.p_size not in 
+  (select min(p_size) 
+  from (select p_mfgr, p_size from part) a 
+  where p_size < 10 and b.p_mfgr = a.p_mfgr
+  ) order by  p_name
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part
+#### A masked pattern was here ####
+Manufacturer#5	almond antique blue firebrick mint	31
+Manufacturer#3	almond antique chartreuse khaki white	17
+Manufacturer#1	almond antique chartreuse lavender yellow	34
+Manufacturer#3	almond antique forest lavender goldenrod	14
+Manufacturer#4	almond antique gainsboro frosted violet	10
+Manufacturer#5	almond antique medium spring khaki	6
+Manufacturer#3	almond antique metallic orange dim	19
+Manufacturer#3	almond antique olive coral navajo	45
+Manufacturer#1	almond antique salmon chartreuse burlywood	6
+Manufacturer#2	almond antique violet chocolate turquoise	14
+Manufacturer#4	almond antique violet mint lemon	39
+Manufacturer#2	almond antique violet turquoise frosted	40
+Manufacturer#1	almond aquamarine burnished black steel	28
+Manufacturer#5	almond aquamarine dodger light gainsboro	46
+Manufacturer#4	almond aquamarine floral ivory bisque	27
+Manufacturer#1	almond aquamarine pink moccasin thistle	42
+Manufacturer#2	almond aquamarine rose maroon antique	25
+Manufacturer#2	almond aquamarine sandy cyan gainsboro	18
+Manufacturer#4	almond azure aquamarine papaya violet	12
+Manufacturer#5	almond azure blanched chiffon midnight	23
+PREHOOK: query: -- non agg, non corr, Group By in Parent Query
+select li.l_partkey, count(*) 
+from lineitem li 
+where li.l_linenumber = 1 and 
+  li.l_orderkey not in (select l_orderkey from lineitem where l_shipmode = 'AIR') 
+group by li.l_partkey order by li.l_partkey
+PREHOOK: type: QUERY
+PREHOOK: Input: default@lineitem
+#### A masked pattern was here ####
+POSTHOOK: query: -- non agg, non corr, Group By in Parent Query
+select li.l_partkey, count(*) 
+from lineitem li 
+where li.l_linenumber = 1 and 
+  li.l_orderkey not in (select l_orderkey from lineitem where l_shipmode = 'AIR') 
+group by li.l_partkey order by li.l_partkey
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@lineitem
+#### A masked pattern was here ####
+450	1
+7068	1
+21636	1
+22630	1
+59694	1
+61931	1
+85951	1
+88035	1
+88362	1
+106170	1
+119477	1
+119767	1
+123076	1
+139636	1
+175839	1
+182052	1
+PREHOOK: query: -- add null check test from sq_notin.q once HIVE-7721 resolved.
+
+-- non agg, corr, having
+select b.p_mfgr, min(p_retailprice) 
+from part b 
+group by b.p_mfgr
+having b.p_mfgr not in 
+  (select p_mfgr 
+  from (select p_mfgr, min(p_retailprice) l, max(p_retailprice) r, avg(p_retailprice) a from part group by p_mfgr) a 
+  where min(p_retailprice) = l and r - l > 600
+  )
+  order by b.p_mfgr
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part
+#### A masked pattern was here ####
+POSTHOOK: query: -- add null check test from sq_notin.q once HIVE-7721 resolved.
+
+-- non agg, corr, having
+select b.p_mfgr, min(p_retailprice) 
+from part b 
+group by b.p_mfgr
+having b.p_mfgr not in 
+  (select p_mfgr 
+  from (select p_mfgr, min(p_retailprice) l, max(p_retailprice) r, avg(p_retailprice) a from part group by p_mfgr) a 
+  where min(p_retailprice) = l and r - l > 600
+  )
+  order by b.p_mfgr
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part
+#### A masked pattern was here ####
+Manufacturer#1	1173.15
+Manufacturer#2	1690.68
+PREHOOK: query: -- agg, non corr, having
+select b.p_mfgr, min(p_retailprice) 
+from part b 
+group by b.p_mfgr
+having b.p_mfgr not in 
+  (select p_mfgr 
+  from part a
+  group by p_mfgr
+  having max(p_retailprice) - min(p_retailprice) > 600
+  )
+  order by b.p_mfgr
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part
+#### A masked pattern was here ####
+POSTHOOK: query: -- agg, non corr, having
+select b.p_mfgr, min(p_retailprice) 
+from part b 
+group by b.p_mfgr
+having b.p_mfgr not in 
+  (select p_mfgr 
+  from part a
+  group by p_mfgr
+  having max(p_retailprice) - min(p_retailprice) > 600
+  )
+  order by b.p_mfgr
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part
+#### A masked pattern was here ####
+Manufacturer#1	1173.15
+Manufacturer#2	1690.68

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_udf_udaf.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_udf_udaf.q.out b/ql/src/test/results/clientpositive/cbo_rp_udf_udaf.q.out
new file mode 100644
index 0000000..156d02f
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_udf_udaf.q.out
@@ -0,0 +1,125 @@
+PREHOOK: query: -- 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 cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- 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 cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+20	18	18	1.0	1	1
+PREHOOK: query: 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 cbo_t1 group by c_int order by a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: 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 cbo_t1 group by c_int order by a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+18	18	18	1.0	1	1	2	36
+2	0	NULL	NULL	NULL	NULL	3	6
+PREHOOK: query: 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 cbo_t1) cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: 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 cbo_t1) cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+20	1	18	1.0	1	1
+PREHOOK: query: 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 cbo_t1 group by c_int) cbo_t1 order by a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: 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 cbo_t1 group by c_int) cbo_t1 order by a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+18	1	18	1.0	1	1	2	36
+2	0	NULL	NULL	NULL	NULL	3	6
+PREHOOK: query: 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 cbo_t1) cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: 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 cbo_t1) cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	20	1	18
+PREHOOK: query: 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 cbo_t1) cbo_t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: 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 cbo_t1) cbo_t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+1	20	1	1
+PREHOOK: query: select key,count(c_int) as a, avg(c_float) from cbo_t1 group by key order by a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select key,count(c_int) as a, avg(c_float) from cbo_t1 group by key order by a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+ 1	2	1.0
+ 1 	2	1.0
+1	12	1.0
+1 	2	1.0
+NULL	0	NULL
+PREHOOK: query: select count(distinct c_int) as a, avg(c_float) from cbo_t1 group by c_float order by a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select count(distinct c_int) as a, avg(c_float) from cbo_t1 group by c_float order by a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+0	NULL
+1	1.0
+PREHOOK: query: select count(distinct c_int) as a, avg(c_float) from cbo_t1 group by c_int order by a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select count(distinct c_int) as a, avg(c_float) from cbo_t1 group by c_int order by a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+0	NULL
+1	1.0
+PREHOOK: query: select count(distinct c_int) as a, avg(c_float) from cbo_t1 group by c_float, c_int order by a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: select count(distinct c_int) as a, avg(c_float) from cbo_t1 group by c_float, c_int order by a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+0	NULL
+1	1.0

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_union.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_union.q.out b/ql/src/test/results/clientpositive/cbo_rp_union.q.out
new file mode 100644
index 0000000..fb86d22
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_union.q.out
@@ -0,0 +1,920 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+
+-- 11. Union All
+select * from (select * from cbo_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
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+
+-- 11. Union All
+select * from (select * from cbo_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
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1	 1	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+ 1 	 1 	1	1.0	true	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	false	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1	1	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+1 	1 	1	1.0	true	2014
+2	2	2	2.0	true	2014
+2	2	2	2.0	true	2014
+2	2	2	2.0	true	2014
+2	2	2	2.0	true	2014
+2	2	2	2.0	true	2014
+NULL	NULL	NULL	NULL	NULL	2014
+NULL	NULL	NULL	NULL	NULL	2014
+NULL	NULL	NULL	NULL	NULL	2014
+NULL	NULL	NULL	NULL	NULL	2014
+PREHOOK: query: select key from (select key, c_int from (select * from cbo_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
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select key from (select key, c_int from (select * from cbo_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
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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 
+2
+2
+2
+2
+2
+2
+2
+2
+3
+3
+3
+PREHOOK: query: select r2.key from (select key, c_int from (select key, c_int from cbo_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 cbo_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
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+POSTHOOK: query: select r2.key from (select key, c_int from (select key, c_int from cbo_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 cbo_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
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+1 
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+2
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3
+3


[4/4] hive git commit: HIVE-11391: CBO (Calcite Return Path): Add CBO tests with return path on (Jesus Camacho Rodriguez, reviewed by Pengcheng Xiong)

Posted by jc...@apache.org.
HIVE-11391: CBO (Calcite Return Path): Add CBO tests with return path on (Jesus Camacho Rodriguez, reviewed by Pengcheng Xiong)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/7e4f3bbf
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/7e4f3bbf
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/7e4f3bbf

Branch: refs/heads/master
Commit: 7e4f3bbff027224a2d5436b9a590580438a87419
Parents: 6441a87
Author: Jesus Camacho Rodriguez <jc...@apache.org>
Authored: Wed Jul 29 17:31:13 2015 +0200
Committer: Jesus Camacho Rodriguez <jc...@apache.org>
Committed: Fri Aug 7 14:11:39 2015 +0300

----------------------------------------------------------------------
 ql/src/test/queries/clientpositive/cbo_rp_gby.q |    24 +
 .../queries/clientpositive/cbo_rp_gby_empty.q   |    30 +
 .../test/queries/clientpositive/cbo_rp_join.q   |    65 +
 .../test/queries/clientpositive/cbo_rp_limit.q  |    16 +
 .../queries/clientpositive/cbo_rp_semijoin.q    |    17 +
 .../clientpositive/cbo_rp_simple_select.q       |    56 +
 .../test/queries/clientpositive/cbo_rp_stats.q  |    10 +
 .../queries/clientpositive/cbo_rp_subq_exists.q |    67 +
 .../queries/clientpositive/cbo_rp_subq_in.q     |    56 +
 .../queries/clientpositive/cbo_rp_subq_not_in.q |    81 +
 .../queries/clientpositive/cbo_rp_udf_udaf.q    |    20 +
 .../test/queries/clientpositive/cbo_rp_union.q  |    14 +
 .../test/queries/clientpositive/cbo_rp_views.q  |    46 +
 .../queries/clientpositive/cbo_rp_windowing.q   |    21 +
 .../results/clientpositive/cbo_rp_gby.q.out     |   124 +
 .../clientpositive/cbo_rp_gby_empty.q.out       |    77 +
 .../results/clientpositive/cbo_rp_join.q.out    | 15028 +++++++++++++++++
 .../results/clientpositive/cbo_rp_limit.q.out   |    90 +
 .../clientpositive/cbo_rp_semijoin.q.out        |   440 +
 .../clientpositive/cbo_rp_simple_select.q.out   |   755 +
 .../results/clientpositive/cbo_rp_stats.q.out   |    14 +
 .../clientpositive/cbo_rp_subq_exists.q.out     |   297 +
 .../results/clientpositive/cbo_rp_subq_in.q.out |   151 +
 .../clientpositive/cbo_rp_subq_not_in.q.out     |   365 +
 .../clientpositive/cbo_rp_udf_udaf.q.out        |   125 +
 .../results/clientpositive/cbo_rp_union.q.out   |   920 +
 .../results/clientpositive/cbo_rp_views.q.out   |   237 +
 .../clientpositive/cbo_rp_windowing.q.out       |   293 +
 28 files changed, 19439 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_gby.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_gby.q b/ql/src/test/queries/clientpositive/cbo_rp_gby.q
new file mode 100644
index 0000000..fe2c96e
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_gby.q
@@ -0,0 +1,24 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+set hive.exec.check.crossproducts=false;
+
+set hive.stats.fetch.column.stats=true;
+set hive.auto.convert.join=false;
+
+-- SORT_QUERY_RESULTS
+
+-- 6. Test Select + TS + Join + Fil + GB + GB Having
+select key, (c_int+1)+2 as x, sum(c_int) from cbo_t1 group by c_float, cbo_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 cbo_t1 group by c_float, cbo_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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0) group by c_float, cbo_t1.c_int, key order by a) cbo_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_t2 on cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c order by cbo_t3.c_int+c desc, c;
+
+select cbo_t3.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_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) cbo_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_t2.c_int > 0 or cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key  having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) cbo_t2 on cbo_t1.a=p left outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c  having cbo_t3.c_int > 0 and (c_int >=1 or c >= 1) and (c_int + c) >= 0  order by cbo_t3.c_int % c asc, cbo_t3.c_int desc;
+
+select cbo_t3.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_t1.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b+c, a desc) cbo_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_int > 0 or cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) cbo_t2 on cbo_t1.a=p right outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 2) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c;
+
+select cbo_t3.c_int, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_t1.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by c+a desc) cbo_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 > 0 or cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by p+q desc, r asc) cbo_t2 on cbo_t1.a=p full outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c having cbo_t3.c_int > 0 and (c_int >=1 or c >= 1) and (c_int + c) >= 0 order by cbo_t3.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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_t1.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) cbo_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 having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) cbo_t2 on cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_gby_empty.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_gby_empty.q b/ql/src/test/queries/clientpositive/cbo_rp_gby_empty.q
new file mode 100644
index 0000000..375129a
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_gby_empty.q
@@ -0,0 +1,30 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+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 src) unionsrc;
+
+select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src) unionsrc;
+
+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;
+        
+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;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_join.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_join.q b/ql/src/test/queries/clientpositive/cbo_rp_join.q
new file mode 100644
index 0000000..367e67f
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_join.q
@@ -0,0 +1,65 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+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 cbo_t1.c_int, cbo_t2.c_int from cbo_t1 join             cbo_t2 on cbo_t1.key=cbo_t2.key;
+select cbo_t1.key from cbo_t1 join cbo_t3;
+select cbo_t1.key from cbo_t1 join cbo_t3 where cbo_t1.key=cbo_t3.key and cbo_t1.key >= 1;
+select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 left outer join  cbo_t2 on cbo_t1.key=cbo_t2.key;
+select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 right outer join cbo_t2 on cbo_t1.key=cbo_t2.key;
+select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 full outer join  cbo_t2 on cbo_t1.key=cbo_t2.key;
+
+select b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_t1.a=p join cbo_t3 on cbo_t1.a=key;
+select key, cbo_t1.c_int, cbo_t2.p, q from cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_t1.key=p join (select key as a, c_int as b, cbo_t3.c_float as c from cbo_t3)cbo_t3 on cbo_t1.key=a;
+select a, cbo_t1.b, key, cbo_t2.c_int, cbo_t3.p from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_t1 join cbo_t2  on cbo_t1.a=key join (select key as p, c_int as q, cbo_t3.c_float as r from cbo_t3)cbo_t3 on cbo_t1.a=cbo_t3.p;
+select b, cbo_t1.c, cbo_t2.c_int, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_t1 join cbo_t2 on cbo_t1.a=cbo_t2.key join cbo_t3 on cbo_t1.a=cbo_t3.key;
+select cbo_t3.c_int, b, cbo_t2.c_int, cbo_t1.c from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_t1 join cbo_t2 on cbo_t1.a=cbo_t2.key join cbo_t3 on cbo_t1.a=cbo_t3.key;
+
+select b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key;
+select key, cbo_t1.c_int, cbo_t2.p, q from cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_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 cbo_t1.key=a;
+
+select b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key;
+select key, cbo_t1.c_int, cbo_t2.p, q from cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_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 cbo_t1.key=a;
+
+select b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key;
+select key, cbo_t1.c_int, cbo_t2.p, q from cbo_t1 join (select cbo_t2.key as p, cbo_t2.c_int as q, c_float as r from cbo_t2) cbo_t2 on cbo_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 cbo_t1.key=a;
+
+-- 5. Test Select + Join + FIL + TS
+select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 join cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + cbo_t2.c_int == 2) and (cbo_t1.c_int > 0 or cbo_t2.c_float >= 0);
+select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 left outer join  cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + cbo_t2.c_int == 2) and (cbo_t1.c_int > 0 or cbo_t2.c_float >= 0);
+select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 right outer join cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + cbo_t2.c_int == 2) and (cbo_t1.c_int > 0 or cbo_t2.c_float >= 0);
+select cbo_t1.c_int, cbo_t2.c_int from cbo_t1 full outer join  cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + cbo_t2.c_int == 2) and (cbo_t1.c_int > 0 or cbo_t2.c_float >= 0);
+
+select b, cbo_t1.c, cbo_t2.p, q, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or cbo_t2.q >= 0);
+
+select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0);
+
+select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0);
+
+select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0);
+
+select * from (select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0)) R where  (q + 1 = 2) and (R.b > 0 or c_int >= 0);
+
+select * from (select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p left outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0)) R where  (q + 1 = 2) and (R.b > 0 or c_int >= 0);
+
+select * from (select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p right outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0)) R where  (q + 1 = 2) and (R.b > 0 or c_int >= 0);
+
+select * from (select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p full outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0)) R where  (q + 1 = 2) and (R.b > 0 or c_int >= 0);
+
+select * from (select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p right outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0)) R where  (q + 1 = 2) and (R.b > 0 or c_int >= 0);
+
+select * from (select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p left outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0)) R where  (q + 1 = 2) and (R.b > 0 or c_int >= 0);
+
+select * from (select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p full outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0)) R where  (q + 1 = 2) and (R.b > 0 or c_int >= 0);
+
+select * from (select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p full outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0)) R where  (q + 1 = 2) and (R.b > 0 or c_int >= 0);
+
+select * from (select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p left outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0)) R where  (q + 1 = 2) and (R.b > 0 or c_int >= 0);
+
+select * from (select q, b, cbo_t2.p, cbo_t1.c, cbo_t3.c_int from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p right outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q == 2) and (b > 0 or c_int >= 0)) R where  (q + 1 = 2) and (R.b > 0 or c_int >= 0);
+

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_limit.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_limit.q b/ql/src/test/queries/clientpositive/cbo_rp_limit.q
new file mode 100644
index 0000000..24f8b5b
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_limit.q
@@ -0,0 +1,16 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+set hive.exec.check.crossproducts=false;
+
+set hive.stats.fetch.column.stats=true;
+set hive.auto.convert.join=false;
+
+-- 7. Test Select + TS + Join + Fil + GB + GB Having + Limit
+select key, (c_int+1)+2 as x, sum(c_int) from cbo_t1 group by c_float, cbo_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 cbo_t1 group by c_float, cbo_t1.c_int, key) R group by y, x order by x,y limit 1;
+select key from(select key from (select key from cbo_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 cbo_t1 order by c_int limit 5)cbo_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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0) group by c_float, cbo_t1.c_int, key order by a limit 5) cbo_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 limit 5) cbo_t2 on cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c order by cbo_t3.c_int+c desc, c 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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_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) cbo_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_t2.c_int > 0 or cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key  having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 limit 5) cbo_t2 on cbo_t1.a=p left outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c  having cbo_t3.c_int > 0 and (c_int >=1 or c >= 1) and (c_int + c) >= 0  order by cbo_t3.c_int % c asc, cbo_t3.c_int, c desc limit 5;

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_semijoin.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_semijoin.q b/ql/src/test/queries/clientpositive/cbo_rp_semijoin.q
new file mode 100644
index 0000000..4b376d9
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_semijoin.q
@@ -0,0 +1,17 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+set hive.exec.check.crossproducts=false;
+
+set hive.stats.fetch.column.stats=true;
+set hive.auto.convert.join=false;
+
+-- 12. SemiJoin
+select cbo_t1.c_int           from cbo_t1 left semi join   cbo_t2 on cbo_t1.key=cbo_t2.key;
+select cbo_t1.c_int           from cbo_t1 left semi join   cbo_t2 on cbo_t1.key=cbo_t2.key where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0);
+select * from (select c, b, a from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p left semi join cbo_t3 on cbo_t1.a=key where (b + 1 == 2) and (b > 0 or c >= 0)) R where  (b + 1 = 2) and (R.b > 0 or c >= 0);
+select * from (select cbo_t3.c_int, cbo_t1.c, b from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 = 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p left outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t3.c_int  == 2) and (b > 0 or c_int >= 0)) R where  (R.c_int + 1 = 2) and (R.b > 0 or c_int >= 0);
+select * from (select c_int, b, cbo_t1.c from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p right outer join cbo_t3 on cbo_t1.a=key where (b + 1 == 2) and (b > 0 or c_int >= 0)) R where  (c + 1 = 2) and (R.b > 0 or c_int >= 0);
+select * from (select c_int, b, cbo_t1.c from (select key as a, c_int as b, cbo_t1.c_float as c from cbo_t1  where (cbo_t1.c_int + 1 == 2) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)) cbo_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 cbo_t1.a=p full outer join cbo_t3 on cbo_t1.a=key where (b + 1 == 2) and (b > 0 or c_int >= 0)) R where  (c + 1 = 2) and (R.b > 0 or c_int >= 0);
+select a, c, count(*) from (select key as a, c_int+1 as b, sum(c_int) as c from cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_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) cbo_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 cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by q+r/10 desc, p) cbo_t2 on cbo_t1.a=p left semi join cbo_t3 on cbo_t1.a=key where (b + 1  >= 0) and (b > 0 or a >= 0) group by a, c  having a > 0 and (a >=1 or c >= 1) and (a + c) >= 0 order by c, a;
+select a, c, count(*)  from (select key as a, c_int+1 as b, sum(c_int) as c from cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_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) cbo_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 cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by q+r/10 desc, p limit 5) cbo_t2 on cbo_t1.a=p left semi join cbo_t3 on cbo_t1.a=key where (b + 1  >= 0) and (b > 0 or a >= 0) group by a, c  having a > 0 and (a >=1 or c >= 1) and (a + c) >= 0 order by c, a;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_simple_select.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_simple_select.q b/ql/src/test/queries/clientpositive/cbo_rp_simple_select.q
new file mode 100644
index 0000000..a2ac678
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_simple_select.q
@@ -0,0 +1,56 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+set hive.exec.check.crossproducts=false;
+
+set hive.stats.fetch.column.stats=true;
+set hive.auto.convert.join=false;
+
+-- 1. Test Select + TS
+select * from cbo_t1;
+select * from cbo_t1 as cbo_t1;
+select * from cbo_t1 as cbo_t2;
+
+select cbo_t1.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from cbo_t1;
+select * from cbo_t1 where (((key=1) and (c_float=10)) and (c_int=20)); 
+
+-- 2. Test Select + TS + FIL
+select * from cbo_t1 where cbo_t1.c_int >= 0;
+select * from cbo_t1 as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
+select * from cbo_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 cbo_t1 as cbo_t2  where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
+
+-- 3 Test Select + Select + TS + FIL
+select * from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1;
+select * from (select * from cbo_t1 as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1;
+select * from (select * from cbo_t1 as cbo_t2 where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1;
+select * from (select cbo_t2.key as x, c_int as c_int, (((c_int+c_float)*10)+5) as y from cbo_t1 as cbo_t2  where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1;
+
+select * from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_t1.c_int >= 0;
+select * from (select * from cbo_t1 as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
+select * from (select * from cbo_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 cbo_t1 as cbo_t2  where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1 where cbo_t1.c_int >= 0 and y+c_int >= 0 or x <= 100;
+
+select cbo_t1.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_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 cbo_t1 where cbo_t1.c_int >= 0) as cbo_t2 where cbo_t2.c_int >= 0;
+
+
+
+select * from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_t1.c_int >= 0;
+select * from (select * from cbo_t1 as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1  where cbo_t1.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100;
+select * from (select * from cbo_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 cbo_t1 as cbo_t2  where cbo_t2.c_int >= 0 and c_float+c_int >= 0 or c_float <= 100) as cbo_t1 where cbo_t1.c_int >= 0 and y+c_int >= 0 or x <= 100;
+
+select cbo_t1.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_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 cbo_t1 where cbo_t1.c_int >= 0) as cbo_t2 where cbo_t2.c_int >= 0;
+
+
+
+-- 13. null expr in select list
+select null from cbo_t3;
+
+-- 14. unary operator
+select key from cbo_t1 where c_int = -6  or c_int = +6;
+
+-- 15. query referencing only partition columns
+select count(cbo_t1.dt) from cbo_t1 join cbo_t2 on cbo_t1.dt  = cbo_t2.dt  where cbo_t1.dt = '2014' ;

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_stats.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_stats.q b/ql/src/test/queries/clientpositive/cbo_rp_stats.q
new file mode 100644
index 0000000..f8cf329
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_stats.q
@@ -0,0 +1,10 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+set hive.exec.check.crossproducts=false;
+
+set hive.stats.fetch.column.stats=true;
+set hive.auto.convert.join=false;
+
+-- 20. Test get stats with empty partition list
+select cbo_t1.value from cbo_t1 join cbo_t2 on cbo_t1.key = cbo_t2.key where cbo_t1.dt = '10' and cbo_t1.c_boolean = true;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_subq_exists.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_subq_exists.q b/ql/src/test/queries/clientpositive/cbo_rp_subq_exists.q
new file mode 100644
index 0000000..151ebe0
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_subq_exists.q
@@ -0,0 +1,67 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+set hive.exec.check.crossproducts=false;
+
+set hive.stats.fetch.column.stats=true;
+set hive.auto.convert.join=false;
+
+-- 18. SubQueries Not Exists
+-- distinct, corr
+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'
+  )
+;
+
+-- no agg, corr, having
+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'
+  )
+;
+
+-- 19. SubQueries Exists
+-- view test
+create view cv1 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')
+;
+
+select * from cv1
+;
+
+-- sq in from
+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
+;
+
+-- sq in from, having
+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
+;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_subq_in.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_subq_in.q b/ql/src/test/queries/clientpositive/cbo_rp_subq_in.q
new file mode 100644
index 0000000..19c2943
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_subq_in.q
@@ -0,0 +1,56 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+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 * 
+from src_cbo 
+where src_cbo.key in (select key from src_cbo s1 where s1.key > '9') order by key
+;
+
+-- agg, corr
+-- add back once rank issue fixed for cbo
+
+-- distinct, corr
+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
+;
+
+-- non agg, corr, with join in Parent Query
+select p.p_partkey, li.l_suppkey 
+from (select distinct l_partkey as p_partkey from lineitem) p join lineitem li on p.p_partkey = li.l_partkey 
+where li.l_linenumber = 1 and
+ li.l_orderkey in (select l_orderkey from lineitem where l_shipmode = 'AIR' and l_linenumber = li.l_linenumber)
+ order by p.p_partkey
+;
+
+-- where and having
+-- Plan is:
+-- Stage 1: b semijoin sq1:src_cbo (subquery in where)
+-- Stage 2: group by Stage 1 o/p
+-- Stage 5: group by on sq2:src_cbo (subquery in having)
+-- Stage 6: Stage 2 o/p semijoin Stage 5
+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
+;
+
+-- non agg, non corr, windowing
+select p_mfgr, p_name, avg(p_size) 
+from part 
+group by p_mfgr, p_name
+having p_name in 
+  (select first_value(p_name) over(partition by p_mfgr order by p_size) from part) order by p_mfgr
+;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_subq_not_in.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_subq_not_in.q b/ql/src/test/queries/clientpositive/cbo_rp_subq_not_in.q
new file mode 100644
index 0000000..ad2cc67
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_subq_not_in.q
@@ -0,0 +1,81 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+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 * 
+from src_cbo 
+where src_cbo.key not in  
+  ( select key  from src_cbo s1 
+    where s1.key > '2'
+  ) order by key
+;
+
+-- non agg, corr
+select p_mfgr, b.p_name, p_size 
+from part b 
+where b.p_name not in 
+  (select p_name 
+  from (select p_mfgr, p_name, p_size as r from part) a 
+  where r < 10 and b.p_mfgr = a.p_mfgr 
+  ) order by p_mfgr,p_size
+;
+
+-- agg, non corr
+select p_name, p_size 
+from 
+part where part.p_size not in 
+  (select avg(p_size) 
+  from (select p_size from part) a 
+  where p_size < 10
+  ) order by p_name
+;
+
+-- agg, corr
+select p_mfgr, p_name, p_size 
+from part b where b.p_size not in 
+  (select min(p_size) 
+  from (select p_mfgr, p_size from part) a 
+  where p_size < 10 and b.p_mfgr = a.p_mfgr
+  ) order by  p_name
+;
+
+-- non agg, non corr, Group By in Parent Query
+select li.l_partkey, count(*) 
+from lineitem li 
+where li.l_linenumber = 1 and 
+  li.l_orderkey not in (select l_orderkey from lineitem where l_shipmode = 'AIR') 
+group by li.l_partkey order by li.l_partkey
+;
+
+-- add null check test from sq_notin.q once HIVE-7721 resolved.
+
+-- non agg, corr, having
+select b.p_mfgr, min(p_retailprice) 
+from part b 
+group by b.p_mfgr
+having b.p_mfgr not in 
+  (select p_mfgr 
+  from (select p_mfgr, min(p_retailprice) l, max(p_retailprice) r, avg(p_retailprice) a from part group by p_mfgr) a 
+  where min(p_retailprice) = l and r - l > 600
+  )
+  order by b.p_mfgr
+;
+
+-- agg, non corr, having
+select b.p_mfgr, min(p_retailprice) 
+from part b 
+group by b.p_mfgr
+having b.p_mfgr not in 
+  (select p_mfgr 
+  from part a
+  group by p_mfgr
+  having max(p_retailprice) - min(p_retailprice) > 600
+  )
+  order by b.p_mfgr  
+;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_udf_udaf.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_udf_udaf.q b/ql/src/test/queries/clientpositive/cbo_rp_udf_udaf.q
new file mode 100644
index 0000000..c057105
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_udf_udaf.q
@@ -0,0 +1,20 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+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 cbo_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 cbo_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 cbo_t1) cbo_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 cbo_t1 group by c_int) cbo_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 cbo_t1) cbo_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 cbo_t1) cbo_t1;
+select key,count(c_int) as a, avg(c_float) from cbo_t1 group by key order by a;
+select count(distinct c_int) as a, avg(c_float) from cbo_t1 group by c_float order by a;
+select count(distinct c_int) as a, avg(c_float) from cbo_t1 group by c_int order by a;
+select count(distinct c_int) as a, avg(c_float) from cbo_t1 group by c_float, c_int order by a;

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_union.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_union.q b/ql/src/test/queries/clientpositive/cbo_rp_union.q
new file mode 100644
index 0000000..a6915f9
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_union.q
@@ -0,0 +1,14 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+set hive.exec.check.crossproducts=false;
+
+set hive.stats.fetch.column.stats=true;
+set hive.auto.convert.join=false;
+
+-- SORT_QUERY_RESULTS
+
+-- 11. Union All
+select * from (select * from cbo_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 cbo_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 cbo_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 cbo_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;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_views.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_views.q b/ql/src/test/queries/clientpositive/cbo_rp_views.q
new file mode 100644
index 0000000..b93f8d8
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_views.q
@@ -0,0 +1,46 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+set hive.exec.check.crossproducts=false;
+
+set hive.stats.fetch.column.stats=true;
+set hive.auto.convert.join=false;
+
+-- 10. Test views
+create view v1 as select c_int, value, c_boolean, dt from cbo_t1;
+create view v2 as select c_int, value from cbo_t2;
+
+select value from v1 where c_boolean=false;
+select max(c_int) from v1 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.c_int)  from v1 join v2 on v1.c_int = v2.c_int;
+
+select count(*) from v1 a join v1 b on a.value = b.value;
+
+create view v3 as select v1.value val from v1 join cbo_t1 on v1.c_boolean = cbo_t1.c_boolean;
+
+select count(val) from v3 where val != '1';
+with q1 as ( select key from cbo_t1 where key = '1')
+select count(*) from q1;
+
+with q1 as ( select value from v1 where c_boolean = false)
+select count(value) from q1 ;
+
+create view v4 as
+with q1 as ( select key,c_int from cbo_t1  where key = '1')
+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')
+select sum(c_int) from (select c_int from q1) a;
+
+with q1 as ( select cbo_t1.c_int c_int from q2 join cbo_t1 where q2.c_int = cbo_t1.c_int  and cbo_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;
+
+
+drop view v1;
+drop view v2;
+drop view v3;
+drop view v4;

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/queries/clientpositive/cbo_rp_windowing.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_windowing.q b/ql/src/test/queries/clientpositive/cbo_rp_windowing.q
new file mode 100644
index 0000000..95da904
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/cbo_rp_windowing.q
@@ -0,0 +1,21 @@
+set hive.cbo.enable=true;
+set hive.cbo.returnpath.hiveop=true;
+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
+
+select count(c_int) over() from cbo_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_float order by key), lag(c_float, 2, c_float) over(partition by c_float order by key) from cbo_t1 order by rn;
+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(partition by c_float   order by key  ), lag(c_float, 2, c_float) over(partition by c_float   order by key) from cbo_t1 order by rn) cbo_t1;
+select x from (select count(c_int) over() as x, sum(c_float) over() from cbo_t1) cbo_t1;
+select 1+sum(c_int) over() from cbo_t1;
+select sum(c_int)+sum(sum(c_int)) over() from cbo_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 value Rows between 1 preceding and unbounded following), sum(c_float) over (partition by key order by value rows between 1 preceding and current row), max(c_float) over (partition by key order by value rows between 1 preceding and unbounded following), min(c_float) over (partition by key order by value rows between 1 preceding and 1 following) from cbo_t1) cbo_t1;
+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 row) e, avg(c_float) over (partition by key order by value range between 1 preceding and unbounded following) f, sum(c_float) over (partition by key order by value range between 1 preceding and current row) g, max(c_float) over (partition by key order by value range between 1 preceding and unbounded following) h, min(c_float) over (partition by key order by value range between 1 preceding and 1 following) i from cbo_t1) cbo_t1;
+select *, rank() over(partition by key order by value) as rr from src1;
+select *, rank() over(partition by key order by value) from src1;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_gby.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_gby.q.out b/ql/src/test/results/clientpositive/cbo_rp_gby.q.out
new file mode 100644
index 0000000..04597a7
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_gby.q.out
@@ -0,0 +1,124 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+
+-- 6. Test Select + TS + Join + Fil + GB + GB Having
+select key, (c_int+1)+2 as x, sum(c_int) from cbo_t1 group by c_float, cbo_t1.c_int, key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+
+-- 6. Test Select + TS + Join + Fil + GB + GB Having
+select key, (c_int+1)+2 as x, sum(c_int) from cbo_t1 group by c_float, cbo_t1.c_int, key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### A masked pattern was here ####
+ 1	4	2
+ 1 	4	2
+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 cbo_t1 group by c_float, cbo_t1.c_int, key) R group by y, x
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+#### 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 cbo_t1 group by c_float, cbo_t1.c_int, key) R group by y, x
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+#### 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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0) group by c_float, cbo_t1.c_int, key order by a) cbo_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_t2 on cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c order by cbo_t3.c_int+c desc, c
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0) group by c_float, cbo_t1.c_int, key order by a) cbo_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_t2 on cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c order by cbo_t3.c_int+c desc, c
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_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) cbo_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_t2.c_int > 0 or cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key  having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) cbo_t2 on cbo_t1.a=p left outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c  having cbo_t3.c_int > 0 and (c_int >=1 or c >= 1) and (c_int + c) >= 0  order by cbo_t3.c_int % c asc, cbo_t3.c_int desc
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_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) cbo_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_t2.c_int > 0 or cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key  having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) cbo_t2 on cbo_t1.a=p left outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c  having cbo_t3.c_int > 0 and (c_int >=1 or c >= 1) and (c_int + c) >= 0  order by cbo_t3.c_int % c asc, cbo_t3.c_int desc
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_t1.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b+c, a desc) cbo_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_int > 0 or cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) cbo_t2 on cbo_t1.a=p right outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 2) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_t1.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by b+c, a desc) cbo_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_int > 0 or cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) cbo_t2 on cbo_t1.a=p right outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 2) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_t1.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by c+a desc) cbo_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 > 0 or cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by p+q desc, r asc) cbo_t2 on cbo_t1.a=p full outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c having cbo_t3.c_int > 0 and (c_int >=1 or c >= 1) and (c_int + c) >= 0 order by cbo_t3.c_int
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_t1.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by c+a desc) cbo_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 > 0 or cbo_t2.c_float >= 0)  group by c_float, cbo_t2.c_int, key having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0 order by p+q desc, r asc) cbo_t2 on cbo_t1.a=p full outer join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c having cbo_t3.c_int > 0 and (c_int >=1 or c >= 1) and (c_int + c) >= 0 order by cbo_t3.c_int
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_t1.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) cbo_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 having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) cbo_t2 on cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t1
+PREHOOK: Input: default@cbo_t1@dt=2014
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+PREHOOK: Input: default@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 cbo_t1 where (cbo_t1.c_int + 1 >= 0) and (cbo_t1.c_int > 0 or cbo_t1.c_float >= 0)  group by c_float, cbo_t1.c_int, key having cbo_t1.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) cbo_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 having cbo_t2.c_float > 0 and (c_int >=1 or c_float >= 1) and (c_int + c_float) >= 0) cbo_t2 on cbo_t1.a=p join cbo_t3 on cbo_t1.a=key where (b + cbo_t2.q >= 0) and (b > 0 or c_int >= 0) group by cbo_t3.c_int, c
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t1
+POSTHOOK: Input: default@cbo_t1@dt=2014
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+POSTHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+1	12	6
+1	2	6

http://git-wip-us.apache.org/repos/asf/hive/blob/7e4f3bbf/ql/src/test/results/clientpositive/cbo_rp_gby_empty.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_gby_empty.q.out b/ql/src/test/results/clientpositive/cbo_rp_gby_empty.q.out
new file mode 100644
index 0000000..68f0255
--- /dev/null
+++ b/ql/src/test/results/clientpositive/cbo_rp_gby_empty.q.out
@@ -0,0 +1,77 @@
+PREHOOK: query: -- 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 src) unionsrc
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: -- 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 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 src) unionsrc
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select unionsrc.key, unionsrc.value FROM (select 'tst1' as key, count(1) as value from src) unionsrc
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+#### 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
+    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: default@cbo_t3
+#### 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: type: QUERY
+POSTHOOK: Input: default@cbo_t3
+#### 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
+    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: default@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: type: QUERY
+POSTHOOK: Input: default@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
+    UNION ALL
+        select 'avg' as key,  avg(c_int) as value from cbo_t3 s3) unionsrc group by unionsrc.key order by unionsrc.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t3
+#### 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: type: QUERY
+POSTHOOK: Input: default@cbo_t3
+#### A masked pattern was here ####
+avg	1
+max	1
+min	1