You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2015/11/04 11:41:04 UTC
[1/2] cassandra git commit: Check for primary key columns in
decodeCellName
Repository: cassandra
Updated Branches:
refs/heads/trunk 724ba07a7 -> 5a1d6553e
Check for primary key columns in decodeCellName
patch by mike_tr_adamson; reviewed by slebresne for CASSANDRA-10608
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2c997615
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2c997615
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2c997615
Branch: refs/heads/trunk
Commit: 2c9976150fa2f033f8e10c906d699d966b1c437a
Parents: 8a8427d
Author: Mike Adamson <ma...@datastax.com>
Authored: Wed Oct 28 14:39:14 2015 +0000
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Wed Nov 4 11:39:02 2015 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../org/apache/cassandra/db/LegacyLayout.java | 7 +-
.../apache/cassandra/db/LegacyCellNameTest.java | 81 ++++++++++++++++++++
3 files changed, 87 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2c997615/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 9266386..e9f92c6 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0
+ * Fix bug when adding a column to thrift with the same name than a primary key (CASSANDRA-10608)
* Add client address argument to IAuthenticator::newSaslNegotiator (CASSANDRA-8068)
* Fix implementation of LegacyLayout.LegacyBoundComparator (CASSANDRA-10602)
* Don't use 'names query' read path for counters (CASSANDRA-10572)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2c997615/src/java/org/apache/cassandra/db/LegacyLayout.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/LegacyLayout.java b/src/java/org/apache/cassandra/db/LegacyLayout.java
index 3c64443..91b7755 100644
--- a/src/java/org/apache/cassandra/db/LegacyLayout.java
+++ b/src/java/org/apache/cassandra/db/LegacyLayout.java
@@ -157,13 +157,16 @@ public abstract class LegacyLayout
return new LegacyCellName(clustering, null, null);
ColumnDefinition def = metadata.getColumnDefinition(column);
- if (def == null)
+ if ((def == null) || def.isPrimaryKeyColumn())
{
// If it's a compact table, it means the column is in fact a "dynamic" one
if (metadata.isCompactTable())
return new LegacyCellName(new Clustering(column), metadata.compactValueColumn(), null);
- throw new UnknownColumnException(metadata, column);
+ if (def == null)
+ throw new UnknownColumnException(metadata, column);
+ else
+ throw new IllegalArgumentException("Cannot add primary key column to partition update");
}
ByteBuffer collectionElement = metadata.isCompound() ? CompositeType.extractComponent(cellname, metadata.comparator.size() + 1) : null;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2c997615/test/unit/org/apache/cassandra/db/LegacyCellNameTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/LegacyCellNameTest.java b/test/unit/org/apache/cassandra/db/LegacyCellNameTest.java
new file mode 100644
index 0000000..fa29b1e
--- /dev/null
+++ b/test/unit/org/apache/cassandra/db/LegacyCellNameTest.java
@@ -0,0 +1,81 @@
+/*
+ * 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;
+
+import org.junit.Test;
+
+import org.apache.cassandra.config.CFMetaData;
+
+import static junit.framework.Assert.assertTrue;
+
+public class LegacyCellNameTest
+{
+ @Test
+ public void testColumnSameNameAsPartitionKeyCompactStorage() throws Exception
+ {
+ CFMetaData cfm = CFMetaData.compile("CREATE TABLE cs (" +
+ "k int PRIMARY KEY, v int)" +
+ " WITH COMPACT STORAGE", "ks");
+
+ LegacyLayout.LegacyCellName cellName
+ = LegacyLayout.decodeCellName(cfm,
+ LegacyLayout.makeLegacyComparator(cfm)
+ .fromString("k"));
+
+ assertTrue(cellName.column.isRegular());
+ }
+
+ @Test
+ public void testColumnSameNameAsClusteringKeyCompactStorage() throws Exception
+ {
+ CFMetaData cfm = CFMetaData.compile("CREATE TABLE cs (" +
+ "k int PRIMARY KEY, v int)" +
+ " WITH COMPACT STORAGE", "ks");
+
+ LegacyLayout.LegacyCellName cellName
+ = LegacyLayout.decodeCellName(cfm,
+ LegacyLayout.makeLegacyComparator(cfm)
+ .fromString("column1"));
+
+ assertTrue(cellName.column.isRegular());
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testColumnSameNameAsPartitionKeyCql3() throws Exception
+ {
+ CFMetaData cfm = CFMetaData.compile("CREATE TABLE cs (" +
+ "k int PRIMARY KEY, v int)", "ks");
+
+ LegacyLayout.LegacyCellName cellName
+ = LegacyLayout.decodeCellName(cfm,
+ LegacyLayout.makeLegacyComparator(cfm)
+ .fromString("k"));
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testColumnSameNameAsClusteringKeyCql3() throws Exception
+ {
+ CFMetaData cfm = CFMetaData.compile("CREATE TABLE cs (" +
+ "k int, c text, v int, PRIMARY KEY(k, c))", "ks");
+
+ LegacyLayout.LegacyCellName cellName
+ = LegacyLayout.decodeCellName(cfm,
+ LegacyLayout.makeLegacyComparator(cfm)
+ .fromString("c"));
+ }
+}
[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into trunk
Posted by sl...@apache.org.
Merge branch 'cassandra-3.0' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5a1d6553
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5a1d6553
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5a1d6553
Branch: refs/heads/trunk
Commit: 5a1d6553e64592f046fb1d01756c75fea8c1d777
Parents: 724ba07 2c99761
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Wed Nov 4 11:40:56 2015 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Wed Nov 4 11:40:56 2015 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../org/apache/cassandra/db/LegacyLayout.java | 7 +-
.../apache/cassandra/db/LegacyCellNameTest.java | 81 ++++++++++++++++++++
3 files changed, 87 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5a1d6553/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index b0aad8c,e9f92c6..1d6a84c
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,10 -1,5 +1,11 @@@
+3.2
+ * Added graphing option to cassandra-stress (CASSANDRA-7918)
+ * Abort in-progress queries that time out (CASSANDRA-7392)
+ * Add transparent data encryption core classes (CASSANDRA-9945)
+
+
3.0
+ * Fix bug when adding a column to thrift with the same name than a primary key (CASSANDRA-10608)
* Add client address argument to IAuthenticator::newSaslNegotiator (CASSANDRA-8068)
* Fix implementation of LegacyLayout.LegacyBoundComparator (CASSANDRA-10602)
* Don't use 'names query' read path for counters (CASSANDRA-10572)