You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by bl...@apache.org on 2016/11/30 12:51:11 UTC
[3/6] cassandra git commit: Use correct bounds for all-data range
when filtering
Use correct bounds for all-data range when filtering
Patch by Alex Petrov; reviewed by Branimir Lambov for CASSANDRA-12666.
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f00e4316
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f00e4316
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f00e4316
Branch: refs/heads/trunk
Commit: f00e43167ab11f58af20439a300bdf82664abdb0
Parents: 8de24ca
Author: Alex Petrov <ol...@gmail.com>
Authored: Sun Sep 18 11:09:47 2016 +0200
Committer: Branimir Lambov <br...@datastax.com>
Committed: Wed Nov 30 14:39:33 2016 +0200
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../cql3/restrictions/StatementRestrictions.java | 10 +++++-----
2 files changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f00e4316/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 72d6a1f..b238018 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.10
+ * Use correct bounds for all-data range when filtering (CASSANDRA-12666)
* Remove timing window in test case (CASSANDRA-12875)
* Resolve unit testing without JCE security libraries installed (CASSANDRA-12945)
* Fix inconsistencies in cassandra-stress load balancing policy (CASSANDRA-12919)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f00e4316/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java b/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
index 53ac68c..2d04633 100644
--- a/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
+++ b/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
@@ -624,11 +624,6 @@ public final class StatementRestrictions
*/
private ByteBuffer getPartitionKeyBound(Bound b, QueryOptions options)
{
- // Deal with unrestricted partition key components (special-casing is required to deal with 2i queries on the
- // first component of a composite partition key) queries that filter on the partition key.
- if (partitionKeyRestrictions.needFiltering(cfm))
- return ByteBufferUtil.EMPTY_BYTE_BUFFER;
-
// We deal with IN queries for keys in other places, so we know buildBound will return only one result
return partitionKeyRestrictions.bounds(b, options).get(0);
}
@@ -654,6 +649,11 @@ public final class StatementRestrictions
private AbstractBounds<PartitionPosition> getPartitionKeyBounds(IPartitioner p,
QueryOptions options)
{
+ // Deal with unrestricted partition key components (special-casing is required to deal with 2i queries on the
+ // first component of a composite partition key) queries that filter on the partition key.
+ if (partitionKeyRestrictions.needFiltering(cfm))
+ return new Range<>(p.getMinimumToken().minKeyBound(), p.getMinimumToken().maxKeyBound());
+
ByteBuffer startKeyBytes = getPartitionKeyBound(Bound.START, options);
ByteBuffer finishKeyBytes = getPartitionKeyBound(Bound.END, options);