http://git-wip-us.apache.org/repos/asf/hive/blob/b8299551/ql/src/test/results/clientpositive/perf/tez/cbo_query49.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query49.q.out 
b/ql/src/test/results/clientpositive/perf/tez/cbo_query49.q.out
new file mode 100644
index 0000000..9c31d61
--- /dev/null
+++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query49.q.out
@@ -0,0 +1,330 @@
+PREHOOK: query: explain cbo
+select  
+ 'web' as channel
+ ,web.item
+ ,web.return_ratio
+ ,web.return_rank
+ ,web.currency_rank
+ from (
+       select 
+        item
+       ,return_ratio
+       ,currency_ratio
+       ,rank() over (order by return_ratio) as return_rank
+       ,rank() over (order by currency_ratio) as currency_rank
+       from
+       (       select ws.ws_item_sk as item
+               ,(cast(sum(coalesce(wr.wr_return_quantity,0)) as dec(15,4))/
+               cast(sum(coalesce(ws.ws_quantity,0)) as dec(15,4) )) as 
return_ratio
+               ,(cast(sum(coalesce(wr.wr_return_amt,0)) as dec(15,4))/
+               cast(sum(coalesce(ws.ws_net_paid,0)) as dec(15,4) )) as 
currency_ratio
+               from 
+                web_sales ws left outer join web_returns wr 
+                       on (ws.ws_order_number = wr.wr_order_number and 
+                       ws.ws_item_sk = wr.wr_item_sk)
+                 ,date_dim
+               where 
+                       wr.wr_return_amt > 10000 
+                       and ws.ws_net_profit > 1
+                         and ws.ws_net_paid > 0
+                         and ws.ws_quantity > 0
+                         and ws_sold_date_sk = d_date_sk
+                         and d_year = 2000
+                         and d_moy = 12
+               group by ws.ws_item_sk
+       ) in_web
+ ) web
+ where 
+ (
+ web.return_rank <= 10
+ or
+ web.currency_rank <= 10
+ )
+ union
+ select 
+ 'catalog' as channel
+ ,catalog.item
+ ,catalog.return_ratio
+ ,catalog.return_rank
+ ,catalog.currency_rank
+ from (
+       select 
+        item
+       ,return_ratio
+       ,currency_ratio
+       ,rank() over (order by return_ratio) as return_rank
+       ,rank() over (order by currency_ratio) as currency_rank
+       from
+       (       select 
+               cs.cs_item_sk as item
+               ,(cast(sum(coalesce(cr.cr_return_quantity,0)) as dec(15,4))/
+               cast(sum(coalesce(cs.cs_quantity,0)) as dec(15,4) )) as 
return_ratio
+               ,(cast(sum(coalesce(cr.cr_return_amount,0)) as dec(15,4))/
+               cast(sum(coalesce(cs.cs_net_paid,0)) as dec(15,4) )) as 
currency_ratio
+               from 
+               catalog_sales cs left outer join catalog_returns cr
+                       on (cs.cs_order_number = cr.cr_order_number and 
+                       cs.cs_item_sk = cr.cr_item_sk)
+                ,date_dim
+               where 
+                       cr.cr_return_amount > 10000 
+                       and cs.cs_net_profit > 1
+                         and cs.cs_net_paid > 0
+                         and cs.cs_quantity > 0
+                         and cs_sold_date_sk = d_date_sk
+                         and d_year = 2000
+                         and d_moy = 12
+                 group by cs.cs_item_sk
+       ) in_cat
+ ) catalog
+ where 
+ (
+ catalog.return_rank <= 10
+ or
+ catalog.currency_rank <=10
+ )
+ union
+ select 
+ 'store' as channel
+ ,store.item
+ ,store.return_ratio
+ ,store.return_rank
+ ,store.currency_rank
+ from (
+       select 
+        item
+       ,return_ratio
+       ,currency_ratio
+       ,rank() over (order by return_ratio) as return_rank
+       ,rank() over (order by currency_ratio) as currency_rank
+       from
+       (       select sts.ss_item_sk as item
+               ,(cast(sum(coalesce(sr.sr_return_quantity,0)) as 
dec(15,4))/cast(sum(coalesce(sts.ss_quantity,0)) as dec(15,4) )) as return_ratio
+               ,(cast(sum(coalesce(sr.sr_return_amt,0)) as 
dec(15,4))/cast(sum(coalesce(sts.ss_net_paid,0)) as dec(15,4) )) as 
currency_ratio
+               from 
+               store_sales sts left outer join store_returns sr
+                       on (sts.ss_ticket_number = sr.sr_ticket_number and 
sts.ss_item_sk = sr.sr_item_sk)
+                ,date_dim
+               where 
+                       sr.sr_return_amt > 10000 
+                       and sts.ss_net_profit > 1
+                         and sts.ss_net_paid > 0 
+                         and sts.ss_quantity > 0
+                         and ss_sold_date_sk = d_date_sk
+                         and d_year = 2000
+                         and d_moy = 12
+               group by sts.ss_item_sk
+       ) in_store
+ ) store
+ where  (
+ store.return_rank <= 10
+ or 
+ store.currency_rank <= 10
+ )
+ order by 1,4,5
+ limit 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@catalog_returns
+PREHOOK: Input: default@catalog_sales
+PREHOOK: Input: default@date_dim
+PREHOOK: Input: default@store_returns
+PREHOOK: Input: default@store_sales
+PREHOOK: Input: default@web_returns
+PREHOOK: Input: default@web_sales
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: explain cbo
+select  
+ 'web' as channel
+ ,web.item
+ ,web.return_ratio
+ ,web.return_rank
+ ,web.currency_rank
+ from (
+       select 
+        item
+       ,return_ratio
+       ,currency_ratio
+       ,rank() over (order by return_ratio) as return_rank
+       ,rank() over (order by currency_ratio) as currency_rank
+       from
+       (       select ws.ws_item_sk as item
+               ,(cast(sum(coalesce(wr.wr_return_quantity,0)) as dec(15,4))/
+               cast(sum(coalesce(ws.ws_quantity,0)) as dec(15,4) )) as 
return_ratio
+               ,(cast(sum(coalesce(wr.wr_return_amt,0)) as dec(15,4))/
+               cast(sum(coalesce(ws.ws_net_paid,0)) as dec(15,4) )) as 
currency_ratio
+               from 
+                web_sales ws left outer join web_returns wr 
+                       on (ws.ws_order_number = wr.wr_order_number and 
+                       ws.ws_item_sk = wr.wr_item_sk)
+                 ,date_dim
+               where 
+                       wr.wr_return_amt > 10000 
+                       and ws.ws_net_profit > 1
+                         and ws.ws_net_paid > 0
+                         and ws.ws_quantity > 0
+                         and ws_sold_date_sk = d_date_sk
+                         and d_year = 2000
+                         and d_moy = 12
+               group by ws.ws_item_sk
+       ) in_web
+ ) web
+ where 
+ (
+ web.return_rank <= 10
+ or
+ web.currency_rank <= 10
+ )
+ union
+ select 
+ 'catalog' as channel
+ ,catalog.item
+ ,catalog.return_ratio
+ ,catalog.return_rank
+ ,catalog.currency_rank
+ from (
+       select 
+        item
+       ,return_ratio
+       ,currency_ratio
+       ,rank() over (order by return_ratio) as return_rank
+       ,rank() over (order by currency_ratio) as currency_rank
+       from
+       (       select 
+               cs.cs_item_sk as item
+               ,(cast(sum(coalesce(cr.cr_return_quantity,0)) as dec(15,4))/
+               cast(sum(coalesce(cs.cs_quantity,0)) as dec(15,4) )) as 
return_ratio
+               ,(cast(sum(coalesce(cr.cr_return_amount,0)) as dec(15,4))/
+               cast(sum(coalesce(cs.cs_net_paid,0)) as dec(15,4) )) as 
currency_ratio
+               from 
+               catalog_sales cs left outer join catalog_returns cr
+                       on (cs.cs_order_number = cr.cr_order_number and 
+                       cs.cs_item_sk = cr.cr_item_sk)
+                ,date_dim
+               where 
+                       cr.cr_return_amount > 10000 
+                       and cs.cs_net_profit > 1
+                         and cs.cs_net_paid > 0
+                         and cs.cs_quantity > 0
+                         and cs_sold_date_sk = d_date_sk
+                         and d_year = 2000
+                         and d_moy = 12
+                 group by cs.cs_item_sk
+       ) in_cat
+ ) catalog
+ where 
+ (
+ catalog.return_rank <= 10
+ or
+ catalog.currency_rank <=10
+ )
+ union
+ select 
+ 'store' as channel
+ ,store.item
+ ,store.return_ratio
+ ,store.return_rank
+ ,store.currency_rank
+ from (
+       select 
+        item
+       ,return_ratio
+       ,currency_ratio
+       ,rank() over (order by return_ratio) as return_rank
+       ,rank() over (order by currency_ratio) as currency_rank
+       from
+       (       select sts.ss_item_sk as item
+               ,(cast(sum(coalesce(sr.sr_return_quantity,0)) as 
dec(15,4))/cast(sum(coalesce(sts.ss_quantity,0)) as dec(15,4) )) as return_ratio
+               ,(cast(sum(coalesce(sr.sr_return_amt,0)) as 
dec(15,4))/cast(sum(coalesce(sts.ss_net_paid,0)) as dec(15,4) )) as 
currency_ratio
+               from 
+               store_sales sts left outer join store_returns sr
+                       on (sts.ss_ticket_number = sr.sr_ticket_number and 
sts.ss_item_sk = sr.sr_item_sk)
+                ,date_dim
+               where 
+                       sr.sr_return_amt > 10000 
+                       and sts.ss_net_profit > 1
+                         and sts.ss_net_paid > 0 
+                         and sts.ss_quantity > 0
+                         and ss_sold_date_sk = d_date_sk
+                         and d_year = 2000
+                         and d_moy = 12
+               group by sts.ss_item_sk
+       ) in_store
+ ) store
+ where  (
+ store.return_rank <= 10
+ or 
+ store.currency_rank <= 10
+ )
+ order by 1,4,5
+ limit 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@catalog_returns
+POSTHOOK: Input: default@catalog_sales
+POSTHOOK: Input: default@date_dim
+POSTHOOK: Input: default@store_returns
+POSTHOOK: Input: default@store_sales
+POSTHOOK: Input: default@web_returns
+POSTHOOK: Input: default@web_sales
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+CBO PLAN:
+HiveSortLimit(sort0=[$0], sort1=[$3], sort2=[$4], dir0=[ASC], dir1=[ASC], 
dir2=[ASC], fetch=[100])
+  HiveProject(channel=[$0], item=[$1], return_ratio=[$2], return_rank=[$3], 
currency_rank=[$4])
+    HiveAggregate(group=[{0, 1, 2, 3, 4}])
+      HiveProject(channel=[$0], item=[$1], return_ratio=[$2], 
return_rank=[$3], currency_rank=[$4])
+        HiveUnion(all=[true])
+          HiveProject(channel=[$0], item=[$1], return_ratio=[$2], 
return_rank=[$3], currency_rank=[$4])
+            HiveAggregate(group=[{0, 1, 2, 3, 4}])
+              HiveProject(channel=[$0], item=[$1], return_ratio=[$2], 
return_rank=[$3], currency_rank=[$4])
+                HiveUnion(all=[true])
+                  HiveProject(channel=[_UTF-16LE'web'], item=[$0], 
return_ratio=[$1], return_rank=[$2], currency_rank=[$3])
+                    HiveFilter(condition=[OR(<=($2, 10), <=($3, 10))])
+                      HiveProject(item=[$0], 
return_ratio=[/(CAST($1):DECIMAL(15, 4), CAST($2):DECIMAL(15, 4))], 
rank_window_0=[rank() OVER (PARTITION BY 0 ORDER BY /(CAST($1):DECIMAL(15, 4), 
CAST($2):DECIMAL(15, 4)) NULLS LAST ROWS BETWEEN 2147483647 FOLLOWING AND 
2147483647 PRECEDING)], rank_window_1=[rank() OVER (PARTITION BY 0 ORDER BY 
/(CAST($3):DECIMAL(15, 4), CAST($4):DECIMAL(15, 4)) NULLS LAST ROWS BETWEEN 
2147483647 FOLLOWING AND 2147483647 PRECEDING)])
+                        HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3], 
$f4=[$4])
+                          HiveAggregate(group=[{0}], agg#0=[sum($1)], 
agg#1=[sum($2)], agg#2=[sum($3)], agg#3=[sum($4)])
+                            HiveProject($f0=[$5], $f1=[CASE(IS NOT NULL($2), 
$2, 0)], $f2=[CASE(IS NOT NULL($7), $7, 0)], $f3=[CASE(IS NOT NULL($3), $3, 
0)], $f4=[CASE(IS NOT NULL($8), $8, 0)])
+                              HiveJoin(condition=[AND(=($6, $1), =($5, $0))], 
joinType=[inner], algorithm=[none], cost=[not available])
+                                HiveProject(wr_item_sk=[$2], 
wr_order_number=[$13], wr_return_quantity=[$14], wr_return_amt=[$15])
+                                  HiveFilter(condition=[AND(>($15, 10000), IS 
NOT NULL($13), IS NOT NULL($2))])
+                                    HiveTableScan(table=[[default, 
web_returns]], table:alias=[wr])
+                                HiveJoin(condition=[=($0, $6)], 
joinType=[inner], algorithm=[none], cost=[not available])
+                                  HiveProject(ws_sold_date_sk=[$0], 
ws_item_sk=[$3], ws_order_number=[$17], ws_quantity=[$18], ws_net_paid=[$29], 
ws_net_profit=[$33])
+                                    HiveFilter(condition=[AND(>($33, 1), 
>($29, 0), >($18, 0), IS NOT NULL($17), IS NOT NULL($3), IS NOT NULL($0))])
+                                      HiveTableScan(table=[[default, 
web_sales]], table:alias=[ws])
+                                  HiveProject(d_date_sk=[$0], 
d_year=[CAST(2000):INTEGER], d_moy=[CAST(12):INTEGER])
+                                    HiveFilter(condition=[AND(=($6, 2000), 
=($8, 12), IS NOT NULL($0))])
+                                      HiveTableScan(table=[[default, 
date_dim]], table:alias=[date_dim])
+                  HiveProject(channel=[_UTF-16LE'catalog'], item=[$0], 
return_ratio=[$1], return_rank=[$2], currency_rank=[$3])
+                    HiveFilter(condition=[OR(<=($2, 10), <=($3, 10))])
+                      HiveProject(item=[$0], 
return_ratio=[/(CAST($1):DECIMAL(15, 4), CAST($2):DECIMAL(15, 4))], 
rank_window_0=[rank() OVER (PARTITION BY 0 ORDER BY /(CAST($1):DECIMAL(15, 4), 
CAST($2):DECIMAL(15, 4)) NULLS LAST ROWS BETWEEN 2147483647 FOLLOWING AND 
2147483647 PRECEDING)], rank_window_1=[rank() OVER (PARTITION BY 0 ORDER BY 
/(CAST($3):DECIMAL(15, 4), CAST($4):DECIMAL(15, 4)) NULLS LAST ROWS BETWEEN 
2147483647 FOLLOWING AND 2147483647 PRECEDING)])
+                        HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3], 
$f4=[$4])
+                          HiveAggregate(group=[{0}], agg#0=[sum($1)], 
agg#1=[sum($2)], agg#2=[sum($3)], agg#3=[sum($4)])
+                            HiveProject($f0=[$5], $f1=[CASE(IS NOT NULL($2), 
$2, 0)], $f2=[CASE(IS NOT NULL($7), $7, 0)], $f3=[CASE(IS NOT NULL($3), $3, 
0)], $f4=[CASE(IS NOT NULL($8), $8, 0)])
+                              HiveJoin(condition=[AND(=($6, $1), =($5, $0))], 
joinType=[inner], algorithm=[none], cost=[not available])
+                                HiveProject(cr_item_sk=[$2], 
cr_order_number=[$16], cr_return_quantity=[$17], cr_return_amount=[$18])
+                                  HiveFilter(condition=[AND(>($18, 10000), IS 
NOT NULL($16), IS NOT NULL($2))])
+                                    HiveTableScan(table=[[default, 
catalog_returns]], table:alias=[cr])
+                                HiveJoin(condition=[=($0, $6)], 
joinType=[inner], algorithm=[none], cost=[not available])
+                                  HiveProject(cs_sold_date_sk=[$0], 
cs_item_sk=[$15], cs_order_number=[$17], cs_quantity=[$18], cs_net_paid=[$29], 
cs_net_profit=[$33])
+                                    HiveFilter(condition=[AND(>($33, 1), 
>($29, 0), >($18, 0), IS NOT NULL($17), IS NOT NULL($15), IS NOT NULL($0))])
+                                      HiveTableScan(table=[[default, 
catalog_sales]], table:alias=[cs])
+                                  HiveProject(d_date_sk=[$0], 
d_year=[CAST(2000):INTEGER], d_moy=[CAST(12):INTEGER])
+                                    HiveFilter(condition=[AND(=($6, 2000), 
=($8, 12), IS NOT NULL($0))])
+                                      HiveTableScan(table=[[default, 
date_dim]], table:alias=[date_dim])
+          HiveProject(channel=[_UTF-16LE'store'], item=[$0], 
return_ratio=[$1], return_rank=[$2], currency_rank=[$3])
+            HiveFilter(condition=[OR(<=($2, 10), <=($3, 10))])
+              HiveProject(item=[$0], return_ratio=[/(CAST($1):DECIMAL(15, 4), 
CAST($2):DECIMAL(15, 4))], rank_window_0=[rank() OVER (PARTITION BY 0 ORDER BY 
/(CAST($1):DECIMAL(15, 4), CAST($2):DECIMAL(15, 4)) NULLS LAST ROWS BETWEEN 
2147483647 FOLLOWING AND 2147483647 PRECEDING)], rank_window_1=[rank() OVER 
(PARTITION BY 0 ORDER BY /(CAST($3):DECIMAL(15, 4), CAST($4):DECIMAL(15, 4)) 
NULLS LAST ROWS BETWEEN 2147483647 FOLLOWING AND 2147483647 PRECEDING)])
+                HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3], $f4=[$4])
+                  HiveAggregate(group=[{0}], agg#0=[sum($1)], agg#1=[sum($2)], 
agg#2=[sum($3)], agg#3=[sum($4)])
+                    HiveProject($f0=[$5], $f1=[CASE(IS NOT NULL($2), $2, 0)], 
$f2=[CASE(IS NOT NULL($7), $7, 0)], $f3=[CASE(IS NOT NULL($3), $3, 0)], 
$f4=[CASE(IS NOT NULL($8), $8, 0)])
+                      HiveJoin(condition=[AND(=($6, $1), =($5, $0))], 
joinType=[inner], algorithm=[none], cost=[not available])
+                        HiveProject(sr_item_sk=[$2], sr_ticket_number=[$9], 
sr_return_quantity=[$10], sr_return_amt=[$11])
+                          HiveFilter(condition=[AND(>($11, 10000), IS NOT 
NULL($9), IS NOT NULL($2))])
+                            HiveTableScan(table=[[default, store_returns]], 
table:alias=[sr])
+                        HiveJoin(condition=[=($0, $6)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                          HiveProject(ss_sold_date_sk=[$0], ss_item_sk=[$2], 
ss_ticket_number=[$9], ss_quantity=[$10], ss_net_paid=[$20], 
ss_net_profit=[$22])
+                            HiveFilter(condition=[AND(>($22, 1), >($20, 0), 
>($10, 0), IS NOT NULL($9), IS NOT NULL($2), IS NOT NULL($0))])
+                              HiveTableScan(table=[[default, store_sales]], 
table:alias=[sts])
+                          HiveProject(d_date_sk=[$0], 
d_year=[CAST(2000):INTEGER], d_moy=[CAST(12):INTEGER])
+                            HiveFilter(condition=[AND(=($6, 2000), =($8, 12), 
IS NOT NULL($0))])
+                              HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+

http://git-wip-us.apache.org/repos/asf/hive/blob/b8299551/ql/src/test/results/clientpositive/perf/tez/cbo_query5.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query5.q.out 
b/ql/src/test/results/clientpositive/perf/tez/cbo_query5.q.out
new file mode 100644
index 0000000..a82f011
--- /dev/null
+++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query5.q.out
@@ -0,0 +1,342 @@
+PREHOOK: query: explain cbo
+with ssr as
+ (select s_store_id,
+        sum(sales_price) as sales,
+        sum(profit) as profit,
+        sum(return_amt) as returns,
+        sum(net_loss) as profit_loss
+ from
+  ( select  ss_store_sk as store_sk,
+            ss_sold_date_sk  as date_sk,
+            ss_ext_sales_price as sales_price,
+            ss_net_profit as profit,
+            cast(0 as decimal(7,2)) as return_amt,
+            cast(0 as decimal(7,2)) as net_loss
+    from store_sales
+    union all
+    select sr_store_sk as store_sk,
+           sr_returned_date_sk as date_sk,
+           cast(0 as decimal(7,2)) as sales_price,
+           cast(0 as decimal(7,2)) as profit,
+           sr_return_amt as return_amt,
+           sr_net_loss as net_loss
+    from store_returns
+   ) salesreturns,
+     date_dim,
+     store
+ where date_sk = d_date_sk
+       and d_date between cast('1998-08-04' as date) 
+                  and (cast('1998-08-04' as date) +  14 days)
+       and store_sk = s_store_sk
+ group by s_store_id)
+ ,
+ csr as
+ (select cp_catalog_page_id,
+        sum(sales_price) as sales,
+        sum(profit) as profit,
+        sum(return_amt) as returns,
+        sum(net_loss) as profit_loss
+ from
+  ( select  cs_catalog_page_sk as page_sk,
+            cs_sold_date_sk  as date_sk,
+            cs_ext_sales_price as sales_price,
+            cs_net_profit as profit,
+            cast(0 as decimal(7,2)) as return_amt,
+            cast(0 as decimal(7,2)) as net_loss
+    from catalog_sales
+    union all
+    select cr_catalog_page_sk as page_sk,
+           cr_returned_date_sk as date_sk,
+           cast(0 as decimal(7,2)) as sales_price,
+           cast(0 as decimal(7,2)) as profit,
+           cr_return_amount as return_amt,
+           cr_net_loss as net_loss
+    from catalog_returns
+   ) salesreturns,
+     date_dim,
+     catalog_page
+ where date_sk = d_date_sk
+       and d_date between cast('1998-08-04' as date)
+                  and (cast('1998-08-04' as date) +  14 days)
+       and page_sk = cp_catalog_page_sk
+ group by cp_catalog_page_id)
+ ,
+ wsr as
+ (select web_site_id,
+        sum(sales_price) as sales,
+        sum(profit) as profit,
+        sum(return_amt) as returns,
+        sum(net_loss) as profit_loss
+ from
+  ( select  ws_web_site_sk as wsr_web_site_sk,
+            ws_sold_date_sk  as date_sk,
+            ws_ext_sales_price as sales_price,
+            ws_net_profit as profit,
+            cast(0 as decimal(7,2)) as return_amt,
+            cast(0 as decimal(7,2)) as net_loss
+    from web_sales
+    union all
+    select ws_web_site_sk as wsr_web_site_sk,
+           wr_returned_date_sk as date_sk,
+           cast(0 as decimal(7,2)) as sales_price,
+           cast(0 as decimal(7,2)) as profit,
+           wr_return_amt as return_amt,
+           wr_net_loss as net_loss
+    from web_returns left outer join web_sales on
+         ( wr_item_sk = ws_item_sk
+           and wr_order_number = ws_order_number)
+   ) salesreturns,
+     date_dim,
+     web_site
+ where date_sk = d_date_sk
+       and d_date between cast('1998-08-04' as date)
+                  and (cast('1998-08-04' as date) +  14 days)
+       and wsr_web_site_sk = web_site_sk
+ group by web_site_id)
+  select  channel
+        , id
+        , sum(sales) as sales
+        , sum(returns) as returns
+        , sum(profit) as profit
+ from 
+ (select 'store channel' as channel
+        , 'store' || s_store_id as id
+        , sales
+        , returns
+        , (profit - profit_loss) as profit
+ from   ssr
+ union all
+ select 'catalog channel' as channel
+        , 'catalog_page' || cp_catalog_page_id as id
+        , sales
+        , returns
+        , (profit - profit_loss) as profit
+ from  csr
+ union all
+ select 'web channel' as channel
+        , 'web_site' || web_site_id as id
+        , sales
+        , returns
+        , (profit - profit_loss) as profit
+ from   wsr
+ ) x
+ group by rollup (channel, id)
+ order by channel
+         ,id
+ limit 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@catalog_page
+PREHOOK: Input: default@catalog_returns
+PREHOOK: Input: default@catalog_sales
+PREHOOK: Input: default@date_dim
+PREHOOK: Input: default@store
+PREHOOK: Input: default@store_returns
+PREHOOK: Input: default@store_sales
+PREHOOK: Input: default@web_returns
+PREHOOK: Input: default@web_sales
+PREHOOK: Input: default@web_site
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: explain cbo
+with ssr as
+ (select s_store_id,
+        sum(sales_price) as sales,
+        sum(profit) as profit,
+        sum(return_amt) as returns,
+        sum(net_loss) as profit_loss
+ from
+  ( select  ss_store_sk as store_sk,
+            ss_sold_date_sk  as date_sk,
+            ss_ext_sales_price as sales_price,
+            ss_net_profit as profit,
+            cast(0 as decimal(7,2)) as return_amt,
+            cast(0 as decimal(7,2)) as net_loss
+    from store_sales
+    union all
+    select sr_store_sk as store_sk,
+           sr_returned_date_sk as date_sk,
+           cast(0 as decimal(7,2)) as sales_price,
+           cast(0 as decimal(7,2)) as profit,
+           sr_return_amt as return_amt,
+           sr_net_loss as net_loss
+    from store_returns
+   ) salesreturns,
+     date_dim,
+     store
+ where date_sk = d_date_sk
+       and d_date between cast('1998-08-04' as date) 
+                  and (cast('1998-08-04' as date) +  14 days)
+       and store_sk = s_store_sk
+ group by s_store_id)
+ ,
+ csr as
+ (select cp_catalog_page_id,
+        sum(sales_price) as sales,
+        sum(profit) as profit,
+        sum(return_amt) as returns,
+        sum(net_loss) as profit_loss
+ from
+  ( select  cs_catalog_page_sk as page_sk,
+            cs_sold_date_sk  as date_sk,
+            cs_ext_sales_price as sales_price,
+            cs_net_profit as profit,
+            cast(0 as decimal(7,2)) as return_amt,
+            cast(0 as decimal(7,2)) as net_loss
+    from catalog_sales
+    union all
+    select cr_catalog_page_sk as page_sk,
+           cr_returned_date_sk as date_sk,
+           cast(0 as decimal(7,2)) as sales_price,
+           cast(0 as decimal(7,2)) as profit,
+           cr_return_amount as return_amt,
+           cr_net_loss as net_loss
+    from catalog_returns
+   ) salesreturns,
+     date_dim,
+     catalog_page
+ where date_sk = d_date_sk
+       and d_date between cast('1998-08-04' as date)
+                  and (cast('1998-08-04' as date) +  14 days)
+       and page_sk = cp_catalog_page_sk
+ group by cp_catalog_page_id)
+ ,
+ wsr as
+ (select web_site_id,
+        sum(sales_price) as sales,
+        sum(profit) as profit,
+        sum(return_amt) as returns,
+        sum(net_loss) as profit_loss
+ from
+  ( select  ws_web_site_sk as wsr_web_site_sk,
+            ws_sold_date_sk  as date_sk,
+            ws_ext_sales_price as sales_price,
+            ws_net_profit as profit,
+            cast(0 as decimal(7,2)) as return_amt,
+            cast(0 as decimal(7,2)) as net_loss
+    from web_sales
+    union all
+    select ws_web_site_sk as wsr_web_site_sk,
+           wr_returned_date_sk as date_sk,
+           cast(0 as decimal(7,2)) as sales_price,
+           cast(0 as decimal(7,2)) as profit,
+           wr_return_amt as return_amt,
+           wr_net_loss as net_loss
+    from web_returns left outer join web_sales on
+         ( wr_item_sk = ws_item_sk
+           and wr_order_number = ws_order_number)
+   ) salesreturns,
+     date_dim,
+     web_site
+ where date_sk = d_date_sk
+       and d_date between cast('1998-08-04' as date)
+                  and (cast('1998-08-04' as date) +  14 days)
+       and wsr_web_site_sk = web_site_sk
+ group by web_site_id)
+  select  channel
+        , id
+        , sum(sales) as sales
+        , sum(returns) as returns
+        , sum(profit) as profit
+ from 
+ (select 'store channel' as channel
+        , 'store' || s_store_id as id
+        , sales
+        , returns
+        , (profit - profit_loss) as profit
+ from   ssr
+ union all
+ select 'catalog channel' as channel
+        , 'catalog_page' || cp_catalog_page_id as id
+        , sales
+        , returns
+        , (profit - profit_loss) as profit
+ from  csr
+ union all
+ select 'web channel' as channel
+        , 'web_site' || web_site_id as id
+        , sales
+        , returns
+        , (profit - profit_loss) as profit
+ from   wsr
+ ) x
+ group by rollup (channel, id)
+ order by channel
+         ,id
+ limit 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@catalog_page
+POSTHOOK: Input: default@catalog_returns
+POSTHOOK: Input: default@catalog_sales
+POSTHOOK: Input: default@date_dim
+POSTHOOK: Input: default@store
+POSTHOOK: Input: default@store_returns
+POSTHOOK: Input: default@store_sales
+POSTHOOK: Input: default@web_returns
+POSTHOOK: Input: default@web_sales
+POSTHOOK: Input: default@web_site
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+CBO PLAN:
+HiveSortLimit(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC], fetch=[100])
+  HiveProject(channel=[$0], id=[$1], $f2=[$2], $f3=[$3], $f4=[$4])
+    HiveAggregate(group=[{0, 1}], groups=[[{0, 1}, {0}, {}]], agg#0=[sum($2)], 
agg#1=[sum($3)], agg#2=[sum($4)])
+      HiveProject(channel=[$0], id=[$1], sales=[$2], returns=[$3], profit=[$4])
+        HiveUnion(all=[true])
+          HiveProject(channel=[_UTF-16LE'store channel'], 
id=[||(_UTF-16LE'store', $0)], sales=[$1], returns=[$3], profit=[-($2, $4)])
+            HiveAggregate(group=[{9}], agg#0=[sum($2)], agg#1=[sum($3)], 
agg#2=[sum($4)], agg#3=[sum($5)])
+              HiveJoin(condition=[=($0, $8)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                HiveJoin(condition=[=($1, $6)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                  HiveProject(store_sk=[$0], date_sk=[$1], sales_price=[$2], 
profit=[$3], return_amt=[$4], net_loss=[$5])
+                    HiveUnion(all=[true])
+                      HiveProject(store_sk=[$7], date_sk=[$0], 
sales_price=[$15], profit=[$22], return_amt=[CAST(0):DECIMAL(7, 2)], 
net_loss=[CAST(0):DECIMAL(7, 2)])
+                        HiveFilter(condition=[AND(IS NOT NULL($0), IS NOT 
NULL($7))])
+                          HiveTableScan(table=[[default, store_sales]], 
table:alias=[store_sales])
+                      HiveProject(store_sk=[$7], date_sk=[$0], 
sales_price=[CAST(0):DECIMAL(7, 2)], profit=[CAST(0):DECIMAL(7, 2)], 
return_amt=[$11], net_loss=[$19])
+                        HiveFilter(condition=[AND(IS NOT NULL($0), IS NOT 
NULL($7))])
+                          HiveTableScan(table=[[default, store_returns]], 
table:alias=[store_returns])
+                  HiveProject(d_date_sk=[$0], d_date=[$2])
+                    HiveFilter(condition=[AND(BETWEEN(false, 
CAST($2):TIMESTAMP(9), 1998-08-04 00:00:00, 1998-08-18 00:00:00), IS NOT 
NULL($0))])
+                      HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+                HiveProject(s_store_sk=[$0], s_store_id=[$1])
+                  HiveFilter(condition=[IS NOT NULL($0)])
+                    HiveTableScan(table=[[default, store]], 
table:alias=[store])
+          HiveProject(channel=[_UTF-16LE'catalog channel'], 
id=[||(_UTF-16LE'catalog_page', $0)], sales=[$1], returns=[$3], profit=[-($2, 
$4)])
+            HiveAggregate(group=[{1}], agg#0=[sum($4)], agg#1=[sum($5)], 
agg#2=[sum($6)], agg#3=[sum($7)])
+              HiveJoin(condition=[=($2, $0)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                HiveProject(cp_catalog_page_sk=[$0], cp_catalog_page_id=[$1])
+                  HiveFilter(condition=[IS NOT NULL($0)])
+                    HiveTableScan(table=[[default, catalog_page]], 
table:alias=[catalog_page])
+                HiveJoin(condition=[=($1, $6)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                  HiveProject(page_sk=[$0], date_sk=[$1], sales_price=[$2], 
profit=[$3], return_amt=[$4], net_loss=[$5])
+                    HiveUnion(all=[true])
+                      HiveProject(page_sk=[$12], date_sk=[$0], 
sales_price=[$23], profit=[$33], return_amt=[CAST(0):DECIMAL(7, 2)], 
net_loss=[CAST(0):DECIMAL(7, 2)])
+                        HiveFilter(condition=[AND(IS NOT NULL($0), IS NOT 
NULL($12))])
+                          HiveTableScan(table=[[default, catalog_sales]], 
table:alias=[catalog_sales])
+                      HiveProject(page_sk=[$12], date_sk=[$0], 
sales_price=[CAST(0):DECIMAL(7, 2)], profit=[CAST(0):DECIMAL(7, 2)], 
return_amt=[$18], net_loss=[$26])
+                        HiveFilter(condition=[AND(IS NOT NULL($0), IS NOT 
NULL($12))])
+                          HiveTableScan(table=[[default, catalog_returns]], 
table:alias=[catalog_returns])
+                  HiveProject(d_date_sk=[$0], d_date=[$2])
+                    HiveFilter(condition=[AND(BETWEEN(false, 
CAST($2):TIMESTAMP(9), 1998-08-04 00:00:00, 1998-08-18 00:00:00), IS NOT 
NULL($0))])
+                      HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+          HiveProject(channel=[_UTF-16LE'web channel'], 
id=[||(_UTF-16LE'web_site', $0)], sales=[$1], returns=[$3], profit=[-($2, $4)])
+            HiveAggregate(group=[{9}], agg#0=[sum($2)], agg#1=[sum($3)], 
agg#2=[sum($4)], agg#3=[sum($5)])
+              HiveJoin(condition=[=($0, $8)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                HiveJoin(condition=[=($1, $6)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                  HiveProject(wsr_web_site_sk=[$0], date_sk=[$1], 
sales_price=[$2], profit=[$3], return_amt=[$4], net_loss=[$5])
+                    HiveUnion(all=[true])
+                      HiveProject(wsr_web_site_sk=[$13], date_sk=[$0], 
sales_price=[$23], profit=[$33], return_amt=[CAST(0):DECIMAL(7, 2)], 
net_loss=[CAST(0):DECIMAL(7, 2)])
+                        HiveFilter(condition=[AND(IS NOT NULL($0), IS NOT 
NULL($13))])
+                          HiveTableScan(table=[[default, web_sales]], 
table:alias=[web_sales])
+                      HiveProject(wsr_web_site_sk=[$1], date_sk=[$3], 
sales_price=[CAST(0):DECIMAL(7, 2)], profit=[CAST(0):DECIMAL(7, 2)], 
return_amt=[$6], net_loss=[$7])
+                        HiveJoin(condition=[AND(=($4, $0), =($5, $2))], 
joinType=[inner], algorithm=[none], cost=[not available])
+                          HiveProject(ws_item_sk=[$3], ws_web_site_sk=[$13], 
ws_order_number=[$17])
+                            HiveFilter(condition=[AND(IS NOT NULL($13), IS NOT 
NULL($3), IS NOT NULL($17))])
+                              HiveTableScan(table=[[default, web_sales]], 
table:alias=[web_sales])
+                          HiveProject(wr_returned_date_sk=[$0], 
wr_item_sk=[$2], wr_order_number=[$13], wr_return_amt=[$15], wr_net_loss=[$23])
+                            HiveFilter(condition=[AND(IS NOT NULL($0), IS NOT 
NULL($2), IS NOT NULL($13))])
+                              HiveTableScan(table=[[default, web_returns]], 
table:alias=[web_returns])
+                  HiveProject(d_date_sk=[$0], d_date=[$2])
+                    HiveFilter(condition=[AND(BETWEEN(false, 
CAST($2):TIMESTAMP(9), 1998-08-04 00:00:00, 1998-08-18 00:00:00), IS NOT 
NULL($0))])
+                      HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+                HiveProject(web_site_sk=[$0], web_site_id=[$1])
+                  HiveFilter(condition=[IS NOT NULL($0)])
+                    HiveTableScan(table=[[default, web_site]], 
table:alias=[web_site])
+

http://git-wip-us.apache.org/repos/asf/hive/blob/b8299551/ql/src/test/results/clientpositive/perf/tez/cbo_query50.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query50.q.out 
b/ql/src/test/results/clientpositive/perf/tez/cbo_query50.q.out
new file mode 100644
index 0000000..2be59c1
--- /dev/null
+++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query50.q.out
@@ -0,0 +1,151 @@
+PREHOOK: query: explain cbo
+select  
+   s_store_name
+  ,s_company_id
+  ,s_street_number
+  ,s_street_name
+  ,s_street_type
+  ,s_suite_number
+  ,s_city
+  ,s_county
+  ,s_state
+  ,s_zip
+  ,sum(case when (sr_returned_date_sk - ss_sold_date_sk <= 30 ) then 1 else 0 
end)  as `30 days` 
+  ,sum(case when (sr_returned_date_sk - ss_sold_date_sk > 30) and 
+                 (sr_returned_date_sk - ss_sold_date_sk <= 60) then 1 else 0 
end )  as `31-60 days` 
+  ,sum(case when (sr_returned_date_sk - ss_sold_date_sk > 60) and 
+                 (sr_returned_date_sk - ss_sold_date_sk <= 90) then 1 else 0 
end)  as `61-90 days` 
+  ,sum(case when (sr_returned_date_sk - ss_sold_date_sk > 90) and
+                 (sr_returned_date_sk - ss_sold_date_sk <= 120) then 1 else 0 
end)  as `91-120 days` 
+  ,sum(case when (sr_returned_date_sk - ss_sold_date_sk  > 120) then 1 else 0 
end)  as `>120 days` 
+from
+   store_sales
+  ,store_returns
+  ,store
+  ,date_dim d1
+  ,date_dim d2
+where
+    d2.d_year = 2000
+and d2.d_moy  = 9
+and ss_ticket_number = sr_ticket_number
+and ss_item_sk = sr_item_sk
+and ss_sold_date_sk   = d1.d_date_sk
+and sr_returned_date_sk   = d2.d_date_sk
+and ss_customer_sk = sr_customer_sk
+and ss_store_sk = s_store_sk
+group by
+   s_store_name
+  ,s_company_id
+  ,s_street_number
+  ,s_street_name
+  ,s_street_type
+  ,s_suite_number
+  ,s_city
+  ,s_county
+  ,s_state
+  ,s_zip
+order by s_store_name
+        ,s_company_id
+        ,s_street_number
+        ,s_street_name
+        ,s_street_type
+        ,s_suite_number
+        ,s_city
+        ,s_county
+        ,s_state
+        ,s_zip
+limit 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@date_dim
+PREHOOK: Input: default@store
+PREHOOK: Input: default@store_returns
+PREHOOK: Input: default@store_sales
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: explain cbo
+select  
+   s_store_name
+  ,s_company_id
+  ,s_street_number
+  ,s_street_name
+  ,s_street_type
+  ,s_suite_number
+  ,s_city
+  ,s_county
+  ,s_state
+  ,s_zip
+  ,sum(case when (sr_returned_date_sk - ss_sold_date_sk <= 30 ) then 1 else 0 
end)  as `30 days` 
+  ,sum(case when (sr_returned_date_sk - ss_sold_date_sk > 30) and 
+                 (sr_returned_date_sk - ss_sold_date_sk <= 60) then 1 else 0 
end )  as `31-60 days` 
+  ,sum(case when (sr_returned_date_sk - ss_sold_date_sk > 60) and 
+                 (sr_returned_date_sk - ss_sold_date_sk <= 90) then 1 else 0 
end)  as `61-90 days` 
+  ,sum(case when (sr_returned_date_sk - ss_sold_date_sk > 90) and
+                 (sr_returned_date_sk - ss_sold_date_sk <= 120) then 1 else 0 
end)  as `91-120 days` 
+  ,sum(case when (sr_returned_date_sk - ss_sold_date_sk  > 120) then 1 else 0 
end)  as `>120 days` 
+from
+   store_sales
+  ,store_returns
+  ,store
+  ,date_dim d1
+  ,date_dim d2
+where
+    d2.d_year = 2000
+and d2.d_moy  = 9
+and ss_ticket_number = sr_ticket_number
+and ss_item_sk = sr_item_sk
+and ss_sold_date_sk   = d1.d_date_sk
+and sr_returned_date_sk   = d2.d_date_sk
+and ss_customer_sk = sr_customer_sk
+and ss_store_sk = s_store_sk
+group by
+   s_store_name
+  ,s_company_id
+  ,s_street_number
+  ,s_street_name
+  ,s_street_type
+  ,s_suite_number
+  ,s_city
+  ,s_county
+  ,s_state
+  ,s_zip
+order by s_store_name
+        ,s_company_id
+        ,s_street_number
+        ,s_street_name
+        ,s_street_type
+        ,s_suite_number
+        ,s_city
+        ,s_county
+        ,s_state
+        ,s_zip
+limit 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@date_dim
+POSTHOOK: Input: default@store
+POSTHOOK: Input: default@store_returns
+POSTHOOK: Input: default@store_sales
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+CBO PLAN:
+HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], sort4=[$4], 
sort5=[$5], sort6=[$6], sort7=[$7], sort8=[$8], sort9=[$9], dir0=[ASC], 
dir1=[ASC], dir2=[ASC], dir3=[ASC], dir4=[ASC], dir5=[ASC], dir6=[ASC], 
dir7=[ASC], dir8=[ASC], dir9=[ASC], fetch=[100])
+  HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3], $f4=[$4], $f5=[$5], 
$f6=[$6], $f7=[$7], $f8=[$8], $f9=[$9], $f10=[$10], $f11=[$11], $f12=[$12], 
$f13=[$13], $f14=[$14])
+    HiveAggregate(group=[{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}], agg#0=[sum($10)], 
agg#1=[sum($11)], agg#2=[sum($12)], agg#3=[sum($13)], agg#4=[sum($14)])
+      HiveProject($f0=[$14], $f1=[$15], $f2=[$16], $f3=[$17], $f4=[$18], 
$f5=[$19], $f6=[$20], $f7=[$21], $f8=[$22], $f9=[$23], $f10=[CASE(<=(-($5, $0), 
30), 1, 0)], $f11=[CASE(AND(>(-($5, $0), 30), <=(-($5, $0), 60)), 1, 0)], 
$f12=[CASE(AND(>(-($5, $0), 60), <=(-($5, $0), 90)), 1, 0)], 
$f13=[CASE(AND(>(-($5, $0), 90), <=(-($5, $0), 120)), 1, 0)], 
$f14=[CASE(>(-($5, $0), 120), 1, 0)])
+        HiveJoin(condition=[=($3, $13)], joinType=[inner], algorithm=[none], 
cost=[not available])
+          HiveJoin(condition=[=($0, $12)], joinType=[inner], algorithm=[none], 
cost=[not available])
+            HiveJoin(condition=[AND(AND(=($4, $8), =($1, $6)), =($2, $7))], 
joinType=[inner], algorithm=[none], cost=[not available])
+              HiveProject(ss_sold_date_sk=[$0], ss_item_sk=[$2], 
ss_customer_sk=[$3], ss_store_sk=[$7], ss_ticket_number=[$9])
+                HiveFilter(condition=[AND(IS NOT NULL($9), IS NOT NULL($2), IS 
NOT NULL($3), IS NOT NULL($7), IS NOT NULL($0))])
+                  HiveTableScan(table=[[default, store_sales]], 
table:alias=[store_sales])
+              HiveJoin(condition=[=($0, $4)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                HiveProject(sr_returned_date_sk=[$0], sr_item_sk=[$2], 
sr_customer_sk=[$3], sr_ticket_number=[$9])
+                  HiveFilter(condition=[AND(IS NOT NULL($9), IS NOT NULL($2), 
IS NOT NULL($3), IS NOT NULL($0))])
+                    HiveTableScan(table=[[default, store_returns]], 
table:alias=[store_returns])
+                HiveProject(d_date_sk=[$0], d_year=[CAST(2000):INTEGER], 
d_moy=[CAST(9):INTEGER])
+                  HiveFilter(condition=[AND(=($6, 2000), =($8, 9), IS NOT 
NULL($0))])
+                    HiveTableScan(table=[[default, date_dim]], 
table:alias=[d2])
+            HiveProject(d_date_sk=[$0])
+              HiveFilter(condition=[IS NOT NULL($0)])
+                HiveTableScan(table=[[default, date_dim]], table:alias=[d1])
+          HiveProject(s_store_sk=[$0], s_store_name=[$5], s_company_id=[$16], 
s_street_number=[$18], s_street_name=[$19], s_street_type=[$20], 
s_suite_number=[$21], s_city=[$22], s_county=[$23], s_state=[$24], s_zip=[$25])
+            HiveFilter(condition=[IS NOT NULL($0)])
+              HiveTableScan(table=[[default, store]], table:alias=[store])
+

http://git-wip-us.apache.org/repos/asf/hive/blob/b8299551/ql/src/test/results/clientpositive/perf/tez/cbo_query51.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query51.q.out 
b/ql/src/test/results/clientpositive/perf/tez/cbo_query51.q.out
new file mode 100644
index 0000000..fed8677
--- /dev/null
+++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query51.q.out
@@ -0,0 +1,125 @@
+PREHOOK: query: explain cbo
+WITH web_v1 as (
+select
+  ws_item_sk item_sk, d_date,
+  sum(sum(ws_sales_price))
+      over (partition by ws_item_sk order by d_date rows between unbounded 
preceding and current row) cume_sales
+from web_sales
+    ,date_dim
+where ws_sold_date_sk=d_date_sk
+  and d_month_seq between 1212 and 1212+11
+  and ws_item_sk is not NULL
+group by ws_item_sk, d_date),
+store_v1 as (
+select
+  ss_item_sk item_sk, d_date,
+  sum(sum(ss_sales_price))
+      over (partition by ss_item_sk order by d_date rows between unbounded 
preceding and current row) cume_sales
+from store_sales
+    ,date_dim
+where ss_sold_date_sk=d_date_sk
+  and d_month_seq between 1212 and 1212+11
+  and ss_item_sk is not NULL
+group by ss_item_sk, d_date)
+ select  *
+from (select item_sk
+     ,d_date
+     ,web_sales
+     ,store_sales
+     ,max(web_sales)
+         over (partition by item_sk order by d_date rows between unbounded 
preceding and current row) web_cumulative
+     ,max(store_sales)
+         over (partition by item_sk order by d_date rows between unbounded 
preceding and current row) store_cumulative
+     from (select case when web.item_sk is not null then web.item_sk else 
store.item_sk end item_sk
+                 ,case when web.d_date is not null then web.d_date else 
store.d_date end d_date
+                 ,web.cume_sales web_sales
+                 ,store.cume_sales store_sales
+           from web_v1 web full outer join store_v1 store on (web.item_sk = 
store.item_sk
+                                                          and web.d_date = 
store.d_date)
+          )x )y
+where web_cumulative > store_cumulative
+order by item_sk
+        ,d_date
+limit 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@date_dim
+PREHOOK: Input: default@store_sales
+PREHOOK: Input: default@web_sales
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: explain cbo
+WITH web_v1 as (
+select
+  ws_item_sk item_sk, d_date,
+  sum(sum(ws_sales_price))
+      over (partition by ws_item_sk order by d_date rows between unbounded 
preceding and current row) cume_sales
+from web_sales
+    ,date_dim
+where ws_sold_date_sk=d_date_sk
+  and d_month_seq between 1212 and 1212+11
+  and ws_item_sk is not NULL
+group by ws_item_sk, d_date),
+store_v1 as (
+select
+  ss_item_sk item_sk, d_date,
+  sum(sum(ss_sales_price))
+      over (partition by ss_item_sk order by d_date rows between unbounded 
preceding and current row) cume_sales
+from store_sales
+    ,date_dim
+where ss_sold_date_sk=d_date_sk
+  and d_month_seq between 1212 and 1212+11
+  and ss_item_sk is not NULL
+group by ss_item_sk, d_date)
+ select  *
+from (select item_sk
+     ,d_date
+     ,web_sales
+     ,store_sales
+     ,max(web_sales)
+         over (partition by item_sk order by d_date rows between unbounded 
preceding and current row) web_cumulative
+     ,max(store_sales)
+         over (partition by item_sk order by d_date rows between unbounded 
preceding and current row) store_cumulative
+     from (select case when web.item_sk is not null then web.item_sk else 
store.item_sk end item_sk
+                 ,case when web.d_date is not null then web.d_date else 
store.d_date end d_date
+                 ,web.cume_sales web_sales
+                 ,store.cume_sales store_sales
+           from web_v1 web full outer join store_v1 store on (web.item_sk = 
store.item_sk
+                                                          and web.d_date = 
store.d_date)
+          )x )y
+where web_cumulative > store_cumulative
+order by item_sk
+        ,d_date
+limit 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@date_dim
+POSTHOOK: Input: default@store_sales
+POSTHOOK: Input: default@web_sales
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+CBO PLAN:
+HiveSortLimit(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC], fetch=[100])
+  HiveProject(item_sk=[$0], d_date=[$1], web_sales=[$2], store_sales=[$3], 
max_window_0=[$4], max_window_1=[$5])
+    HiveFilter(condition=[>($4, $5)])
+      HiveProject(item_sk=[CASE(IS NOT NULL($3), $3, $0)], d_date=[CASE(IS NOT 
NULL($4), $4, $1)], web_sales=[$5], store_sales=[$2], max_window_0=[max($5) 
OVER (PARTITION BY CASE(IS NOT NULL($3), $3, $0) ORDER BY CASE(IS NOT NULL($4), 
$4, $1) NULLS LAST ROWS BETWEEN CURRENT ROW AND 2147483647 PRECEDING)], 
max_window_1=[max($2) OVER (PARTITION BY CASE(IS NOT NULL($3), $3, $0) ORDER BY 
CASE(IS NOT NULL($4), $4, $1) NULLS LAST ROWS BETWEEN CURRENT ROW AND 
2147483647 PRECEDING)])
+        HiveJoin(condition=[AND(=($3, $0), =($4, $1))], joinType=[full], 
algorithm=[none], cost=[not available])
+          HiveProject((tok_table_or_col ss_item_sk)=[$0], (tok_table_or_col 
d_date)=[$1], sum_window_0=[$2])
+            HiveProject((tok_table_or_col ss_item_sk)=[$0], (tok_table_or_col 
d_date)=[$1], sum_window_0=[sum($2) OVER (PARTITION BY $0 ORDER BY $1 NULLS 
LAST ROWS BETWEEN CURRENT ROW AND 2147483647 PRECEDING)], window_col_0=[$2])
+              HiveProject(ss_item_sk=[$0], d_date=[$1], $f2=[$2])
+                HiveAggregate(group=[{1, 4}], agg#0=[sum($2)])
+                  HiveJoin(condition=[=($0, $3)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                    HiveProject(ss_sold_date_sk=[$0], ss_item_sk=[$2], 
ss_sales_price=[$13])
+                      HiveFilter(condition=[AND(IS NOT NULL($2), IS NOT 
NULL($0))])
+                        HiveTableScan(table=[[default, store_sales]], 
table:alias=[store_sales])
+                    HiveProject(d_date_sk=[$0], d_date=[$2], d_month_seq=[$3])
+                      HiveFilter(condition=[AND(BETWEEN(false, $3, 1212, 
1223), IS NOT NULL($0))])
+                        HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+          HiveProject((tok_table_or_col ws_item_sk)=[$0], (tok_table_or_col 
d_date)=[$1], sum_window_0=[$2])
+            HiveProject((tok_table_or_col ws_item_sk)=[$0], (tok_table_or_col 
d_date)=[$1], sum_window_0=[sum($2) OVER (PARTITION BY $0 ORDER BY $1 NULLS 
LAST ROWS BETWEEN CURRENT ROW AND 2147483647 PRECEDING)], window_col_0=[$2])
+              HiveProject(ws_item_sk=[$0], d_date=[$1], $f2=[$2])
+                HiveAggregate(group=[{1, 4}], agg#0=[sum($2)])
+                  HiveJoin(condition=[=($0, $3)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                    HiveProject(ws_sold_date_sk=[$0], ws_item_sk=[$3], 
ws_sales_price=[$21])
+                      HiveFilter(condition=[AND(IS NOT NULL($3), IS NOT 
NULL($0))])
+                        HiveTableScan(table=[[default, web_sales]], 
table:alias=[web_sales])
+                    HiveProject(d_date_sk=[$0], d_date=[$2], d_month_seq=[$3])
+                      HiveFilter(condition=[AND(BETWEEN(false, $3, 1212, 
1223), IS NOT NULL($0))])
+                        HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+

http://git-wip-us.apache.org/repos/asf/hive/blob/b8299551/ql/src/test/results/clientpositive/perf/tez/cbo_query52.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query52.q.out 
b/ql/src/test/results/clientpositive/perf/tez/cbo_query52.q.out
new file mode 100644
index 0000000..627b8b0
--- /dev/null
+++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query52.q.out
@@ -0,0 +1,67 @@
+PREHOOK: query: explain cbo
+select  dt.d_year
+       ,item.i_brand_id brand_id
+       ,item.i_brand brand
+       ,sum(ss_ext_sales_price) ext_price
+ from date_dim dt
+     ,store_sales
+     ,item
+ where dt.d_date_sk = store_sales.ss_sold_date_sk
+    and store_sales.ss_item_sk = item.i_item_sk
+    and item.i_manager_id = 1
+    and dt.d_moy=12
+    and dt.d_year=1998
+ group by dt.d_year
+       ,item.i_brand
+       ,item.i_brand_id
+ order by dt.d_year
+       ,ext_price desc
+       ,brand_id
+limit 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@date_dim
+PREHOOK: Input: default@item
+PREHOOK: Input: default@store_sales
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: explain cbo
+select  dt.d_year
+       ,item.i_brand_id brand_id
+       ,item.i_brand brand
+       ,sum(ss_ext_sales_price) ext_price
+ from date_dim dt
+     ,store_sales
+     ,item
+ where dt.d_date_sk = store_sales.ss_sold_date_sk
+    and store_sales.ss_item_sk = item.i_item_sk
+    and item.i_manager_id = 1
+    and dt.d_moy=12
+    and dt.d_year=1998
+ group by dt.d_year
+       ,item.i_brand
+       ,item.i_brand_id
+ order by dt.d_year
+       ,ext_price desc
+       ,brand_id
+limit 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@date_dim
+POSTHOOK: Input: default@item
+POSTHOOK: Input: default@store_sales
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+CBO PLAN:
+HiveProject(d_year=[CAST(1998):INTEGER], brand_id=[$0], brand=[$1], 
ext_price=[$2])
+  HiveSortLimit(sort0=[$2], sort1=[$0], dir0=[DESC-nulls-last], dir1=[ASC], 
fetch=[100])
+    HiveProject(i_brand_id=[$0], i_brand=[$1], $f2=[$2])
+      HiveAggregate(group=[{7, 8}], agg#0=[sum($2)])
+        HiveJoin(condition=[=($1, $6)], joinType=[inner], algorithm=[none], 
cost=[not available])
+          HiveJoin(condition=[=($3, $0)], joinType=[inner], algorithm=[none], 
cost=[not available])
+            HiveProject(ss_sold_date_sk=[$0], ss_item_sk=[$2], 
ss_ext_sales_price=[$15])
+              HiveFilter(condition=[AND(IS NOT NULL($0), IS NOT NULL($2))])
+                HiveTableScan(table=[[default, store_sales]], 
table:alias=[store_sales])
+            HiveProject(d_date_sk=[$0], d_year=[CAST(1998):INTEGER], 
d_moy=[CAST(12):INTEGER])
+              HiveFilter(condition=[AND(=($8, 12), =($6, 1998), IS NOT 
NULL($0))])
+                HiveTableScan(table=[[default, date_dim]], table:alias=[dt])
+          HiveProject(i_item_sk=[$0], i_brand_id=[$7], i_brand=[$8], 
i_manager_id=[CAST(1):INTEGER])
+            HiveFilter(condition=[AND(=($20, 1), IS NOT NULL($0))])
+              HiveTableScan(table=[[default, item]], table:alias=[item])
+

http://git-wip-us.apache.org/repos/asf/hive/blob/b8299551/ql/src/test/results/clientpositive/perf/tez/cbo_query53.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query53.q.out 
b/ql/src/test/results/clientpositive/perf/tez/cbo_query53.q.out
new file mode 100644
index 0000000..56b1ba2
--- /dev/null
+++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query53.q.out
@@ -0,0 +1,87 @@
+PREHOOK: query: explain cbo
+select  * from 
+(select i_manufact_id,
+sum(ss_sales_price) sum_sales,
+avg(sum(ss_sales_price)) over (partition by i_manufact_id) avg_quarterly_sales
+from item, store_sales, date_dim, store
+where ss_item_sk = i_item_sk and
+ss_sold_date_sk = d_date_sk and
+ss_store_sk = s_store_sk and
+d_month_seq in 
(1212,1212+1,1212+2,1212+3,1212+4,1212+5,1212+6,1212+7,1212+8,1212+9,1212+10,1212+11)
 and
+((i_category in ('Books','Children','Electronics') and
+i_class in ('personal','portable','reference','self-help') and
+i_brand in ('scholaramalgamalg #14','scholaramalgamalg #7',
+               'exportiunivamalg #9','scholaramalgamalg #9'))
+or(i_category in ('Women','Music','Men') and
+i_class in ('accessories','classical','fragrances','pants') and
+i_brand in ('amalgimporto #1','edu packscholar #1','exportiimporto #1',
+               'importoamalg #1')))
+group by i_manufact_id, d_qoy ) tmp1
+where case when avg_quarterly_sales > 0 
+       then abs (sum_sales - avg_quarterly_sales)/ avg_quarterly_sales 
+       else null end > 0.1
+order by avg_quarterly_sales,
+        sum_sales,
+        i_manufact_id
+limit 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@date_dim
+PREHOOK: Input: default@item
+PREHOOK: Input: default@store
+PREHOOK: Input: default@store_sales
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: explain cbo
+select  * from 
+(select i_manufact_id,
+sum(ss_sales_price) sum_sales,
+avg(sum(ss_sales_price)) over (partition by i_manufact_id) avg_quarterly_sales
+from item, store_sales, date_dim, store
+where ss_item_sk = i_item_sk and
+ss_sold_date_sk = d_date_sk and
+ss_store_sk = s_store_sk and
+d_month_seq in 
(1212,1212+1,1212+2,1212+3,1212+4,1212+5,1212+6,1212+7,1212+8,1212+9,1212+10,1212+11)
 and
+((i_category in ('Books','Children','Electronics') and
+i_class in ('personal','portable','reference','self-help') and
+i_brand in ('scholaramalgamalg #14','scholaramalgamalg #7',
+               'exportiunivamalg #9','scholaramalgamalg #9'))
+or(i_category in ('Women','Music','Men') and
+i_class in ('accessories','classical','fragrances','pants') and
+i_brand in ('amalgimporto #1','edu packscholar #1','exportiimporto #1',
+               'importoamalg #1')))
+group by i_manufact_id, d_qoy ) tmp1
+where case when avg_quarterly_sales > 0 
+       then abs (sum_sales - avg_quarterly_sales)/ avg_quarterly_sales 
+       else null end > 0.1
+order by avg_quarterly_sales,
+        sum_sales,
+        i_manufact_id
+limit 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@date_dim
+POSTHOOK: Input: default@item
+POSTHOOK: Input: default@store
+POSTHOOK: Input: default@store_sales
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+CBO PLAN:
+HiveSortLimit(sort0=[$2], sort1=[$1], sort2=[$0], dir0=[ASC], dir1=[ASC], 
dir2=[ASC], fetch=[100])
+  HiveProject((tok_table_or_col i_manufact_id)=[$0], (tok_function sum 
(tok_table_or_col ss_sales_price))=[$1], avg_window_0=[$2])
+    HiveFilter(condition=[CASE(>($2, 0), >(/(ABS(-($1, $2)), $2), 0.1), null)])
+      HiveProject((tok_table_or_col i_manufact_id)=[$0], (tok_function sum 
(tok_table_or_col ss_sales_price))=[$2], avg_window_0=[avg($2) OVER (PARTITION 
BY $0 ORDER BY $0 NULLS FIRST ROWS BETWEEN 2147483647 FOLLOWING AND 2147483647 
PRECEDING)])
+        HiveProject(i_manufact_id=[$0], d_qoy=[$1], $f2=[$2])
+          HiveAggregate(group=[{9, 12}], agg#0=[sum($4)])
+            HiveJoin(condition=[=($3, $0)], joinType=[inner], 
algorithm=[none], cost=[not available])
+              HiveProject(s_store_sk=[$0])
+                HiveFilter(condition=[IS NOT NULL($0)])
+                  HiveTableScan(table=[[default, store]], table:alias=[store])
+              HiveJoin(condition=[=($0, $9)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                HiveJoin(condition=[=($1, $4)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                  HiveProject(ss_sold_date_sk=[$0], ss_item_sk=[$2], 
ss_store_sk=[$7], ss_sales_price=[$13])
+                    HiveFilter(condition=[AND(IS NOT NULL($2), IS NOT 
NULL($0), IS NOT NULL($7))])
+                      HiveTableScan(table=[[default, store_sales]], 
table:alias=[store_sales])
+                  HiveProject(i_item_sk=[$0], i_brand=[$8], i_class=[$10], 
i_category=[$12], i_manufact_id=[$13])
+                    HiveFilter(condition=[AND(IN($10, _UTF-16LE'personal', 
_UTF-16LE'portable', _UTF-16LE'reference', _UTF-16LE'self-help', 
_UTF-16LE'accessories', _UTF-16LE'classical', _UTF-16LE'fragrances', 
_UTF-16LE'pants'), IN($8, _UTF-16LE'scholaramalgamalg #14', 
_UTF-16LE'scholaramalgamalg #7', _UTF-16LE'exportiunivamalg #9', 
_UTF-16LE'scholaramalgamalg #9', _UTF-16LE'amalgimporto #1', _UTF-16LE'edu 
packscholar #1', _UTF-16LE'exportiimporto #1', _UTF-16LE'importoamalg #1'), 
IN($12, _UTF-16LE'Books', _UTF-16LE'Children', _UTF-16LE'Electronics', 
_UTF-16LE'Women', _UTF-16LE'Music', _UTF-16LE'Men'), OR(AND(IN($12, 
_UTF-16LE'Books', _UTF-16LE'Children', _UTF-16LE'Electronics'), IN($10, 
_UTF-16LE'personal', _UTF-16LE'portable', _UTF-16LE'reference', 
_UTF-16LE'self-help'), IN($8, _UTF-16LE'scholaramalgamalg #14', 
_UTF-16LE'scholaramalgamalg #7', _UTF-16LE'exportiunivamalg #9', 
_UTF-16LE'scholaramalgamalg #9')), AND(IN($12, _UTF-16LE'Women', 
_UTF-16LE'Music', _UTF-16LE'Men'), IN($10, 
 _UTF-16LE'accessories', _UTF-16LE'classical', _UTF-16LE'fragrances', 
_UTF-16LE'pants'), IN($8, _UTF-16LE'amalgimporto #1', _UTF-16LE'edu packscholar 
#1', _UTF-16LE'exportiimporto #1', _UTF-16LE'importoamalg #1'))), IS NOT 
NULL($0))])
+                      HiveTableScan(table=[[default, item]], 
table:alias=[item])
+                HiveProject(d_date_sk=[$0], d_month_seq=[$3], d_qoy=[$10])
+                  HiveFilter(condition=[AND(IN($3, 1212, 1213, 1214, 1215, 
1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223), IS NOT NULL($0))])
+                    HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+

http://git-wip-us.apache.org/repos/asf/hive/blob/b8299551/ql/src/test/results/clientpositive/perf/tez/cbo_query54.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query54.q.out 
b/ql/src/test/results/clientpositive/perf/tez/cbo_query54.q.out
new file mode 100644
index 0000000..eaf2536
--- /dev/null
+++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query54.q.out
@@ -0,0 +1,213 @@
+Warning: Shuffle Join MERGEJOIN[271][tables = [$hdt$_0, $hdt$_1, $hdt$_2, 
$hdt$_3]] in Stage 'Reducer 4' is a cross product
+Warning: Shuffle Join MERGEJOIN[272][tables = [$hdt$_0, $hdt$_1, $hdt$_2, 
$hdt$_3, $hdt$_4]] in Stage 'Reducer 5' is a cross product
+Warning: Shuffle Join MERGEJOIN[270][tables = [$hdt$_1, $hdt$_2]] in Stage 
'Reducer 32' is a cross product
+Warning: Shuffle Join MERGEJOIN[273][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in 
Stage 'Reducer 6' is a cross product
+PREHOOK: query: explain cbo
+with my_customers as (
+ select distinct c_customer_sk
+        , c_current_addr_sk
+ from   
+        ( select cs_sold_date_sk sold_date_sk,
+                 cs_bill_customer_sk customer_sk,
+                 cs_item_sk item_sk
+          from   catalog_sales
+          union all
+          select ws_sold_date_sk sold_date_sk,
+                 ws_bill_customer_sk customer_sk,
+                 ws_item_sk item_sk
+          from   web_sales
+         ) cs_or_ws_sales,
+         item,
+         date_dim,
+         customer
+ where   sold_date_sk = d_date_sk
+         and item_sk = i_item_sk
+         and i_category = 'Jewelry'
+         and i_class = 'consignment'
+         and c_customer_sk = cs_or_ws_sales.customer_sk
+         and d_moy = 3
+         and d_year = 1999
+ )
+ , my_revenue as (
+ select c_customer_sk,
+        sum(ss_ext_sales_price) as revenue
+ from   my_customers,
+        store_sales,
+        customer_address,
+        store,
+        date_dim
+ where  c_current_addr_sk = ca_address_sk
+        and ca_county = s_county
+        and ca_state = s_state
+        and ss_sold_date_sk = d_date_sk
+        and c_customer_sk = ss_customer_sk
+        and d_month_seq between (select distinct d_month_seq+1
+                                 from   date_dim where d_year = 1999 and d_moy 
= 3)
+                           and  (select distinct d_month_seq+3
+                                 from   date_dim where d_year = 1999 and d_moy 
= 3)
+ group by c_customer_sk
+ )
+ , segments as
+ (select cast((revenue/50) as int) as segment
+  from   my_revenue
+ )
+  select  segment, count(*) as num_customers, segment*50 as segment_base
+ from segments
+ group by segment
+ order by segment, num_customers
+ limit 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@catalog_sales
+PREHOOK: Input: default@customer
+PREHOOK: Input: default@customer_address
+PREHOOK: Input: default@date_dim
+PREHOOK: Input: default@item
+PREHOOK: Input: default@store
+PREHOOK: Input: default@store_sales
+PREHOOK: Input: default@web_sales
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: explain cbo
+with my_customers as (
+ select distinct c_customer_sk
+        , c_current_addr_sk
+ from   
+        ( select cs_sold_date_sk sold_date_sk,
+                 cs_bill_customer_sk customer_sk,
+                 cs_item_sk item_sk
+          from   catalog_sales
+          union all
+          select ws_sold_date_sk sold_date_sk,
+                 ws_bill_customer_sk customer_sk,
+                 ws_item_sk item_sk
+          from   web_sales
+         ) cs_or_ws_sales,
+         item,
+         date_dim,
+         customer
+ where   sold_date_sk = d_date_sk
+         and item_sk = i_item_sk
+         and i_category = 'Jewelry'
+         and i_class = 'consignment'
+         and c_customer_sk = cs_or_ws_sales.customer_sk
+         and d_moy = 3
+         and d_year = 1999
+ )
+ , my_revenue as (
+ select c_customer_sk,
+        sum(ss_ext_sales_price) as revenue
+ from   my_customers,
+        store_sales,
+        customer_address,
+        store,
+        date_dim
+ where  c_current_addr_sk = ca_address_sk
+        and ca_county = s_county
+        and ca_state = s_state
+        and ss_sold_date_sk = d_date_sk
+        and c_customer_sk = ss_customer_sk
+        and d_month_seq between (select distinct d_month_seq+1
+                                 from   date_dim where d_year = 1999 and d_moy 
= 3)
+                           and  (select distinct d_month_seq+3
+                                 from   date_dim where d_year = 1999 and d_moy 
= 3)
+ group by c_customer_sk
+ )
+ , segments as
+ (select cast((revenue/50) as int) as segment
+  from   my_revenue
+ )
+  select  segment, count(*) as num_customers, segment*50 as segment_base
+ from segments
+ group by segment
+ order by segment, num_customers
+ limit 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@catalog_sales
+POSTHOOK: Input: default@customer
+POSTHOOK: Input: default@customer_address
+POSTHOOK: Input: default@date_dim
+POSTHOOK: Input: default@item
+POSTHOOK: Input: default@store
+POSTHOOK: Input: default@store_sales
+POSTHOOK: Input: default@web_sales
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+CBO PLAN:
+HiveSortLimit(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC], fetch=[100])
+  HiveProject(segment=[$0], num_customers=[$1], segment_base=[*($0, 50)])
+    HiveAggregate(group=[{0}], agg#0=[count()])
+      HiveProject(segment=[CAST(/($1, CAST(50):DECIMAL(10, 0))):INTEGER])
+        HiveAggregate(group=[{0}], agg#0=[sum($1)])
+          HiveFilter(condition=[BETWEEN(false, $2, $3, $4)])
+            HiveProject(c_customer_sk=[$0], ss_ext_sales_price=[$4], 
d_month_seq=[$11], _o__c0=[$13], $f0=[$14])
+              HiveJoin(condition=[true], joinType=[inner], algorithm=[none], 
cost=[not available])
+                HiveProject($f0=[$10], $f1=[$11], ss_sold_date_sk=[$0], 
ss_customer_sk=[$1], ss_ext_sales_price=[$2], ca_address_sk=[$5], 
ca_county=[$6], ca_state=[$7], s_county=[$8], s_state=[$9], d_date_sk=[$3], 
d_month_seq=[$4], cnt=[$12], $f00=[$13])
+                  HiveJoin(condition=[true], joinType=[left], 
algorithm=[none], cost=[not available])
+                    HiveJoin(condition=[true], joinType=[inner], 
algorithm=[none], cost=[not available])
+                      HiveJoin(condition=[=($10, $1)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                        HiveJoin(condition=[=($0, $3)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                          HiveProject(ss_sold_date_sk=[$0], 
ss_customer_sk=[$3], ss_ext_sales_price=[$15])
+                            HiveFilter(condition=[AND(IS NOT NULL($3), IS NOT 
NULL($0))])
+                              HiveTableScan(table=[[default, store_sales]], 
table:alias=[store_sales])
+                          HiveProject(d_date_sk=[$0], d_month_seq=[$3])
+                            HiveFilter(condition=[IS NOT NULL($0)])
+                              HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+                        HiveProject(ca_address_sk=[$0], ca_county=[$1], 
ca_state=[$2], s_county=[$3], s_state=[$4], c_customer_sk=[$5], 
c_current_addr_sk=[$6])
+                          HiveJoin(condition=[=($6, $0)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                            HiveJoin(condition=[AND(=($1, $3), =($2, $4))], 
joinType=[inner], algorithm=[none], cost=[not available])
+                              HiveProject(ca_address_sk=[$0], ca_county=[$7], 
ca_state=[$8])
+                                HiveFilter(condition=[AND(IS NOT NULL($0), IS 
NOT NULL($7), IS NOT NULL($8))])
+                                  HiveTableScan(table=[[default, 
customer_address]], table:alias=[customer_address])
+                              HiveProject(s_county=[$23], s_state=[$24])
+                                HiveFilter(condition=[AND(IS NOT NULL($23), IS 
NOT NULL($24))])
+                                  HiveTableScan(table=[[default, store]], 
table:alias=[store])
+                            HiveProject(c_customer_sk=[$0], 
c_current_addr_sk=[$1])
+                              HiveAggregate(group=[{0, 1}])
+                                HiveJoin(condition=[=($0, $3)], 
joinType=[inner], algorithm=[none], cost=[not available])
+                                  HiveProject(c_customer_sk=[$0], 
c_current_addr_sk=[$4])
+                                    HiveFilter(condition=[AND(IS NOT NULL($0), 
IS NOT NULL($4))])
+                                      HiveTableScan(table=[[default, 
customer]], table:alias=[customer])
+                                  HiveJoin(condition=[=($2, $6)], 
joinType=[inner], algorithm=[none], cost=[not available])
+                                    HiveJoin(condition=[=($0, $3)], 
joinType=[inner], algorithm=[none], cost=[not available])
+                                      HiveProject(cs_sold_date_sk=[$0], 
cs_bill_customer_sk=[$1], cs_item_sk=[$2])
+                                        HiveUnion(all=[true])
+                                          HiveProject(cs_sold_date_sk=[$0], 
cs_bill_customer_sk=[$3], cs_item_sk=[$15])
+                                            HiveFilter(condition=[AND(IS NOT 
NULL($15), IS NOT NULL($0), IS NOT NULL($3))])
+                                              HiveTableScan(table=[[default, 
catalog_sales]], table:alias=[catalog_sales])
+                                          HiveProject(sold_date_sk=[$0], 
customer_sk=[$4], item_sk=[$3])
+                                            HiveFilter(condition=[AND(IS NOT 
NULL($3), IS NOT NULL($0), IS NOT NULL($4))])
+                                              HiveTableScan(table=[[default, 
web_sales]], table:alias=[web_sales])
+                                      HiveProject(d_date_sk=[$0], 
d_year=[CAST(1999):INTEGER], d_moy=[CAST(3):INTEGER])
+                                        HiveFilter(condition=[AND(=($8, 3), 
=($6, 1999), IS NOT NULL($0))])
+                                          HiveTableScan(table=[[default, 
date_dim]], table:alias=[date_dim])
+                                    HiveProject(i_item_sk=[$0], 
i_class=[CAST(_UTF-16LE'consignment'):VARCHAR(2147483647) CHARACTER SET 
"UTF-16LE" COLLATE "ISO-8859-1$en_US$primary"], 
i_category=[CAST(_UTF-16LE'Jewelry'):VARCHAR(2147483647) CHARACTER SET 
"UTF-16LE" COLLATE "ISO-8859-1$en_US$primary"])
+                                      HiveFilter(condition=[AND(=($12, 
_UTF-16LE'Jewelry'), =($10, _UTF-16LE'consignment'), IS NOT NULL($0))])
+                                        HiveTableScan(table=[[default, item]], 
table:alias=[item])
+                      HiveProject(cnt=[$0])
+                        HiveFilter(condition=[<=(sq_count_check($0), 1)])
+                          HiveProject(cnt=[$0])
+                            HiveAggregate(group=[{}], cnt=[COUNT()])
+                              HiveProject($f0=[$0])
+                                HiveAggregate(group=[{0}])
+                                  HiveProject($f0=[+($3, 1)])
+                                    HiveFilter(condition=[AND(=($6, 1999), 
=($8, 3))])
+                                      HiveTableScan(table=[[default, 
date_dim]], table:alias=[date_dim])
+                    HiveProject($f0=[$0])
+                      HiveAggregate(group=[{0}])
+                        HiveProject($f0=[+($3, 1)])
+                          HiveFilter(condition=[AND(=($6, 1999), =($8, 3))])
+                            HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+                HiveJoin(condition=[true], joinType=[right], algorithm=[none], 
cost=[not available])
+                  HiveProject($f0=[$0])
+                    HiveAggregate(group=[{0}])
+                      HiveProject($f0=[+($3, 3)])
+                        HiveFilter(condition=[AND(=($6, 1999), =($8, 3))])
+                          HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+                  HiveProject(cnt=[$0])
+                    HiveFilter(condition=[<=(sq_count_check($0), 1)])
+                      HiveProject(cnt=[$0])
+                        HiveAggregate(group=[{}], cnt=[COUNT()])
+                          HiveProject($f0=[$0])
+                            HiveAggregate(group=[{0}])
+                              HiveProject($f0=[+($3, 3)])
+                                HiveFilter(condition=[AND(=($6, 1999), =($8, 
3))])
+                                  HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+

http://git-wip-us.apache.org/repos/asf/hive/blob/b8299551/ql/src/test/results/clientpositive/perf/tez/cbo_query55.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query55.q.out 
b/ql/src/test/results/clientpositive/perf/tez/cbo_query55.q.out
new file mode 100644
index 0000000..4182de0
--- /dev/null
+++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query55.q.out
@@ -0,0 +1,51 @@
+PREHOOK: query: explain cbo
+select  i_brand_id brand_id, i_brand brand,
+       sum(ss_ext_sales_price) ext_price
+ from date_dim, store_sales, item
+ where d_date_sk = ss_sold_date_sk
+       and ss_item_sk = i_item_sk
+       and i_manager_id=36
+       and d_moy=12
+       and d_year=2001
+ group by i_brand, i_brand_id
+ order by ext_price desc, i_brand_id
+limit 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@date_dim
+PREHOOK: Input: default@item
+PREHOOK: Input: default@store_sales
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: explain cbo
+select  i_brand_id brand_id, i_brand brand,
+       sum(ss_ext_sales_price) ext_price
+ from date_dim, store_sales, item
+ where d_date_sk = ss_sold_date_sk
+       and ss_item_sk = i_item_sk
+       and i_manager_id=36
+       and d_moy=12
+       and d_year=2001
+ group by i_brand, i_brand_id
+ order by ext_price desc, i_brand_id
+limit 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@date_dim
+POSTHOOK: Input: default@item
+POSTHOOK: Input: default@store_sales
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+CBO PLAN:
+HiveProject(brand_id=[$0], brand=[$1], ext_price=[$2])
+  HiveSortLimit(sort0=[$2], sort1=[$3], dir0=[DESC-nulls-last], dir1=[ASC], 
fetch=[100])
+    HiveProject(brand_id=[$0], brand=[$1], ext_price=[$2], (tok_table_or_col 
i_brand_id)=[$0])
+      HiveAggregate(group=[{7, 8}], agg#0=[sum($2)])
+        HiveJoin(condition=[=($1, $6)], joinType=[inner], algorithm=[none], 
cost=[not available])
+          HiveJoin(condition=[=($3, $0)], joinType=[inner], algorithm=[none], 
cost=[not available])
+            HiveProject(ss_sold_date_sk=[$0], ss_item_sk=[$2], 
ss_ext_sales_price=[$15])
+              HiveFilter(condition=[AND(IS NOT NULL($0), IS NOT NULL($2))])
+                HiveTableScan(table=[[default, store_sales]], 
table:alias=[store_sales])
+            HiveProject(d_date_sk=[$0], d_year=[CAST(2001):INTEGER], 
d_moy=[CAST(12):INTEGER])
+              HiveFilter(condition=[AND(=($8, 12), =($6, 2001), IS NOT 
NULL($0))])
+                HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+          HiveProject(i_item_sk=[$0], i_brand_id=[$7], i_brand=[$8], 
i_manager_id=[CAST(36):INTEGER])
+            HiveFilter(condition=[AND(=($20, 36), IS NOT NULL($0))])
+              HiveTableScan(table=[[default, item]], table:alias=[item])
+

http://git-wip-us.apache.org/repos/asf/hive/blob/b8299551/ql/src/test/results/clientpositive/perf/tez/cbo_query56.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query56.q.out 
b/ql/src/test/results/clientpositive/perf/tez/cbo_query56.q.out
new file mode 100644
index 0000000..579d06a
--- /dev/null
+++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query56.q.out
@@ -0,0 +1,224 @@
+PREHOOK: query: explain cbo
+with ss as (
+ select i_item_id,sum(ss_ext_sales_price) total_sales
+ from
+       store_sales,
+       date_dim,
+         customer_address,
+         item
+ where i_item_id in (select
+     i_item_id
+from item
+where i_color in ('orchid','chiffon','lace'))
+ and     ss_item_sk              = i_item_sk
+ and     ss_sold_date_sk         = d_date_sk
+ and     d_year                  = 2000
+ and     d_moy                   = 1
+ and     ss_addr_sk              = ca_address_sk
+ and     ca_gmt_offset           = -8 
+ group by i_item_id),
+ cs as (
+ select i_item_id,sum(cs_ext_sales_price) total_sales
+ from
+       catalog_sales,
+       date_dim,
+         customer_address,
+         item
+ where
+         i_item_id               in (select
+  i_item_id
+from item
+where i_color in ('orchid','chiffon','lace'))
+ and     cs_item_sk              = i_item_sk
+ and     cs_sold_date_sk         = d_date_sk
+ and     d_year                  = 2000
+ and     d_moy                   = 1
+ and     cs_bill_addr_sk         = ca_address_sk
+ and     ca_gmt_offset           = -8 
+ group by i_item_id),
+ ws as (
+ select i_item_id,sum(ws_ext_sales_price) total_sales
+ from
+       web_sales,
+       date_dim,
+         customer_address,
+         item
+ where
+         i_item_id               in (select
+  i_item_id
+from item
+where i_color in ('orchid','chiffon','lace'))
+ and     ws_item_sk              = i_item_sk
+ and     ws_sold_date_sk         = d_date_sk
+ and     d_year                  = 2000
+ and     d_moy                   = 1
+ and     ws_bill_addr_sk         = ca_address_sk
+ and     ca_gmt_offset           = -8
+ group by i_item_id)
+  select  i_item_id ,sum(total_sales) total_sales
+ from  (select * from ss 
+        union all
+        select * from cs 
+        union all
+        select * from ws) tmp1
+ group by i_item_id
+ order by total_sales
+ limit 100
+PREHOOK: type: QUERY
+PREHOOK: Input: default@catalog_sales
+PREHOOK: Input: default@customer_address
+PREHOOK: Input: default@date_dim
+PREHOOK: Input: default@item
+PREHOOK: Input: default@store_sales
+PREHOOK: Input: default@web_sales
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: explain cbo
+with ss as (
+ select i_item_id,sum(ss_ext_sales_price) total_sales
+ from
+       store_sales,
+       date_dim,
+         customer_address,
+         item
+ where i_item_id in (select
+     i_item_id
+from item
+where i_color in ('orchid','chiffon','lace'))
+ and     ss_item_sk              = i_item_sk
+ and     ss_sold_date_sk         = d_date_sk
+ and     d_year                  = 2000
+ and     d_moy                   = 1
+ and     ss_addr_sk              = ca_address_sk
+ and     ca_gmt_offset           = -8 
+ group by i_item_id),
+ cs as (
+ select i_item_id,sum(cs_ext_sales_price) total_sales
+ from
+       catalog_sales,
+       date_dim,
+         customer_address,
+         item
+ where
+         i_item_id               in (select
+  i_item_id
+from item
+where i_color in ('orchid','chiffon','lace'))
+ and     cs_item_sk              = i_item_sk
+ and     cs_sold_date_sk         = d_date_sk
+ and     d_year                  = 2000
+ and     d_moy                   = 1
+ and     cs_bill_addr_sk         = ca_address_sk
+ and     ca_gmt_offset           = -8 
+ group by i_item_id),
+ ws as (
+ select i_item_id,sum(ws_ext_sales_price) total_sales
+ from
+       web_sales,
+       date_dim,
+         customer_address,
+         item
+ where
+         i_item_id               in (select
+  i_item_id
+from item
+where i_color in ('orchid','chiffon','lace'))
+ and     ws_item_sk              = i_item_sk
+ and     ws_sold_date_sk         = d_date_sk
+ and     d_year                  = 2000
+ and     d_moy                   = 1
+ and     ws_bill_addr_sk         = ca_address_sk
+ and     ca_gmt_offset           = -8
+ group by i_item_id)
+  select  i_item_id ,sum(total_sales) total_sales
+ from  (select * from ss 
+        union all
+        select * from cs 
+        union all
+        select * from ws) tmp1
+ group by i_item_id
+ order by total_sales
+ limit 100
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@catalog_sales
+POSTHOOK: Input: default@customer_address
+POSTHOOK: Input: default@date_dim
+POSTHOOK: Input: default@item
+POSTHOOK: Input: default@store_sales
+POSTHOOK: Input: default@web_sales
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+CBO PLAN:
+HiveSortLimit(sort0=[$1], dir0=[ASC], fetch=[100])
+  HiveProject(i_item_id=[$0], $f1=[$1])
+    HiveAggregate(group=[{0}], agg#0=[sum($1)])
+      HiveProject(i_item_id=[$0], $f1=[$1])
+        HiveUnion(all=[true])
+          HiveProject(i_item_id=[$0], $f1=[$1])
+            HiveAggregate(group=[{1}], agg#0=[sum($8)])
+              HiveJoin(condition=[=($6, $0)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                HiveJoin(condition=[=($1, $2)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                  HiveProject(i_item_sk=[$0], i_item_id=[$1])
+                    HiveFilter(condition=[AND(IS NOT NULL($1), IS NOT 
NULL($0))])
+                      HiveTableScan(table=[[default, item]], 
table:alias=[item])
+                  HiveProject(i_item_id=[$0])
+                    HiveAggregate(group=[{1}])
+                      HiveFilter(condition=[AND(IN($17, _UTF-16LE'orchid', 
_UTF-16LE'chiffon', _UTF-16LE'lace'), IS NOT NULL($1))])
+                        HiveTableScan(table=[[default, item]], 
table:alias=[item])
+                HiveProject(ca_address_sk=[$0], ca_gmt_offset=[$1], 
ss_sold_date_sk=[$2], ss_item_sk=[$3], ss_addr_sk=[$4], 
ss_ext_sales_price=[$5], d_date_sk=[$6], d_year=[$7], d_moy=[$8])
+                  HiveJoin(condition=[=($4, $0)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                    HiveProject(ca_address_sk=[$0], 
ca_gmt_offset=[CAST(-8):DECIMAL(5, 2)])
+                      HiveFilter(condition=[AND(=($11, -8), IS NOT NULL($0))])
+                        HiveTableScan(table=[[default, customer_address]], 
table:alias=[customer_address])
+                    HiveJoin(condition=[=($0, $4)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                      HiveProject(ss_sold_date_sk=[$0], ss_item_sk=[$2], 
ss_addr_sk=[$6], ss_ext_sales_price=[$15])
+                        HiveFilter(condition=[AND(IS NOT NULL($0), IS NOT 
NULL($6), IS NOT NULL($2))])
+                          HiveTableScan(table=[[default, store_sales]], 
table:alias=[store_sales])
+                      HiveProject(d_date_sk=[$0], d_year=[CAST(2000):INTEGER], 
d_moy=[CAST(1):INTEGER])
+                        HiveFilter(condition=[AND(=($6, 2000), =($8, 1), IS 
NOT NULL($0))])
+                          HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+          HiveProject(i_item_id=[$0], $f1=[$1])
+            HiveAggregate(group=[{1}], agg#0=[sum($8)])
+              HiveJoin(condition=[=($7, $0)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                HiveJoin(condition=[=($1, $2)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                  HiveProject(i_item_sk=[$0], i_item_id=[$1])
+                    HiveFilter(condition=[AND(IS NOT NULL($1), IS NOT 
NULL($0))])
+                      HiveTableScan(table=[[default, item]], 
table:alias=[item])
+                  HiveProject(i_item_id=[$0])
+                    HiveAggregate(group=[{1}])
+                      HiveFilter(condition=[AND(IN($17, _UTF-16LE'orchid', 
_UTF-16LE'chiffon', _UTF-16LE'lace'), IS NOT NULL($1))])
+                        HiveTableScan(table=[[default, item]], 
table:alias=[item])
+                HiveProject(ca_address_sk=[$0], ca_gmt_offset=[$1], 
cs_sold_date_sk=[$2], cs_bill_addr_sk=[$3], cs_item_sk=[$4], 
cs_ext_sales_price=[$5], d_date_sk=[$6], d_year=[$7], d_moy=[$8])
+                  HiveJoin(condition=[=($3, $0)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                    HiveProject(ca_address_sk=[$0], 
ca_gmt_offset=[CAST(-8):DECIMAL(5, 2)])
+                      HiveFilter(condition=[AND(=($11, -8), IS NOT NULL($0))])
+                        HiveTableScan(table=[[default, customer_address]], 
table:alias=[customer_address])
+                    HiveJoin(condition=[=($0, $4)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                      HiveProject(cs_sold_date_sk=[$0], cs_bill_addr_sk=[$6], 
cs_item_sk=[$15], cs_ext_sales_price=[$23])
+                        HiveFilter(condition=[AND(IS NOT NULL($0), IS NOT 
NULL($6), IS NOT NULL($15))])
+                          HiveTableScan(table=[[default, catalog_sales]], 
table:alias=[catalog_sales])
+                      HiveProject(d_date_sk=[$0], d_year=[CAST(2000):INTEGER], 
d_moy=[CAST(1):INTEGER])
+                        HiveFilter(condition=[AND(=($6, 2000), =($8, 1), IS 
NOT NULL($0))])
+                          HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+          HiveProject(i_item_id=[$0], $f1=[$1])
+            HiveAggregate(group=[{1}], agg#0=[sum($8)])
+              HiveJoin(condition=[=($6, $0)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                HiveJoin(condition=[=($1, $2)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                  HiveProject(i_item_sk=[$0], i_item_id=[$1])
+                    HiveFilter(condition=[AND(IS NOT NULL($1), IS NOT 
NULL($0))])
+                      HiveTableScan(table=[[default, item]], 
table:alias=[item])
+                  HiveProject(i_item_id=[$0])
+                    HiveAggregate(group=[{1}])
+                      HiveFilter(condition=[AND(IN($17, _UTF-16LE'orchid', 
_UTF-16LE'chiffon', _UTF-16LE'lace'), IS NOT NULL($1))])
+                        HiveTableScan(table=[[default, item]], 
table:alias=[item])
+                HiveProject(ca_address_sk=[$0], ca_gmt_offset=[$1], 
ws_sold_date_sk=[$2], ws_item_sk=[$3], ws_bill_addr_sk=[$4], 
ws_ext_sales_price=[$5], d_date_sk=[$6], d_year=[$7], d_moy=[$8])
+                  HiveJoin(condition=[=($4, $0)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                    HiveProject(ca_address_sk=[$0], 
ca_gmt_offset=[CAST(-8):DECIMAL(5, 2)])
+                      HiveFilter(condition=[AND(=($11, -8), IS NOT NULL($0))])
+                        HiveTableScan(table=[[default, customer_address]], 
table:alias=[customer_address])
+                    HiveJoin(condition=[=($0, $4)], joinType=[inner], 
algorithm=[none], cost=[not available])
+                      HiveProject(ws_sold_date_sk=[$0], ws_item_sk=[$3], 
ws_bill_addr_sk=[$7], ws_ext_sales_price=[$23])
+                        HiveFilter(condition=[AND(IS NOT NULL($0), IS NOT 
NULL($7), IS NOT NULL($3))])
+                          HiveTableScan(table=[[default, web_sales]], 
table:alias=[web_sales])
+                      HiveProject(d_date_sk=[$0], d_year=[CAST(2000):INTEGER], 
d_moy=[CAST(1):INTEGER])
+                        HiveFilter(condition=[AND(=($6, 2000), =($8, 1), IS 
NOT NULL($0))])
+                          HiveTableScan(table=[[default, date_dim]], 
table:alias=[date_dim])
+

Reply via email to