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 31ce794d588618a62b2cf1ed222e13bd62dcd2c3 Merge: 2dc7501 0c38f9d Author: Andrés de la Peña <a.penya.gar...@gmail.com> AuthorDate: Tue Aug 24 18:08:49 2021 +0100 Merge branch 'cassandra-3.11' into cassandra-4.0 CHANGES.txt | 1 + .../cassandra/index/internal/CassandraIndex.java | 5 +- .../validation/entities/SecondaryIndexTest.java | 140 ++++++++++++++++++++- 3 files changed, 139 insertions(+), 7 deletions(-) diff --cc CHANGES.txt index 867da66,9b6a6dc..ecd4409 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -14,10 -17,15 +14,11 @@@ Merged from 3.11 * Optimize bytes skipping when reading SSTable files (CASSANDRA-14415) * Enable tombstone compactions when unchecked_tombstone_compaction is set in TWCS (CASSANDRA-14496) * Read only the required SSTables for single partition queries (CASSANDRA-16737) - * Fix LeveledCompactionStrategy compacts last level throw an ArrayIndexOutOfBoundsException (CASSANDRA-15669) - * Maps $CASSANDRA_LOG_DIR to cassandra.logdir java property when executing nodetool (CASSANDRA-16199) - * Nodetool garbagecollect should retain SSTableLevel for LCS (CASSANDRA-16634) - * Ignore stale acks received in the shadow round (CASSANDRA-16588) - * Add autocomplete and error messages for provide_overlapping_tombstones (CASSANDRA-16350) - * Add StorageServiceMBean.getKeyspaceReplicationInfo(keyspaceName) (CASSANDRA-16447) - * Make sure sstables with moved starts are removed correctly in LeveledGenerations (CASSANDRA-16552) - * Upgrade jackson-databind to 2.9.10.8 (CASSANDRA-16462) Merged from 3.0: ++ * Fix secondary indexes on primary key columns skipping some writes (CASSANDRA-16868) + * Use JMX to validate nodetool --jobs parameter (CASSANDRA-16104) + * Handle properly UnsatisfiedLinkError in NativeLibrary#getProcessID() (CASSANDRA-16578) + * Remove mutation data from error log message (CASSANDRA-16817) * Binary releases no longer bundle the apidocs (javadoc) (CASSANDRA-16557) * Migrate dependency handling from maven-ant-tasks to resolver-ant-tasks, removing lib/ directory from version control (CASSANDRA-16557) * Don't allow seeds to replace without using unsafe (CASSANDRA-14463) diff --cc test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java index 5c17fb8,adb6911..9f22857 --- a/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java @@@ -1593,16 -1681,89 +1698,45 @@@ public class SecondaryIndexTest extend assertEmpty(execute("SELECT * FROM %s WHERE a = 5")); } + @Test + public void testIndexOnRegularColumnOverridingExpiredRow() throws Throwable + { + createTable("CREATE TABLE %s (pk int, ck int, v int, PRIMARY KEY (pk, ck))"); + createIndex("CREATE INDEX ON %s(v)"); + + execute("UPDATE %s USING TTL 1 SET v = 3 WHERE pk = 1 AND ck = 2"); + Thread.sleep(1000); + + assertEmpty(execute("SELECT * FROM %s WHERE v = 3")); + + execute("UPDATE %s SET v = 3 WHERE pk = 1 AND ck = 2"); + assertRows(execute("SELECT * FROM %s WHERE v = 3"), row(1, 2, 3)); + } + + @Test + public void testIndexOnRegularColumnOverridingDeletedRow() throws Throwable + { + createTable("CREATE TABLE %s (pk int, ck int, v int, PRIMARY KEY (pk, ck))"); + createIndex("CREATE INDEX ON %s(v)"); + + execute("INSERT INTO %s(pk, ck, v) VALUES (1, 2, 3)"); + execute("DELETE FROM %s WHERE pk=1 AND ck=2"); + execute("UPDATE %s SET v=3 WHERE pk=1 AND ck=2"); + + assertRows(execute("SELECT * FROM %s WHERE pk=1 AND ck=2"), row(1, 2, 3)); + assertRows(execute("SELECT * FROM %s WHERE v=3"), row(1, 2, 3)); + } + - @Test - public void testIndicesOnCompactTable() throws Throwable - { - assertInvalidMessage("COMPACT STORAGE with composite PRIMARY KEY allows no more than one column not part of the PRIMARY KEY (got: v1, v2)", - "CREATE TABLE test (pk int, c int, v1 int, v2 int, PRIMARY KEY(pk, c)) WITH COMPACT STORAGE"); - - createTable("CREATE TABLE %s (pk int, c int, v int, PRIMARY KEY(pk, c)) WITH COMPACT STORAGE"); - assertInvalidMessage("Secondary indexes are not supported on COMPACT STORAGE tables that have clustering columns", - "CREATE INDEX ON %s(v)"); - - createTable("CREATE TABLE %s (pk int PRIMARY KEY, v int) WITH COMPACT STORAGE"); - createIndex("CREATE INDEX ON %s(v)"); - - execute("INSERT INTO %s (pk, v) VALUES (?, ?)", 1, 1); - execute("INSERT INTO %s (pk, v) VALUES (?, ?)", 2, 1); - execute("INSERT INTO %s (pk, v) VALUES (?, ?)", 3, 3); - - assertRows(execute("SELECT pk, v FROM %s WHERE v = 1"), - row(1, 1), - row(2, 1)); - - assertRows(execute("SELECT pk, v FROM %s WHERE v = 3"), - row(3, 3)); - - assertEmpty(execute("SELECT pk, v FROM %s WHERE v = 5")); - - createTable("CREATE TABLE %s (pk int PRIMARY KEY, v1 int, v2 int) WITH COMPACT STORAGE"); - createIndex("CREATE INDEX ON %s(v1)"); - - execute("INSERT INTO %s (pk, v1, v2) VALUES (?, ?, ?)", 1, 1, 1); - execute("INSERT INTO %s (pk, v1, v2) VALUES (?, ?, ?)", 2, 1, 2); - execute("INSERT INTO %s (pk, v1, v2) VALUES (?, ?, ?)", 3, 3, 3); - - assertRows(execute("SELECT pk, v2 FROM %s WHERE v1 = 1"), - row(1, 1), - row(2, 2)); - - assertRows(execute("SELECT pk, v2 FROM %s WHERE v1 = 3"), - row(3, 3)); - - assertEmpty(execute("SELECT pk, v2 FROM %s WHERE v1 = 5")); - } - - private ResultMessage.Prepared prepareStatement(String cql, boolean forThrift) + private ResultMessage.Prepared prepareStatement(String cql) { - return QueryProcessor.prepare(String.format(cql, KEYSPACE, currentTable()), - ClientState.forInternalCalls(), - forThrift); + return QueryProcessor.prepare(format(cql, KEYSPACE, currentTable()), + ClientState.forInternalCalls()); } - private void validateCell(Cell cell, ColumnDefinition def, ByteBuffer val, long timestamp) + private void validateCell(Cell<?> cell, ColumnMetadata def, ByteBuffer val, long timestamp) { assertNotNull(cell); - assertEquals(0, def.type.compare(cell.value(), val)); + assertEquals(0, def.type.compare(cell.buffer(), val)); assertEquals(timestamp, cell.timestamp()); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org