Repository: cassandra Updated Branches: refs/heads/cassandra-2.1 852a8babd -> 3674ad9da
Reject counter writes in CQLSSTableWriter patch by Paulo Motta; reviewed by Aleksey Yeschenko for CASSANDRA-10258 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3674ad9d Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3674ad9d Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3674ad9d Branch: refs/heads/cassandra-2.1 Commit: 3674ad9dab8f29173d7d4ee82488a8e9ea586240 Parents: 852a8ba Author: Paulo Motta <pauloricard...@gmail.com> Authored: Thu Oct 22 11:38:31 2015 -0700 Committer: Aleksey Yeschenko <alek...@apache.org> Committed: Tue Nov 10 13:41:01 2015 +0000 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../cassandra/io/sstable/CQLSSTableWriter.java | 2 ++ .../io/sstable/CQLSSTableWriterTest.java | 22 ++++++++++++++++++++ 3 files changed, 25 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3674ad9d/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 123c1f3..fa2017a 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.1.12 + * Reject counter writes in CQLSSTableWriter (CASSANDRA-10258) * Remove superfluous COUNTER_MUTATION stage mapping (CASSANDRA-10605) * Improve json2sstable error reporting on nonexistent columns (CASSANDRA-10401) * (cqlsh) fix COPY using wrong variable name for time_format (CASSANDRA-10633) http://git-wip-us.apache.org/repos/asf/cassandra/blob/3674ad9d/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java b/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java index c364171..ae8a392 100644 --- a/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java +++ b/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java @@ -453,6 +453,8 @@ public class CQLSSTableWriter implements Closeable this.boundNames = p.right; if (this.insert.hasConditions()) throw new IllegalArgumentException("Conditional statements are not supported"); + if (this.insert.isCounter()) + throw new IllegalArgumentException("Counter update statements are not supported"); if (this.boundNames.isEmpty()) throw new IllegalArgumentException("Provided insert statement has no bind variables"); return this; http://git-wip-us.apache.org/repos/asf/cassandra/blob/3674ad9d/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java b/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java index fa5cbb4..9c8a2c2 100644 --- a/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java @@ -135,6 +135,28 @@ public class CQLSSTableWriterTest assertEquals(12, row.getInt("v2")); } + @Test(expected = IllegalArgumentException.class) + public void testForbidCounterUpdates() throws Exception + { + String KS = "cql_keyspace"; + String TABLE = "counter1"; + + File tempdir = Files.createTempDir(); + File dataDir = new File(tempdir.getAbsolutePath() + File.separator + KS + File.separator + TABLE); + assert dataDir.mkdirs(); + + String schema = "CREATE TABLE cql_keyspace.counter1 (" + + " my_id int, " + + " my_counter counter, " + + " PRIMARY KEY (my_id)" + + ")"; + String insert = String.format("UPDATE cql_keyspace.counter1 SET my_counter = my_counter - ? WHERE my_id = ?"); + CQLSSTableWriter.builder().inDirectory(dataDir) + .forTable(schema) + .withPartitioner(StorageService.instance.getPartitioner()) + .using(insert).build(); + } + @Test public void testSyncWithinPartition() throws Exception {