[ https://issues.apache.org/jira/browse/HIVE-19097?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Zoltan Haindrich updated HIVE-19097: ------------------------------------ Attachment: HIVE-19097.05.patch > related equals and in operators may cause inaccurate stats estimations > ---------------------------------------------------------------------- > > Key: HIVE-19097 > URL: https://issues.apache.org/jira/browse/HIVE-19097 > Project: Hive > Issue Type: Bug > Reporter: Zoltan Haindrich > Assignee: Zoltan Haindrich > Priority: Major > Attachments: HIVE-19097.01.patch, HIVE-19097.02.patch, > HIVE-19097.03.patch, HIVE-19097.04.patch, HIVE-19097.05.patch, > HIVE-19097.partial.patch > > > tpcds#74 is optimized in a way that for date_dim the condition contains IN > and = for the same column > {code:java} > | Map Operator Tree: | > | TableScan | > | alias: date_dim | > | filterExpr: (((d_year) IN (2001, 2002) and (d_year = > 2002) and d_date_sk is not null) or ((d_year) IN (2001, 2002) and (d_year = > 2001) and d_date_sk is not null)) (type: boolean) | > | Statistics: Num rows: 73049 Data size: 876588 Basic > stats: COMPLETE Column stats: COMPLETE | > | Filter Operator | > | predicate: ((d_year) IN (2001, 2002) and (d_year = > 2002) and d_date_sk is not null) (type: boolean) | > | Statistics: Num rows: 4 Data size: 48 Basic stats: > COMPLETE Column stats: COMPLETE | > {code} > the "real" row count will be 365 > for separate {{IN}} and {{=}} the estimation is very good; but if both are > present it becomes (very) underestimated. > {code:java} > set hive.query.results.cache.enabled=false; > drop table if exists t1; > drop table if exists t8; > create table t1 (a integer,b integer); > create table t8 like t1; > insert into t1 values (1,1),(2,2),(3,3),(4,4),(5,5); > insert into t8 > select * from t1 union all select * from t1 union all select * from t1 union > all select * from t1 union all > select * from t1 union all select * from t1 union all select * from t1 union > all select * from t1 > ; > analyze table t1 compute statistics for columns; > analyze table t8 compute statistics for columns; > explain analyze select sum(a) from t8 where b in (2,3) group by b; > explain analyze select sum(a) from t8 where b=2 group by b; > explain analyze select sum(a) from t1 where b in (2,3) and b=2 group by b; > explain analyze select sum(a) from t8 where b in (2,3) and b=2 group by b; > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)