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

Reply via email to