You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Jesus Camacho Rodriguez (JIRA)" <ji...@apache.org> on 2019/01/30 02:14:00 UTC

[jira] [Updated] (HIVE-17503) CBO: Add "Explain CBO" to print Calcite trees

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

Jesus Camacho Rodriguez updated HIVE-17503:
-------------------------------------------
    Labels: todoc4.0  (was: )

> 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
>              Labels: todoc4.0
>             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)