Fix IllegalArgumentException during statement preparation patch by slebresne; reviewed by thobbs for CASSANDRA-6592
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a8a12d9e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a8a12d9e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a8a12d9e Branch: refs/heads/trunk Commit: a8a12d9e0adee65bad19dcfd86e7b0cf6b1ed89a Parents: e7b23cc Author: Sylvain Lebresne <sylv...@datastax.com> Authored: Fri Jan 31 10:09:32 2014 +0100 Committer: Sylvain Lebresne <sylv...@datastax.com> Committed: Fri Jan 31 10:09:32 2014 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../apache/cassandra/cql3/statements/BatchStatement.java | 5 ++++- .../cassandra/cql3/statements/ModificationStatement.java | 6 +++++- .../cassandra/cql3/statements/SelectStatement.java | 11 ++++++++++- 4 files changed, 20 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a8a12d9e/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 94b21d4..a29f212 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -18,6 +18,7 @@ * SSTableScanner may skip rows during cleanup (CASSANDRA-6638) * sstables from stalled repair sessions can resurrect deleted data (CASSANDRA-6503) * Switch stress to use ITransportFactory (CASSANDRA-6641) + * Fix IllegalArgumentException during prepare (CASSANDRA-6592) Merged from 1.2: * fsync compression metadata (CASSANDRA-6531) * Validate CF existence on execution for prepared statement (CASSANDRA-6535) http://git-wip-us.apache.org/repos/asf/cassandra/blob/a8a12d9e/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java index 25f61fb..6151490 100644 --- a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java @@ -66,7 +66,10 @@ public class BatchStatement implements CQLStatement, MeasurableForPreparedCache public long measureForPreparedCache(MemoryMeter meter) { - long size = meter.measure(this) + meter.measure(statements) + meter.measureDeep(attrs); + long size = meter.measure(this) + + meter.measureDeep(type) + + meter.measure(statements) + + meter.measureDeep(attrs); for (ModificationStatement stmt : statements) size += stmt.measureForPreparedCache(meter); return size; http://git-wip-us.apache.org/repos/asf/cassandra/blob/a8a12d9e/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java index 9e0fd62..c0bf428 100644 --- a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java @@ -66,7 +66,11 @@ public abstract class ModificationStatement implements CQLStatement, MeasurableF public long measureForPreparedCache(MemoryMeter meter) { - return meter.measureDeep(this) - meter.measureDeep(cfm); + return meter.measure(this) + + meter.measureDeep(attrs) + + meter.measureDeep(processedKeys) + + meter.measureDeep(columnOperations) + + (columnConditions == null ? 0 : meter.measureDeep(columnConditions)); } public abstract boolean requireFullClusteringKey(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/a8a12d9e/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 c3671be..29cafa2 100644 --- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java @@ -112,7 +112,16 @@ public class SelectStatement implements CQLStatement, MeasurableForPreparedCache public long measureForPreparedCache(MemoryMeter meter) { - return meter.measureDeep(this) - meter.measureDeep(cfDef); + return meter.measure(this) + + meter.measureDeep(parameters) + + meter.measureDeep(selection) + + (limit == null ? 0 : meter.measureDeep(limit)) + + meter.measureDeep(keyRestrictions) + + meter.measureDeep(columnRestrictions) + + meter.measureDeep(metadataRestrictions) + + meter.measureDeep(restrictedNames) + + (sliceRestriction == null ? 0 : meter.measureDeep(sliceRestriction)) + + (orderingIndexes == null ? 0 : meter.measureDeep(orderingIndexes)); } public int getBoundTerms()