You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Benedict (JIRA)" <ji...@apache.org> on 2015/01/27 13:45:34 UTC

[jira] [Commented] (CASSANDRA-8691) SSTableReader.getPosition() does not correctly filter out queries that exceed its bounds

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

Benedict commented on CASSANDRA-8691:
-------------------------------------

We need to consider behaviour with getToken(last) for OpenEarly, as this will break our current approach. However we could simply lookup EQ to last, since we have an overlapping record with the source files. This might be the neatest solution to that particular problem.

> SSTableReader.getPosition() does not correctly filter out queries that exceed its bounds
> ----------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-8691
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8691
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Benedict
>             Fix For: 2.1.3
>
>
> This has been true for some time, but I worry about including it before 2.1 in case we depend on the brokenness somehow. In getPosition, we test:
> {code}
>         if (first.compareTo(key) > 0 || last.compareTo(key) < 0)
>         {
>             if (op == Operator.EQ && updateCacheAndStats)
>                 bloomFilterTracker.addFalsePositive();
>             if (op.apply(1) < 0)
>             {
>                 Tracing.trace("Check against min and max keys allows skipping sstable {}", descriptor.generation);
>                 return null;
>             }
>         }
> {code}
> However, op.apply(1) always returns >= 0 unless op == Operation.EQ



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