You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sn...@apache.org on 2015/08/03 21:55:14 UTC
[1/2] cassandra git commit: Log warning when using an aggregate
without partition key
Repository: cassandra
Updated Branches:
refs/heads/trunk cc95bae85 -> fcece2dc2
Log warning when using an aggregate without partition key
patch by Robert Stupp; reviewed by Aleksey Yeschenko for CASSANDRA-9737
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5a54d9a6
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5a54d9a6
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5a54d9a6
Branch: refs/heads/trunk
Commit: 5a54d9a6240daa9e58dde702245f574002a42783
Parents: f60abbd
Author: Robert Stupp <sn...@snazy.de>
Authored: Mon Aug 3 21:51:34 2015 +0200
Committer: Robert Stupp <sn...@snazy.de>
Committed: Mon Aug 3 21:51:34 2015 +0200
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../restrictions/StatementRestrictions.java | 5 +++++
.../cql3/statements/SelectStatement.java | 21 ++++++++++++++++++--
3 files changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5a54d9a6/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 401f426..66e5a0c 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.2.1
+ * Log warning when using an aggregate without partition key (CASSANDRA-9737)
* Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900)
* UDF / UDA execution time in trace (CASSANDRA-9723)
* Fix broken internode SSL (CASSANDRA-9884)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5a54d9a6/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 c10a56a..55c6808 100644
--- a/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
+++ b/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
@@ -256,6 +256,11 @@ public final class StatementRestrictions
return partitionKeyRestrictions.size() < cfm.partitionKeyColumns().size();
}
+ public boolean hasPartitionKeyRestrictions()
+ {
+ return !partitionKeyRestrictions.isEmpty();
+ }
+
/**
* Returns the partition key components that are not restricted.
* @return the partition key components that are not restricted.
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5a54d9a6/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index cd0eeaa..3edb7d0 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -25,6 +25,9 @@ import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Iterators;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import org.apache.cassandra.auth.Permission;
import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.ColumnDefinition;
@@ -44,6 +47,7 @@ import org.apache.cassandra.dht.AbstractBounds;
import org.apache.cassandra.exceptions.*;
import org.apache.cassandra.serializers.MarshalException;
import org.apache.cassandra.service.ClientState;
+import org.apache.cassandra.service.ClientWarn;
import org.apache.cassandra.service.QueryState;
import org.apache.cassandra.service.StorageProxy;
import org.apache.cassandra.service.pager.Pageable;
@@ -71,6 +75,8 @@ import static org.apache.cassandra.utils.ByteBufferUtil.UNSET_BYTE_BUFFER;
*/
public class SelectStatement implements CQLStatement
{
+ private static final Logger logger = LoggerFactory.getLogger(SelectStatement.class);
+
private static final int DEFAULT_COUNT_PAGE_SIZE = 10000;
private final int boundTerms;
@@ -242,10 +248,21 @@ public class SelectStatement implements CQLStatement
private ResultMessage.Rows pageAggregateQuery(QueryPager pager, QueryOptions options, int pageSize, long now)
throws RequestValidationException, RequestExecutionException
{
+ if (!restrictions.hasPartitionKeyRestrictions())
+ {
+ logger.warn("Aggregation query used without partition key");
+ ClientWarn.warn("Aggregation query used without partition key");
+ }
+ else if (restrictions.keyIsInRelation())
+ {
+ logger.warn("Aggregation query used on multiple partition keys (IN restriction)");
+ ClientWarn.warn("Aggregation query used on multiple partition keys (IN restriction)");
+ }
+
Selection.ResultSetBuilder result = selection.resultSetBuilder(now, parameters.isJson);
while (!pager.isExhausted())
{
- for (org.apache.cassandra.db.Row row : pager.fetchPage(pageSize))
+ for (Row row : pager.fetchPage(pageSize))
{
// Not columns match the query, skip
if (row.cf == null)
@@ -619,7 +636,7 @@ public class SelectStatement implements CQLStatement
private ResultSet process(List<Row> rows, QueryOptions options, int limit, long now) throws InvalidRequestException
{
Selection.ResultSetBuilder result = selection.resultSetBuilder(now, parameters.isJson);
- for (org.apache.cassandra.db.Row row : rows)
+ for (Row row : rows)
{
// Not columns match the query, skip
if (row.cf == null)
[2/2] cassandra git commit: Merge branch 'cassandra-2.2' into trunk
Posted by sn...@apache.org.
Merge branch 'cassandra-2.2' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/fcece2dc
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/fcece2dc
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/fcece2dc
Branch: refs/heads/trunk
Commit: fcece2dc2b57ddc456af848293b9fd3cdb34710c
Parents: cc95bae 5a54d9a
Author: Robert Stupp <sn...@snazy.de>
Authored: Mon Aug 3 21:54:57 2015 +0200
Committer: Robert Stupp <sn...@snazy.de>
Committed: Mon Aug 3 21:54:57 2015 +0200
----------------------------------------------------------------------
CHANGES.txt | 18 ++++++++++++------
.../cql3/restrictions/StatementRestrictions.java | 5 +++++
.../cql3/statements/SelectStatement.java | 11 +++++++++++
3 files changed, 28 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fcece2dc/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 4b4f908,66e5a0c..4ad1052
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,36 -1,10 +1,42 @@@
- 3.0
-2.2.1
++3.0.0-beta1
+ * Add transparent data encryption core classes (CASSANDRA-9945)
- * Implement proper sandboxing for UDFs (CASSANDRA-9402, 9890)
++ * Bytecode inspection for Java-UDFs (CASSANDRA-9890)
++Merged from 2.2:
+ * Log warning when using an aggregate without partition key (CASSANDRA-9737)
++Merged from 2.1:
++ * Cannot replace token does not exist - DN node removed as Fat Client (CASSANDRA-9871)
++Merged from 2.0:
++ * Don't cast expected bf size to an int (CASSANDRA-9959)
++
++3.0.0-alpha1
++ * Implement proper sandboxing for UDFs (CASSANDRA-9402)
+ * Simplify (and unify) cleanup of compaction leftovers (CASSANDRA-7066)
+ * Allow extra schema definitions in cassandra-stress yaml (CASSANDRA-9850)
+ * Metrics should use up to date nomenclature (CASSANDRA-9448)
+ * Change CREATE/ALTER TABLE syntax for compression (CASSANDRA-8384)
+ * Cleanup crc and adler code for java 8 (CASSANDRA-9650)
+ * Storage engine refactor (CASSANDRA-8099, 9743, 9746, 9759, 9781, 9808, 9825,
+ 9848, 9705, 9859, 9867, 9874, 9828, 9801)
+ * Update Guava to 18.0 (CASSANDRA-9653)
+ * Bloom filter false positive ratio is not honoured (CASSANDRA-8413)
+ * New option for cassandra-stress to leave a ratio of columns null (CASSANDRA-9522)
+ * Change hinted_handoff_enabled yaml setting, JMX (CASSANDRA-9035)
+ * Add algorithmic token allocation (CASSANDRA-7032)
+ * Add nodetool command to replay batchlog (CASSANDRA-9547)
+ * Make file buffer cache independent of paths being read (CASSANDRA-8897)
+ * Remove deprecated legacy Hadoop code (CASSANDRA-9353)
+ * Decommissioned nodes will not rejoin the cluster (CASSANDRA-8801)
+ * Change gossip stabilization to use endpoit size (CASSANDRA-9401)
+ * Change default garbage collector to G1 (CASSANDRA-7486)
+ * Populate TokenMetadata early during startup (CASSANDRA-9317)
+ * Undeprecate cache recentHitRate (CASSANDRA-6591)
+ * Add support for selectively varint encoding fields (CASSANDRA-9499, 9865)
+ * Materialized Views (CASSANDRA-6477)
-
-
- 2.2.1
++Merged from 2.2:
* Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900)
* UDF / UDA execution time in trace (CASSANDRA-9723)
* Fix broken internode SSL (CASSANDRA-9884)
Merged from 2.1:
-- * Cannot replace token does not exist - DN node removed as Fat Client (CASSANDRA-9871)
* Fix handling of enable/disable autocompaction (CASSANDRA-9899)
* Add consistency level to tracing ouput (CASSANDRA-9827)
* Remove repair snapshot leftover on startup (CASSANDRA-7357)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fcece2dc/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fcece2dc/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index 94f04b8,3edb7d0..9ac76d6
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@@ -317,16 -245,30 +317,27 @@@ public class SelectStatement implement
return msg;
}
- private ResultMessage.Rows pageAggregateQuery(QueryPager pager, QueryOptions options, int pageSize, long now)
- throws RequestValidationException, RequestExecutionException
+ private ResultMessage.Rows pageAggregateQuery(Pager pager, QueryOptions options, int pageSize, int nowInSec)
+ throws RequestValidationException, RequestExecutionException
{
+ if (!restrictions.hasPartitionKeyRestrictions())
+ {
+ logger.warn("Aggregation query used without partition key");
+ ClientWarn.warn("Aggregation query used without partition key");
+ }
+ else if (restrictions.keyIsInRelation())
+ {
+ logger.warn("Aggregation query used on multiple partition keys (IN restriction)");
+ ClientWarn.warn("Aggregation query used on multiple partition keys (IN restriction)");
+ }
+
- Selection.ResultSetBuilder result = selection.resultSetBuilder(now, parameters.isJson);
+ Selection.ResultSetBuilder result = selection.resultSetBuilder(parameters.isJson);
while (!pager.isExhausted())
{
- for (Row row : pager.fetchPage(pageSize))
+ try (PartitionIterator iter = pager.fetchPage(pageSize))
{
- // Not columns match the query, skip
- if (row.cf == null)
- continue;
-
- processColumnFamily(row.key.getKey(), row.cf, options, now, result);
+ while (iter.hasNext())
+ processPartition(iter.next(), options, result, nowInSec);
}
}
return new ResultMessage.Rows(result.build(options.getProtocolVersion()));