cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ble...@apache.org
Subject [1/2] cassandra git commit: Fix PartitionUpdate.operationCount()for updates with static column
Date Wed, 28 Oct 2015 16:47:54 GMT
Repository: cassandra
Updated Branches:
  refs/heads/trunk 9be01e34c -> a4fe865d4


Fix PartitionUpdate.operationCount()for updates with static column

patch by Benjamin Lerer; reviewed by Sylvain Lebresne for CASSANDRA-10606


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3615da58
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3615da58
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3615da58

Branch: refs/heads/trunk
Commit: 3615da58310a778c7ee6d9b2d77fd3fb7a6700f4
Parents: 4d00468
Author: Benjamin Lerer <b.lerer@gmail.com>
Authored: Wed Oct 28 17:41:03 2015 +0100
Committer: Benjamin Lerer <b.lerer@gmail.com>
Committed: Wed Oct 28 17:41:03 2015 +0100

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../db/partitions/PartitionUpdate.java          |  1 +
 .../db/partition/PartitionUpdateTest.java       | 67 ++++++++++++++++++++
 3 files changed, 69 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/3615da58/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 3423a1e..c51cb51 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0
+ * Fix PartitionUpdate.operationCount()for updates with static column operations (CASSANDRA-10606)
  * Fix thrift get() queries with defined columns (CASSANDRA-10586)
  * Fix marking of indexes as built and removed (CASSANDRA-10601)
  * Skip initialization of non-registered 2i instances, remove Index::getIndexName (CASSANDRA-10595)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3615da58/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java b/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java
index b1776ca..52f8f67 100644
--- a/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java
+++ b/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java
@@ -334,6 +334,7 @@ public class PartitionUpdate extends AbstractBTreePartition
     public int operationCount()
     {
         return rowCount()
+             + (staticRow().isEmpty() ? 0 : 1)
              + deletionInfo.rangeCount()
              + (deletionInfo.getPartitionDeletion().isLive() ? 0 : 1);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3615da58/test/unit/org/apache/cassandra/db/partition/PartitionUpdateTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/partition/PartitionUpdateTest.java b/test/unit/org/apache/cassandra/db/partition/PartitionUpdateTest.java
new file mode 100644
index 0000000..a069db1
--- /dev/null
+++ b/test/unit/org/apache/cassandra/db/partition/PartitionUpdateTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cassandra.db.partition;
+
+import org.apache.cassandra.config.CFMetaData;
+import org.apache.cassandra.cql3.CQLTester;
+import org.apache.cassandra.db.RowUpdateBuilder;
+import org.apache.cassandra.db.partitions.PartitionUpdate;
+import org.apache.cassandra.utils.FBUtilities;
+import org.junit.Test;
+
+import junit.framework.Assert;
+
+public class PartitionUpdateTest extends CQLTester
+{
+    @Test
+    public void testOperationCount()
+    {
+        createTable("CREATE TABLE %s (key text, clustering int, a int, s int static, PRIMARY
KEY(key, clustering))");
+        CFMetaData cfm = currentTableMetadata();
+
+        long timestamp = FBUtilities.timestampMicros();
+        PartitionUpdate update = new RowUpdateBuilder(cfm, timestamp, "key0").clustering(1).add("a",
1).buildUpdate();
+        Assert.assertEquals(1, update.operationCount());
+
+        update = new RowUpdateBuilder(cfm, timestamp, "key0").buildUpdate();
+        Assert.assertEquals(0, update.operationCount());
+
+        update = new RowUpdateBuilder(cfm, timestamp, "key0").add("s", 1).buildUpdate();
+        Assert.assertEquals(1, update.operationCount());
+
+        update = new RowUpdateBuilder(cfm, timestamp, "key0").add("s", 1).buildUpdate();
+        update = new RowUpdateBuilder(update, timestamp, cfm.params.defaultTimeToLive).clustering(1)
+                                                                                      .add("a",
1)
+                                                                                      .buildUpdate();
+        Assert.assertEquals(2, update.operationCount());
+    }
+
+    @Test
+    public void testOperationCountWithCompactTable()
+    {
+        createTable("CREATE TABLE %s (key text PRIMARY KEY, a int) WITH COMPACT STORAGE");
+        CFMetaData cfm = currentTableMetadata();
+
+        PartitionUpdate update = new RowUpdateBuilder(cfm, FBUtilities.timestampMicros(),
"key0").add("a", 1)
+                                                                                        
        .buildUpdate();
+        Assert.assertEquals(1, update.operationCount());
+
+        update = new RowUpdateBuilder(cfm, FBUtilities.timestampMicros(), "key0").buildUpdate();
+        Assert.assertEquals(0, update.operationCount());
+    }
+}


Mime
View raw message