hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ashutosh Chauhan (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HIVE-20432) Rewrite BETWEEN to IN for integer types for stats estimation
Date Wed, 05 Sep 2018 05:37:00 GMT

    [ https://issues.apache.org/jira/browse/HIVE-20432?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16603938#comment-16603938
] 

Ashutosh Chauhan commented on HIVE-20432:
-----------------------------------------

1. Instead of  if (leftValue instanceof Integer) {..} else if (leftValue instanceof Long)
{...} else {} you may simply do 
long leftVal = ((Number) leftValue).longValue() concise and simpler to read.
2. In isIntegerType() you also need to add  || primitiveCategory == PrimitiveCategory.BYTE
in if () for tinyint.

+1 pending these changes.

> Rewrite BETWEEN to IN for integer types for stats estimation
> ------------------------------------------------------------
>
>                 Key: HIVE-20432
>                 URL: https://issues.apache.org/jira/browse/HIVE-20432
>             Project: Hive
>          Issue Type: Improvement
>    Affects Versions: 4.0.0
>            Reporter: Vineet Garg
>            Assignee: Vineet Garg
>            Priority: Major
>         Attachments: HIVE-20432.1.patch, HIVE-20432.2.patch, HIVE-20432.3.patch
>
>
> IN clause provides better statistics estimation since predicates are equality based and
it keeps into account selectivity of all values. BETWEEN is rewritten into {{>= AND <=}}
i.e. non-equality predicates which cause worse estimation. For integer types BETWEEN could
be rewritten into IN e.g. BETWEEN 4 and 7 is equivalent to IN (4,5,6,7).



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

Mime
View raw message