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

Prasanth Jayachandran commented on HIVE-11405:
----------------------------------------------

[~gopalv] is the column stats available for this query? If not your patch will 
early terminate because of data size becoming 0 and AND evaluation terminating 
early. Also I am not sure if this assumption is correct
{code}
final long branch2Rows = (newNumRows <= branchRows) ? 0 : (newNumRows - 
branchRows);
{code}

I am still evaluating this change. The idea of mirroring the tree and passing 
the branchRows to sibling branch looks good so far.

> Add early termination for recursion in 
> StatsRulesProcFactory$FilterStatsRule.evaluateExpression  for OR expression
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-11405
>                 URL: https://issues.apache.org/jira/browse/HIVE-11405
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Hari Sankar Sivarama Subramaniyan
>            Assignee: Prasanth Jayachandran
>
> Thanks to [~gopalv] for uncovering this issue as part of HIVE-11330.  Quoting 
> him,
> "The recursion protection works well with an AND expr, but it doesn't work 
> against
> (OR a=1 (OR a=2 (OR a=3 (OR ...)
> since the for the rows will never be reduced during recursion due to the 
> nature of the OR.
> We need to execute a short-circuit to satisfy the OR properly - no case which 
> matches a=1 qualifies for the rest of the filters.
> Recursion should pass in the numRows - branch1Rows for the branch-2."



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to