[
https://issues.apache.org/jira/browse/HIVE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Prasanth Jayachandran updated HIVE-11405:
-----------------------------------------
Attachment: HIVE-11405.2.patch
Fixed failing tests. This patch actually revealed a bug in previous stats
annotation implementation for OR conditions.
Previous implementations:
{code}
(
(
(
(
(
(
((key <> '302') and (key <> '311')) - 500 rows
and
((value <> 'val_50') or (key > '1')) - 666 rows (This is wrong.
this should never exceed max number of rows)
)
and
(key < '400') - 222 rows
)
and (key <> '305') - 222 rows
)
and (key <> '14') - 222 rows
)
and key is not null - 111 rows
)
and value is not null - 56 rows
)
{code}
Current implementation:
{code}
(
(
(
(
(
(
((key <> '302') and (key <> '311')) - 500 rows
and
((value <> 'val_50') or (key > '1')) - 500 rows
)
and
(key < '400') - 166 rows
)
and (key <> '305') - 166 rows
)
and (key <> '14') - 166 rows
)
and key is not null - 83 rows
)
and value is not null - 42 rows
)
{code}
> 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
> Attachments: HIVE-11405.1.patch, HIVE-11405.2.patch, HIVE-11405.patch
>
>
> 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)