This is an automated email from the ASF dual-hosted git repository. samt pushed a commit to branch cassandra-3.11 in repository https://gitbox.apache.org/repos/asf/cassandra.git
commit 83baa27104ba4f8e20ec030c905a3110556bc629 Merge: 75fde25 f4b6e1d Author: Sam Tunnicliffe <[email protected]> AuthorDate: Thu Jun 27 16:25:43 2019 +0100 Merge branch 'cassandra-3.0' into cassandra-3.11 CHANGES.txt | 1 + .../cassandra/db/IllegalLegacyColumnException.java | 41 -------- src/java/org/apache/cassandra/db/LegacyLayout.java | 76 +++++--------- src/java/org/apache/cassandra/db/ReadCommand.java | 2 +- .../cassandra/db/UnfilteredDeserializer.java | 7 -- .../cassandra/db/UnknownColumnException.java | 16 ++- .../apache/cassandra/thrift/CassandraServer.java | 34 +++---- .../apache/cassandra/thrift/ThriftValidation.java | 10 +- ..._ka_with_illegal_cell_names_indexed-ka-1-CRC.db | Bin 0 -> 8 bytes ...ka_with_illegal_cell_names_indexed-ka-1-Data.db | Bin 0 -> 6487 bytes ...ith_illegal_cell_names_indexed-ka-1-Digest.sha1 | 1 + ..._with_illegal_cell_names_indexed-ka-1-Filter.db | Bin 0 -> 16 bytes ...a_with_illegal_cell_names_indexed-ka-1-Index.db | Bin 0 -> 453 bytes ...h_illegal_cell_names_indexed-ka-1-Statistics.db | Bin 0 -> 4472 bytes ...ka_with_illegal_cell_names_indexed-ka-1-TOC.txt | 8 ++ .../cql3/validation/ThriftIllegalColumnsTest.java | 100 +++++++++++++++++++ .../apache/cassandra/db/LegacyCellNameTest.java | 18 +++- .../cassandra/io/sstable/LegacySSTableTest.java | 109 ++++++++++++++++----- 18 files changed, 273 insertions(+), 150 deletions(-) diff --cc CHANGES.txt index e2aa652,d34406b..e433f7d --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,8 -1,5 +1,9 @@@ -3.0.19 +3.11.5 + * Fix cassandra-env.sh to use $CASSANDRA_CONF to find cassandra-jaas.config (CASSANDRA-14305) + * Fixed nodetool cfstats printing index name twice (CASSANDRA-14903) + * Add flag to disable SASI indexes, and warnings on creation (CASSANDRA-14866) +Merged from 3.0: + * Skipping illegal legacy cells can break reverse iteration of indexed partitions (CASSANDRA-15178) * Handle paging states serialized with a different version than the session's (CASSANDRA-15176) * Throw IOE instead of asserting on unsupporter peer versions (CASSANDRA-15066) * Update token metadata when handling MOVING/REMOVING_TOKEN events (CASSANDRA-15120) diff --cc src/java/org/apache/cassandra/db/LegacyLayout.java index 50fd945,b03f56e..765d39b --- a/src/java/org/apache/cassandra/db/LegacyLayout.java +++ b/src/java/org/apache/cassandra/db/LegacyLayout.java @@@ -185,22 -184,16 +185,16 @@@ public abstract class LegacyLayou return new LegacyCellName(clustering, null, null); ColumnDefinition def = metadata.getColumnDefinition(column); - if ((def == null) || def.isPrimaryKeyColumn()) + + if (metadata.isCompactTable()) { - // If it's a compact table, it means the column is in fact a "dynamic" one - if (metadata.isCompactTable()) + if (def == null || def.isPrimaryKeyColumn()) + // If it's a compact table, it means the column is in fact a "dynamic" one - return new LegacyCellName(new Clustering(column), metadata.compactValueColumn(), null); + return new LegacyCellName(Clustering.make(column), metadata.compactValueColumn(), null); - - if (def == null) - { - throw new UnknownColumnException(metadata, column); - } - else - { - noSpamLogger.warn("Illegal cell name for CQL3 table {}.{}. {} is defined as a primary key column", - metadata.ksName, metadata.cfName, stringify(column)); - throw new IllegalLegacyColumnException(metadata, column); - } + } + else if (def == null) + { + throw new UnknownColumnException(metadata, column); } ByteBuffer collectionElement = metadata.isCompound() ? CompositeType.extractComponent(cellname, metadata.comparator.size() + 1) : null; diff --cc src/java/org/apache/cassandra/thrift/CassandraServer.java index 868f937,163eb2d..444a938 --- a/src/java/org/apache/cassandra/thrift/CassandraServer.java +++ b/src/java/org/apache/cassandra/thrift/CassandraServer.java @@@ -2203,9 -2176,9 +2203,9 @@@ public class CassandraServer implement PartitionUpdate update = PartitionUpdate.singleRowUpdate(metadata, key, BTreeRow.singleCellRow(name.clustering, cell)); org.apache.cassandra.db.Mutation mutation = new org.apache.cassandra.db.Mutation(update); - doInsert(consistency_level, Arrays.asList(new CounterMutation(mutation, ThriftConversion.fromThrift(consistency_level)))); + doInsert(consistency_level, Arrays.asList(new CounterMutation(mutation, ThriftConversion.fromThrift(consistency_level))), queryStartNanoTime); } - catch (MarshalException | UnknownColumnException | IllegalLegacyColumnException e) + catch (MarshalException|UnknownColumnException e) { throw new InvalidRequestException(e.getMessage()); } diff --cc src/java/org/apache/cassandra/thrift/ThriftValidation.java index 602f15a,4b208ba..1b61fd5 --- a/src/java/org/apache/cassandra/thrift/ThriftValidation.java +++ b/src/java/org/apache/cassandra/thrift/ThriftValidation.java @@@ -465,9 -465,13 +466,12 @@@ public class ThriftValidatio try { LegacyLayout.LegacyCellName cn = LegacyLayout.decodeCellName(metadata, scName, column.name); + if (cn.column.isPrimaryKeyColumn()) + throw new org.apache.cassandra.exceptions.InvalidRequestException(String.format("Cannot add primary key column %s to partition update", cn.column.name)); + - cn.column.validateCellValue(column.value); - + cn.column.type.validateCellValue(column.value); } - catch (UnknownColumnException | IllegalLegacyColumnException e) + catch (UnknownColumnException e) { throw new org.apache.cassandra.exceptions.InvalidRequestException(e.getMessage()); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
