Drop table should remove corresponding entries in dropped_columns table patch by Zhao Yang; reviewed by Aleksey Yeschenko for CASSANDRA-13730
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d9eabd3d Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d9eabd3d Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d9eabd3d Branch: refs/heads/cassandra-3.11 Commit: d9eabd3d0cbf1287aa7d01bc23dd8e39c3acf232 Parents: d74ed4b Author: Zhao Yang <zhaoyangsingap...@gmail.com> Authored: Sun Jul 30 12:24:46 2017 +0800 Committer: Aleksey Yeschenko <alek...@yeschenko.com> Committed: Thu Aug 3 12:32:13 2017 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../org/apache/cassandra/schema/SchemaKeyspace.java | 9 +++++++++ .../cassandra/cql3/validation/operations/DropTest.java | 13 +++++++++++++ 3 files changed, 23 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/d9eabd3d/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 7e518ed..799e7f4 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.15 + * Drop table should remove corresponding entries in dropped_columns table (CASSANDRA-13730) * Log warn message until legacy auth tables have been migrated (CASSANDRA-13371) * Fix incorrect [2.1 <- 3.0] serialization of counter cells created in 2.0 (CASSANDRA-13691) * Fix invalid writetime for null cells (CASSANDRA-13711) http://git-wip-us.apache.org/repos/asf/cassandra/blob/d9eabd3d/src/java/org/apache/cassandra/schema/SchemaKeyspace.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java index 63017ec..06450f1 100644 --- a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java +++ b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java @@ -31,6 +31,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.cassandra.config.*; +import org.apache.cassandra.config.CFMetaData.DroppedColumn; import org.apache.cassandra.config.ColumnDefinition.ClusteringOrder; import org.apache.cassandra.cql3.*; import org.apache.cassandra.cql3.functions.*; @@ -626,6 +627,9 @@ public final class SchemaKeyspace for (ColumnDefinition column : table.allColumns()) dropColumnFromSchemaMutation(table, column, timestamp, mutation); + for (CFMetaData.DroppedColumn column : table.getDroppedColumns().values()) + dropDroppedColumnFromSchemaMutation(table, column, timestamp, mutation); + for (TriggerMetadata trigger : table.getTriggers()) dropTriggerFromSchemaMutation(table, trigger, timestamp, mutation); @@ -657,6 +661,11 @@ public final class SchemaKeyspace RowUpdateBuilder.deleteRow(Columns, timestamp, mutation, table.cfName, column.name.toString()); } + private static void dropDroppedColumnFromSchemaMutation(CFMetaData table, DroppedColumn column, long timestamp, Mutation mutation) + { + RowUpdateBuilder.deleteRow(DroppedColumns, timestamp, mutation, table.cfName, column.name); + } + private static void addDroppedColumnToSchemaMutation(CFMetaData table, CFMetaData.DroppedColumn column, long timestamp, Mutation mutation) { RowUpdateBuilder adder = new RowUpdateBuilder(DroppedColumns, timestamp, mutation).clustering(table.cfName, column.name); http://git-wip-us.apache.org/repos/asf/cassandra/blob/d9eabd3d/test/unit/org/apache/cassandra/cql3/validation/operations/DropTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/validation/operations/DropTest.java b/test/unit/org/apache/cassandra/cql3/validation/operations/DropTest.java index e5c7089..692eb45 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/operations/DropTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/operations/DropTest.java @@ -34,4 +34,17 @@ public class DropTest extends CQLTester execute("DROP TABLE IF EXISTS keyspace_does_not_exist.table_does_not_exist"); } + @Test + public void testDropTableWithDroppedColumns() throws Throwable + { + // CASSANDRA-13730: entry should be removed from dropped_columns table when table is dropped + String cf = createTable("CREATE TABLE %s (k1 int, c1 int , v1 int, v2 int, PRIMARY KEY (k1, c1))"); + + execute("ALTER TABLE %s DROP v2"); + execute("DROP TABLE %s"); + + assertRowsIgnoringOrder(execute("select * from system_schema.dropped_columns where keyspace_name = '" + + keyspace() + + "' and table_name = '" + cf + "'")); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org