You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by mc...@apache.org on 2019/11/15 18:04:20 UTC
[cassandra] branch cassandra-3.11 updated: Fix LegacyLayout to have
same behavior as 2.x when handling unknown column names
This is an automated email from the ASF dual-hosted git repository.
mck pushed a commit to branch cassandra-3.11
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-3.11 by this push:
new 31a86f8 Fix LegacyLayout to have same behavior as 2.x when handling unknown column names
31a86f8 is described below
commit 31a86f891b00ec0db20fcef4919dce63be7bf31d
Author: Cameron Zemek <ca...@instaclustr.com>
AuthorDate: Fri Nov 1 15:36:03 2019 +1000
Fix LegacyLayout to have same behavior as 2.x when handling unknown column names
patch by Cameron Zemek; reviewed by Mick Semb Wever for CASSANDRA-15081
---
CHANGES.txt | 1 +
src/java/org/apache/cassandra/db/LegacyLayout.java | 8 ++++----
...legacy_tables-legacy_ka_15081-ka-1-CompressionInfo.db | Bin 0 -> 43 bytes
.../legacy_tables-legacy_ka_15081-ka-1-Data.db | Bin 0 -> 76 bytes
.../legacy_tables-legacy_ka_15081-ka-1-Digest.sha1 | 1 +
.../legacy_tables-legacy_ka_15081-ka-1-Filter.db | Bin 0 -> 16 bytes
.../legacy_tables-legacy_ka_15081-ka-1-Index.db | Bin 0 -> 18 bytes
.../legacy_tables-legacy_ka_15081-ka-1-Statistics.db | Bin 0 -> 4438 bytes
.../legacy_tables-legacy_ka_15081-ka-1-Summary.db | Bin 0 -> 92 bytes
.../legacy_tables-legacy_ka_15081-ka-1-TOC.txt | 8 ++++++++
.../apache/cassandra/io/sstable/LegacySSTableTest.java | 13 ++++++++++++-
11 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index c1480a4..8c52f34 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.11.6
+ * Fix LegacyLayout to have same behavior as 2.x when handling unknown column names (CASSANDRA-15081)
Merged from 3.0:
* Minimize clustering values in metadata collector (CASSANDRA-15400)
* Avoid over-trimming of results in mixed mode clusters (CASSANDRA-15405)
diff --git a/src/java/org/apache/cassandra/db/LegacyLayout.java b/src/java/org/apache/cassandra/db/LegacyLayout.java
index bbef11d..09f9cfa 100644
--- a/src/java/org/apache/cassandra/db/LegacyLayout.java
+++ b/src/java/org/apache/cassandra/db/LegacyLayout.java
@@ -1213,10 +1213,10 @@ public abstract class LegacyLayout
// but we don't do this here and re-throw the exception because the calling code sometimes has to know
// about this happening. This does mean code calling this method should handle this case properly.
if (!metadata.ksName.equals(SchemaConstants.SYSTEM_KEYSPACE_NAME) && metadata.getDroppedColumnDefinition(e.columnName) == null)
- throw new IllegalStateException(String.format("Got cell for unknown column %s in sstable of %s.%s: " +
- "This suggest a problem with the schema which doesn't list " +
- "this column. Even if that column was dropped, it should have " +
- "been listed as such", metadata.ksName, metadata.cfName, UTF8Type.instance.compose(e.columnName)), e);
+ logger.warn(String.format("Got cell for unknown column %s in sstable of %s.%s: " +
+ "This suggest a problem with the schema which doesn't list " +
+ "this column. Even if that column was dropped, it should have " +
+ "been listed as such", metadata.ksName, metadata.cfName, UTF8Type.instance.compose(e.columnName)), e);
throw e;
}
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-CompressionInfo.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-CompressionInfo.db
new file mode 100644
index 0000000..3793e50
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Data.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Data.db
new file mode 100644
index 0000000..94c6f93
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Data.db differ
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Digest.sha1 b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Digest.sha1
new file mode 100644
index 0000000..60bd60d
--- /dev/null
+++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Digest.sha1
@@ -0,0 +1 @@
+718738748
\ No newline at end of file
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Filter.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Filter.db
new file mode 100644
index 0000000..00a88b4
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Filter.db differ
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Index.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Index.db
new file mode 100644
index 0000000..c3b42d8
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Index.db differ
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Statistics.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Statistics.db
new file mode 100644
index 0000000..d708358
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Statistics.db differ
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Summary.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Summary.db
new file mode 100644
index 0000000..6bfc8aa
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-Summary.db differ
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-TOC.txt b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-TOC.txt
new file mode 100644
index 0000000..5ece1a1
--- /dev/null
+++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_15081/legacy_tables-legacy_ka_15081-ka-1-TOC.txt
@@ -0,0 +1,8 @@
+Digest.sha1
+Data.db
+Statistics.db
+Summary.db
+Index.db
+TOC.txt
+Filter.db
+CompressionInfo.db
diff --git a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
index a08e7da..e665f86 100644
--- a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
@@ -110,7 +110,7 @@ public class LegacySSTableTest
public static void defineSchema() throws ConfigurationException
{
String scp = System.getProperty(LEGACY_SSTABLE_PROP);
- Assert.assertNotNull("System property " + LEGACY_SSTABLE_ROOT + " not set", scp);
+ Assert.assertNotNull("System property " + LEGACY_SSTABLE_PROP + " not set", scp);
LEGACY_SSTABLE_ROOT = new File(scp).getAbsoluteFile();
Assert.assertTrue("System property " + LEGACY_SSTABLE_ROOT + " does not specify a directory", LEGACY_SSTABLE_ROOT.isDirectory());
@@ -437,6 +437,17 @@ public class LegacySSTableTest
}
@Test
+ public void test15081() throws Exception
+ {
+ QueryProcessor.executeInternal("CREATE TABLE legacy_tables.legacy_ka_15081 (id int primary key, payload text)");
+ loadLegacyTable("legacy_%s_15081%s", "ka", "");
+ UntypedResultSet results =
+ QueryProcessor.executeOnceInternal(
+ String.format("SELECT * FROM legacy_tables.legacy_ka_15081"));
+ assertRows(results, row(1, "hello world"));
+ }
+
+ @Test
public void testReadingLegacyTablesWithIllegalCellNames() throws Exception {
/**
* The sstable can be generated externally with SSTableSimpleUnsortedWriter:
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org