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

Reply via email to