[
https://issues.apache.org/jira/browse/HIVE-10787?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14562113#comment-14562113
]
Ashutosh Chauhan commented on HIVE-10787:
-----------------------------------------
+1
> MatchPath misses the last matched row from the final result set
> ---------------------------------------------------------------
>
> Key: HIVE-10787
> URL: https://issues.apache.org/jira/browse/HIVE-10787
> Project: Hive
> Issue Type: Bug
> Components: UDF
> Affects Versions: 1.2.0
> Reporter: Mohammad Kamrul Islam
> Assignee: Mohammad Kamrul Islam
> Attachments: HIVE-10787.1.patch
>
>
> For example, if you have a STAR(*) pattern at the end, the current code
> misses the last row from the final result. For example, if I have pattern
> like (LATE.EARLY*), the matched rows are :
> 1. LATE
> 2. EARLY
> In the current implementation, the final 'tpath' missed the last "EARLY" and
> returns only LATE . Ideally it should return LATE and EARLY.
> The following code snippets shows the bug.
> {noformat}
> 0. SymbolFunctionResult rowResult = symbolFn.match(row, pItr);
> 1. while (rowResult.matches && pItr.hasNext())
> 2. {
> 3. row = pItr.next();
> 4. rowResult = symbolFn.match(row, pItr);
> 5. }
> 6.
> 7. result.nextRow = pItr.getIndex() - 1;
> {noformat}
> Line 7 of the code always moves the row index by one. If ,in some cases, loop
> (line 1) is never executed (due to pItr.hasNext() being 'false'), the code
> still moves the row pointer back by one. Although the line 0 found the first
> match and the iterator reaches to the end.
> I'm uploading a patch which I already tested.
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)