This is an automated email from the ASF dual-hosted git repository. adelapena pushed a commit to branch cassandra-4.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git
commit fbad08979edc6cb88169c92d071b000846d6974a Merge: 36b73d70fb 8a9ba8866d Author: Andrés de la Peña <a.penya.gar...@gmail.com> AuthorDate: Tue May 31 17:11:36 2022 +0100 Merge branch 'cassandra-3.11' into cassandra-4.0 .../upgrade/CompactStorageColumnDeleteTest.java | 60 ++++++++ .../upgrade/CompactStorageHiddenColumnTest.java | 61 ++++++++ ...CompactStorageImplicitNullInClusteringTest.java | 48 ++++++ .../upgrade/CompactStoragePagingTest.java | 55 +++++++ .../upgrade/CompactStorageUpgradeTest.java | 161 --------------------- ...ropCompactStorageNullClusteringValuesTest.java} | 4 +- .../upgrade/DropCompactStorageTest.java | 51 +++++++ 7 files changed, 276 insertions(+), 164 deletions(-) diff --cc test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageColumnDeleteTest.java index 0000000000,0000000000..720a1b5db0 new file mode 100644 --- /dev/null +++ b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageColumnDeleteTest.java @@@ -1,0 -1,0 +1,60 @@@ ++/* ++ * 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.distributed.upgrade; ++ ++import org.junit.Test; ++ ++import org.apache.cassandra.distributed.api.ConsistencyLevel; ++ ++import static org.apache.cassandra.distributed.shared.AssertUtils.assertRows; ++import static org.apache.cassandra.distributed.shared.AssertUtils.row; ++ ++public class CompactStorageColumnDeleteTest extends UpgradeTestBase ++{ ++ @Test ++ public void testColumnDeleteWithCompactStorage() throws Throwable ++ { ++ new TestCase() ++ .nodes(2) ++ .nodesToUpgrade(2) ++ .upgradesFrom(v30) ++ .setup((cluster) -> { ++ cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".tbl (pk int, ck int, v int, PRIMARY KEY (pk, ck)) WITH COMPACT STORAGE"); ++ }) ++ .runAfterNodeUpgrade((cluster, i) -> { ++ for (int coord = 1; coord <= 2; coord++) ++ { ++ int v1 = coord * 10; ++ int v2 = coord * 10; ++ ++ cluster.coordinator(coord).execute("INSERT INTO " + KEYSPACE + ".tbl (pk, ck, v) VALUES (?, ?, ?)", ConsistencyLevel.ALL, v1, v1, v1); ++ cluster.coordinator(coord).execute("DELETE v FROM " + KEYSPACE + ".tbl WHERE pk = ? AND ck = ?", ConsistencyLevel.ALL, v1, v1); ++ assertRows(cluster.coordinator(coord).execute("SELECT * FROM " + KEYSPACE + ".tbl WHERE pk = ?", ++ ConsistencyLevel.ALL, ++ v1)); ++ ++ cluster.coordinator(coord).execute("INSERT INTO " + KEYSPACE + ".tbl (pk, ck, v) VALUES (?, ?, ?)", ConsistencyLevel.ALL, v2, v2, v2); ++ assertRows(cluster.coordinator(coord).execute("SELECT * FROM " + KEYSPACE + ".tbl WHERE pk = ?", ++ ConsistencyLevel.ALL, ++ v2), ++ row(v2, v2, v2)); ++ } ++ }).run(); ++ } ++} diff --cc test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageHiddenColumnTest.java index 0000000000,0000000000..4e5236c4a8 new file mode 100644 --- /dev/null +++ b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageHiddenColumnTest.java @@@ -1,0 -1,0 +1,61 @@@ ++/* ++ * 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.distributed.upgrade; ++ ++import org.junit.Test; ++ ++import org.apache.cassandra.distributed.api.ConsistencyLevel; ++ ++import static org.apache.cassandra.distributed.shared.AssertUtils.assertRows; ++import static org.apache.cassandra.distributed.shared.AssertUtils.row; ++ ++public class CompactStorageHiddenColumnTest extends UpgradeTestBase ++{ ++ @Test ++ public void testHiddenColumnWithCompactStorage() throws Throwable ++ { ++ new TestCase() ++ .nodes(2) ++ .nodesToUpgrade(2) ++ .upgradesFrom(v30) ++ .setup((cluster) -> { ++ cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".tbl (pk int, ck int, PRIMARY KEY (pk, ck)) WITH COMPACT STORAGE"); ++ }) ++ .runAfterNodeUpgrade((cluster, node) -> { ++ ++ for (int coord = 1; coord <= 2; coord++) ++ { ++ int v1 = coord * 10; ++ int v2 = coord * 10; ++ ++ cluster.coordinator(coord).execute("INSERT INTO " + KEYSPACE + ".tbl (pk, ck) VALUES (?, ?)", ConsistencyLevel.ALL, v1, v1); ++ cluster.coordinator(coord).execute("DELETE FROM " + KEYSPACE + ".tbl WHERE pk = ? AND ck = ?", ConsistencyLevel.ALL, v1, v1); ++ assertRows(cluster.coordinator(coord).execute("SELECT * FROM " + KEYSPACE + ".tbl WHERE pk = ?", ++ ConsistencyLevel.ALL, ++ v1)); ++ ++ cluster.coordinator(coord).execute("INSERT INTO " + KEYSPACE + ".tbl (pk, ck) VALUES (?, ?)", ConsistencyLevel.ALL, v2, v2); ++ assertRows(cluster.coordinator(coord).execute("SELECT * FROM " + KEYSPACE + ".tbl WHERE pk = ?", ++ ConsistencyLevel.ALL, ++ v2), ++ row(v2, v2)); ++ } ++ }).run(); ++ } ++} diff --cc test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageImplicitNullInClusteringTest.java index 0000000000,0000000000..9d4824ae5b new file mode 100644 --- /dev/null +++ b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageImplicitNullInClusteringTest.java @@@ -1,0 -1,0 +1,48 @@@ ++/* ++ * 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.distributed.upgrade; ++ ++import org.junit.Test; ++ ++import org.apache.cassandra.distributed.api.ConsistencyLevel; ++ ++import static org.apache.cassandra.distributed.shared.AssertUtils.assertRows; ++import static org.apache.cassandra.distributed.shared.AssertUtils.row; ++ ++public class CompactStorageImplicitNullInClusteringTest extends UpgradeTestBase ++{ ++ @Test ++ public void testImplicitNullInClusteringWithCompactStorage() throws Throwable ++ { ++ new TestCase() ++ .nodes(2) ++ .nodesToUpgrade(2) ++ .upgradesFrom(v30) ++ .setup((cluster) -> { ++ cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".tbl (pk int, ck1 int, ck2 int, v int, PRIMARY KEY (pk, ck1, ck2)) WITH COMPACT STORAGE"); ++ }) ++ .runAfterClusterUpgrade((cluster) -> { ++ cluster.coordinator(1).execute("INSERT INTO " + KEYSPACE + ".tbl (pk, ck1, v) VALUES (2, 2, 2)", ConsistencyLevel.ALL); ++ assertRows(cluster.coordinator(1).execute("SELECT * FROM " + KEYSPACE + ".tbl WHERE pk = ?", ++ ConsistencyLevel.ALL, ++ 2), ++ row(2, 2, null, 2)); ++ }).run(); ++ } ++} diff --cc test/distributed/org/apache/cassandra/distributed/upgrade/CompactStoragePagingTest.java index 0000000000,0000000000..307d6dd7fe new file mode 100644 --- /dev/null +++ b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStoragePagingTest.java @@@ -1,0 -1,0 +1,55 @@@ ++/* ++ * 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.distributed.upgrade; ++ ++import java.util.Iterator; ++ ++import org.junit.Assert; ++import org.junit.Test; ++ ++import org.apache.cassandra.distributed.api.ConsistencyLevel; ++ ++public class CompactStoragePagingTest extends UpgradeTestBase ++{ ++ @Test ++ public void testPagingWithCompactStorage() throws Throwable ++ { ++ new TestCase() ++ .nodes(2) ++ .nodesToUpgrade(2) ++ .upgradesFrom(v30) ++ .setup((cluster) -> { ++ cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".tbl (pk int, ck int, v int, PRIMARY KEY (pk, ck)) WITH COMPACT STORAGE"); ++ for (int i = 1; i < 10; i++) ++ cluster.coordinator(1).execute("INSERT INTO " + KEYSPACE + ".tbl (pk, ck, v) VALUES (?, ?, ?)", ConsistencyLevel.ALL, 1, i, i); ++ }) ++ .runAfterNodeUpgrade((cluster, i) -> { ++ for (int coord = 1; coord <= 2; coord++) ++ { ++ Iterator<Object[]> iter = cluster.coordinator(coord).executeWithPaging("SELECT * FROM " + KEYSPACE + ".tbl WHERE pk = 1", ConsistencyLevel.ALL, 2); ++ for (int j = 1; j < 10; j++) ++ { ++ Assert.assertTrue(iter.hasNext()); ++ Assert.assertArrayEquals(new Object[]{ 1, j, j }, iter.next()); ++ } ++ Assert.assertFalse(iter.hasNext()); ++ } ++ }).run(); ++ } ++} diff --cc test/distributed/org/apache/cassandra/distributed/upgrade/DropCompactStorageNullClusteringValuesTest.java index 08c4c99ec7,0000000000..1657765b06 mode 100644,000000..100644 --- a/test/distributed/org/apache/cassandra/distributed/upgrade/DropCompactStorageNullClusteringValuesTest.java +++ b/test/distributed/org/apache/cassandra/distributed/upgrade/DropCompactStorageNullClusteringValuesTest.java @@@ -1,61 -1,0 +1,59 @@@ +/* + * 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.distributed.upgrade; + +import org.junit.Test; + - import org.apache.cassandra.distributed.shared.Versions; - +import static org.apache.cassandra.distributed.api.Feature.GOSSIP; +import static org.apache.cassandra.distributed.api.Feature.NATIVE_PROTOCOL; +import static org.apache.cassandra.distributed.api.Feature.NETWORK; +import static org.apache.cassandra.distributed.shared.AssertUtils.assertRows; + - public class CompactStorage3to4UpgradeTest extends UpgradeTestBase ++public class DropCompactStorageNullClusteringValuesTest extends UpgradeTestBase +{ + public static final String TABLE_NAME = "cs_tbl"; + + @Test + public void testNullClusteringValues() throws Throwable + { + new TestCase().nodes(1) + .upgradesFrom(v30) + .withConfig(config -> config.with(GOSSIP, NETWORK, NATIVE_PROTOCOL).set("enable_drop_compact_storage", true)) + .setup(cluster -> { + String create = "CREATE TABLE %s.%s(k int, c1 int, c2 int, v int, PRIMARY KEY (k, c1, c2)) " + + "WITH compaction = { 'class':'LeveledCompactionStrategy', 'enabled':'false'} AND COMPACT STORAGE"; + cluster.schemaChange(String.format(create, KEYSPACE, TABLE_NAME)); + + String insert = "INSERT INTO %s.%s(k, c1, v) values (?, ?, ?)"; + cluster.get(1).executeInternal(String.format(insert, KEYSPACE, TABLE_NAME), 1, 1, 1); + cluster.get(1).flush(KEYSPACE); + + cluster.get(1).executeInternal(String.format(insert, KEYSPACE, TABLE_NAME), 2, 2, 2); + cluster.get(1).flush(KEYSPACE); + + cluster.schemaChange(String.format("ALTER TABLE %s.%s DROP COMPACT STORAGE", KEYSPACE, TABLE_NAME)); + }) + .runAfterNodeUpgrade((cluster, node) -> { + cluster.get(1).forceCompact(KEYSPACE, TABLE_NAME); + Object[][] actual = cluster.get(1).executeInternal(String.format("SELECT * FROM %s.%s", KEYSPACE, TABLE_NAME)); + assertRows(actual, new Object[] {1, 1, null, 1}, new Object[] {2, 2, null, 2}); + }) + .run(); + } +} diff --cc test/distributed/org/apache/cassandra/distributed/upgrade/DropCompactStorageTest.java index 0000000000,0000000000..c645085bd0 new file mode 100644 --- /dev/null +++ b/test/distributed/org/apache/cassandra/distributed/upgrade/DropCompactStorageTest.java @@@ -1,0 -1,0 +1,51 @@@ ++/* ++ * 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.distributed.upgrade; ++ ++import org.junit.Test; ++ ++import org.apache.cassandra.distributed.api.ConsistencyLevel; ++ ++import static org.apache.cassandra.distributed.api.Feature.GOSSIP; ++import static org.apache.cassandra.distributed.api.Feature.NETWORK; ++import static org.apache.cassandra.distributed.shared.AssertUtils.assertRows; ++import static org.apache.cassandra.distributed.shared.AssertUtils.row; ++ ++public class DropCompactStorageTest extends UpgradeTestBase ++{ ++ @Test ++ public void testDropCompactStorage() throws Throwable ++ { ++ new TestCase() ++ .nodes(2) ++ .nodesToUpgrade(1, 2) ++ .upgradesFrom(v30) ++ .withConfig(config -> config.with(GOSSIP, NETWORK).set("enable_drop_compact_storage", true)) ++ .setup((cluster) -> { ++ cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".tbl (pk int, ck int, PRIMARY KEY (pk, ck)) WITH COMPACT STORAGE"); ++ cluster.coordinator(1).execute("INSERT INTO " + KEYSPACE + ".tbl (pk, ck) VALUES (1,1)", ConsistencyLevel.ALL); ++ }) ++ .runAfterClusterUpgrade((cluster) -> { ++ cluster.schemaChange("ALTER TABLE " + KEYSPACE + ".tbl DROP COMPACT STORAGE"); ++ assertRows(cluster.coordinator(1).execute("SELECT * FROM " + KEYSPACE + ".tbl WHERE pk = 1", ++ ConsistencyLevel.ALL), ++ row(1, 1, null)); ++ }).run(); ++ } ++} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org