[ 
https://issues.apache.org/jira/browse/HIVE-17503?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jesus Camacho Rodriguez resolved HIVE-17503.
--------------------------------------------
       Resolution: Fixed
    Fix Version/s: 4.0.0

Included in HIVE-20718.

> CBO: Add "Explain CBO" to print Calcite trees
> ---------------------------------------------
>
>                 Key: HIVE-17503
>                 URL: https://issues.apache.org/jira/browse/HIVE-17503
>             Project: Hive
>          Issue Type: Improvement
>          Components: CBO
>    Affects Versions: 3.0.0
>            Reporter: Gopal V
>            Assignee: Jesus Camacho Rodriguez
>            Priority: Major
>             Fix For: 4.0.0
>
>
> The calcite tree is only logged at debug level in Hive right now, which is 
> inconvenient to debug the CBO issues with selectivity and join rotations.
> The Calcite plans, before being sent to the rest of the optimizers end up 
> looking like
> {code}
> HiveProject(s_store_name=[$0], s_company_id=[$1], s_street_number=[$2], 
> s_street_name=[$3], s_street_type=[$4], s_suite_number=[$5], s_city=[$6], 
> s_county=[$7], s_state=[$8], s_zip=[$9], 30days=[$10], 3160days=[$11], 
> 6190days=[$12], 91120days=[$13], 120days=[$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(<=(-($8, 
> $4), CAST(30):BIGINT), 1, 0)], $f11=[CASE(AND(>(-($8, $4), CAST(30):BIGINT), 
> <=(-($8, $4), CAST(60):BIGINT)), 1, 0)], $f12=[CASE(AND(>(-($8, $4), 
> CAST(60):BIGINT), <=(-($8, $4), CAST(90):BIGINT)), 1, 0)], 
> $f13=[CASE(AND(>(-($8, $4), CAST(90):BIGINT), <=(-($8, $4), 
> CAST(120):BIGINT)), 1, 0)], $f14=[CASE(>(-($8, $4), CAST(120):BIGINT), 1, 0)])
>         HiveJoin(condition=[=($2, $13)], joinType=[inner], algorithm=[none], 
> cost=[not available])
>           HiveJoin(condition=[=($4, $12)], joinType=[inner], 
> algorithm=[none], cost=[not available])
>             HiveJoin(condition=[AND(=($0, $5), =($1, $6), =($3, $7))], 
> joinType=[inner], algorithm=[none], cost=[not available])
>               HiveProject(ss_item_sk=[$1], ss_customer_sk=[$2], 
> ss_store_sk=[$6], ss_ticket_number=[$8], ss_sold_date_sk=[$22])
>                 HiveFilter(condition=[AND(IS NOT NULL($1), IS NOT NULL($2), 
> IS NOT NULL($8), IS NOT NULL($6), IS NOT NULL($22))])
>                   
> HiveTableScan(table=[[tpcds_bin_partitioned_orc_10000.store_sales]], 
> table:alias=[store_sales])
>               HiveJoin(condition=[=($3, $4)], joinType=[inner], 
> algorithm=[none], cost=[not available])
>                 HiveProject(sr_item_sk=[$1], sr_customer_sk=[$2], 
> sr_ticket_number=[$8], sr_returned_date_sk=[$19])
>                   HiveFilter(condition=[AND(IS NOT NULL($1), IS NOT NULL($2), 
> IS NOT NULL($8), IS NOT NULL($19))])
>                     
> HiveTableScan(table=[[tpcds_bin_partitioned_orc_10000.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=[[tpcds_bin_partitioned_orc_10000.date_dim]], 
> table:alias=[d2])
>             HiveProject(d_date_sk=[$0])
>               HiveFilter(condition=[IS NOT NULL($0)])
>                 
> HiveTableScan(table=[[tpcds_bin_partitioned_orc_10000.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=[[tpcds_bin_partitioned_orc_10000.store]], 
> table:alias=[store])
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to