[ https://issues.apache.org/jira/browse/HBASE-17958?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16208801#comment-16208801 ]
Lars Hofhansl edited comment on HBASE-17958 at 10/18/17 4:40 AM: ----------------------------------------------------------------- So I just ran a things through a profiler for some unrelated stuff and now find that a whopping *third* of the time for the scan I am doing is spent in {{trySkipToNextRow}}. That is certainly what I had intended with my original idea. Looking into that function (in branch-1) I see that each time we SKIP (heap.next()) we re-check the next indexed key. It's entirely possible that I am missing something... But it seems to me we should check for SEEK outside of the loop once, then either return false, or unconditionally continue SKIP'ing along. [~Apache9], [~zghaobac]. was (Author: lhofhansl): So I just ran a things through a profiler for some unrelated stuff and now find that a whopping *third* of the scan I am doing is spent in {{trySkipToNextRow}}. That is certainly what I had intended with my original idea. Looking into that function (in branch-1) I see that each time we SKIP (heap.next()) we re-check the next indexed key. It's entirely possible that I am missing something... But it seems to me we should check for SEEK outside of the loop once, then either return false, or unconditionally continue SKIP'ing along. [~Apache9], [~zghaobac]. > Avoid passing unexpected cell to ScanQueryMatcher when optimize SEEK to SKIP > ---------------------------------------------------------------------------- > > Key: HBASE-17958 > URL: https://issues.apache.org/jira/browse/HBASE-17958 > Project: HBase > Issue Type: Bug > Reporter: Guanghao Zhang > Assignee: Guanghao Zhang > Fix For: 2.0.0, 1.4.0 > > Attachments: 0001-add-one-ut-testWithColumnCountGetFilter.patch, > HBASE-17958-branch-1.patch, HBASE-17958-branch-1.patch, > HBASE-17958-branch-1.patch, HBASE-17958-branch-1.patch, HBASE-17958-v1.patch, > HBASE-17958-v2.patch, HBASE-17958-v3.patch, HBASE-17958-v4.patch, > HBASE-17958-v5.patch, HBASE-17958-v6.patch, HBASE-17958-v7.patch, > HBASE-17958-v7.patch > > > {code} > ScanQueryMatcher.MatchCode qcode = matcher.match(cell); > qcode = optimize(qcode, cell); > {code} > The optimize method may change the MatchCode from SEEK_NEXT_COL/SEEK_NEXT_ROW > to SKIP. But it still pass the next cell to ScanQueryMatcher. It will get > wrong result when use some filter, etc. ColumnCountGetFilter. It just count > the columns's number. If pass a same column to this filter, the count result > will be wrong. So we should avoid passing cell to ScanQueryMatcher when > optimize SEEK to SKIP. -- This message was sent by Atlassian JIRA (v6.4.14#64029)