From e98be186d1e39c45aa34e6ea995f0bf718b99015 Mon Sep 17 00:00:00 2001 From: blerer Date: Mon, 10 Aug 2015 15:09:03 +0200 Subject: [PATCH] Fix Select * is only returning the first page of data patch by Benjamin Lerer; reviewed by Stefania Alborghetti for CASSANDRA-9913 --- .../cassandra/cql3/restrictions/StatementRestrictions.java | 4 +++- .../apache/cassandra/cql3/statements/SelectStatement.java | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java b/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java index 2bcd1f25c2f6..1a3b08355fe4 100644 --- a/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java +++ b/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java @@ -513,8 +513,10 @@ public boolean areRequestedBoundsInclusive(Bound bound) */ public boolean isColumnRange() { + // For static compact tables we need to ignore the fake clustering column. + int numberOfClusteringColumns = cfm.isStaticCompactTable() ? 0 : cfm.clusteringColumns().size(); // it is a range query if it has at least one the column alias for which no relation is defined or is not EQ. - return clusteringColumnsRestrictions.size() < cfm.clusteringColumns().size() + return clusteringColumnsRestrictions.size() < numberOfClusteringColumns || (!clusteringColumnsRestrictions.isEQ() && !clusteringColumnsRestrictions.isIN()); } diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java index 9ac76d6a44df..d08c56f41f8c 100644 --- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java @@ -337,7 +337,12 @@ else if (restrictions.keyIsInRelation()) try (PartitionIterator iter = pager.fetchPage(pageSize)) { while (iter.hasNext()) - processPartition(iter.next(), options, result, nowInSec); + { + try (RowIterator partition = iter.next()) + { + processPartition(partition, options, result, nowInSec); + } + } } } return new ResultMessage.Rows(result.build(options.getProtocolVersion()));