Merge branch 'cassandra-2.2' into cassandra-3.0

Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/aa181927
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/aa181927
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/aa181927

Branch: refs/heads/trunk
Commit: aa181927cbfb51ccf991d78a7eb5803fa62dd408
Parents: 0f118a9 486b82a
Author: adelapena <a.penya.gar...@gmail.com>
Authored: Wed May 10 11:13:47 2017 +0100
Committer: adelapena <a.penya.gar...@gmail.com>
Committed: Wed May 10 11:13:47 2017 +0100

----------------------------------------------------------------------
 .../validation/entities/SecondaryIndexTest.java | 42 ++++++++++++++++++++
 1 file changed, 42 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/aa181927/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
----------------------------------------------------------------------
diff --cc 
test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
index 8376652,e3616f6..64bd967
--- 
a/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
+++ 
b/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
@@@ -1160,59 -846,108 +1160,101 @@@ public class SecondaryIndexTest extend
      }
  
      @Test
 -    public void testIndexOnRegularColumnWithPartitionWithoutRows() throws 
Throwable
 +    public void testIndexOnPartitionKeyWithStaticColumnAndNoRows() throws 
Throwable
      {
 -        createTable("CREATE TABLE %s (pk int, c int, s int static, v int, 
PRIMARY KEY(pk, c))");
 -        createIndex("CREATE INDEX ON %s (v)");
 -        execute("INSERT INTO %s (pk, c, s, v) VALUES (?, ?, ?, ?)", 1, 1, 9, 
1);
 -        execute("INSERT INTO %s (pk, c, s, v) VALUES (?, ?, ?, ?)", 1, 2, 9, 
2);
 -        execute("INSERT INTO %s (pk, s) VALUES (?, ?)", 2, 9);
 -        execute("INSERT INTO %s (pk, c, s, v) VALUES (?, ?, ?, ?)", 3, 1, 9, 
1);
 -        flush();
 -        execute("DELETE FROM %s WHERE pk = ? and c = ?", 3, 1);
 -        assertRows(execute("SELECT * FROM %s WHERE v = ?", 1),
 -                   row(1, 1, 9, 1));
 +        createTable("CREATE TABLE %s (pk1 int, pk2 int, c int, s int static, 
v int, PRIMARY KEY((pk1, pk2), c))");
 +        createIndex("CREATE INDEX ON %s (pk2)");
 +        execute("INSERT INTO %s (pk1, pk2, c, s, v) VALUES (?, ?, ?, ?, ?)", 
1, 1, 1, 9, 1);
 +        execute("INSERT INTO %s (pk1, pk2, c, s, v) VALUES (?, ?, ?, ?, ?)", 
1, 1, 2, 9, 2);
 +        execute("INSERT INTO %s (pk1, pk2, s) VALUES (?, ?, ?)", 2, 1, 9);
 +        execute("INSERT INTO %s (pk1, pk2, c, s, v) VALUES (?, ?, ?, ?, ?)", 
3, 1, 1, 9, 1);
 +
 +        assertRows(execute("SELECT * FROM %s WHERE pk2 = ?", 1),
 +                   row(2, 1, null, 9, null),
 +                   row(1, 1, 1, 9, 1),
 +                   row(1, 1, 2, 9, 2),
 +                   row(3, 1, 1, 9, 1));
 +
 +        execute("UPDATE %s SET s=?, v=? WHERE pk1=? AND pk2=? AND c=?", 9, 1, 
1, 10, 2);
 +        assertRows(execute("SELECT * FROM %s WHERE pk2 = ?", 10), row(1, 10, 
2, 9, 1));
 +
 +        execute("UPDATE %s SET s=? WHERE pk1=? AND pk2=?", 9, 1, 20);
 +        assertRows(execute("SELECT * FROM %s WHERE pk2 = ?", 20), row(1, 20, 
null, 9, null));
      }
  
+     @Test
+     public void testIndexOnPartitionKeyInsertExpiringColumn() throws Throwable
+     {
+         createTable("CREATE TABLE %s (k1 int, k2 int, a int, b int, PRIMARY 
KEY ((k1, k2)))");
+         createIndex("CREATE INDEX on %s(k1)");
+         execute("INSERT INTO %s (k1, k2, a, b) VALUES (1, 2, 3, 4)");
+         assertRows(execute("SELECT * FROM %s WHERE k1 = 1"), row(1, 2, 3, 4));
+         execute("UPDATE %s USING TTL 1 SET b = 10 WHERE k1 = 1 AND k2 = 2");
+         Thread.sleep(1000);
+         assertRows(execute("SELECT * FROM %s WHERE k1 = 1"), row(1, 2, 3, 
null));
+     }
+ 
+     @Test
+     public void testIndexOnClusteringKeyInsertExpiringColumn() throws 
Throwable
+     {
+         createTable("CREATE TABLE %s (pk int, ck int, a int, b int, PRIMARY 
KEY (pk, ck))");
+         createIndex("CREATE INDEX on %s(ck)");
+         execute("INSERT INTO %s (pk, ck, a, b) VALUES (1, 2, 3, 4)");
+         assertRows(execute("SELECT * FROM %s WHERE ck = 2"), row(1, 2, 3, 4));
+         execute("UPDATE %s USING TTL 1 SET b = 10 WHERE pk = 1 AND ck = 2");
+         Thread.sleep(1000);
+         assertRows(execute("SELECT * FROM %s WHERE ck = 2"), row(1, 2, 3, 
null));
+     }
+ 
+     @Test
+     public void testIndexOnRegularColumnInsertExpiringColumn() throws 
Throwable
+     {
+         createTable("CREATE TABLE %s (pk int, ck int, a int, b int, PRIMARY 
KEY (pk, ck))");
+         createIndex("CREATE INDEX on %s(a)");
+         execute("INSERT INTO %s (pk, ck, a, b) VALUES (1, 2, 3, 4)");
+         assertRows(execute("SELECT * FROM %s WHERE a = 3"), row(1, 2, 3, 4));
+ 
+         execute("UPDATE %s USING TTL 1 SET b = 10 WHERE pk = 1 AND ck = 2");
+         Thread.sleep(1000);
+         assertRows(execute("SELECT * FROM %s WHERE a = 3"), row(1, 2, 3, 
null));
+ 
+         execute("UPDATE %s USING TTL 1 SET a = 5 WHERE pk = 1 AND ck = 2");
+         Thread.sleep(1000);
+         assertEmpty(execute("SELECT * FROM %s WHERE a = 3"));
+         assertEmpty(execute("SELECT * FROM %s WHERE a = 5"));
+     }
+ 
 -    /**
 -     * Custom index used to test the behavior of the system when the index is 
not ready.
 -     * As Custom indices cannot by <code>PerColumnSecondaryIndex</code> we 
use a <code>PerRowSecondaryIndex</code>
 -     * to avoid the check but return a <code>CompositesSearcher</code>.
 -     */
 -    public static class IndexBlockingOnInitialization extends 
PerRowSecondaryIndex
 +    private ResultMessage.Prepared prepareStatement(String cql, boolean 
forThrift)
      {
 -        private volatile CountDownLatch latch = new CountDownLatch(1);
 -
 -        @Override
 -        public void index(ByteBuffer rowKey, ColumnFamily cf)
 -        {
 -            try
 -            {
 -                latch.await();
 -            }
 -            catch (InterruptedException e)
 -            {
 -                Thread.interrupted();
 -            }
 -        }
 -
 -        @Override
 -        public void delete(DecoratedKey key, Group opGroup)
 -        {
 -        }
 +        return QueryProcessor.prepare(String.format(cql, KEYSPACE, 
currentTable()),
 +                                      ClientState.forInternalCalls(),
 +                                      forThrift);
 +    }
  
 -        @Override
 -        public void init()
 -        {
 -        }
 +    private void validateCell(Cell cell, ColumnDefinition def, ByteBuffer 
val, long timestamp)
 +    {
 +        assertNotNull(cell);
 +        assertEquals(0, def.type.compare(cell.value(), val));
 +        assertEquals(timestamp, cell.timestamp());
 +    }
  
 -        @Override
 -        public void reload()
 -        {
 -        }
 +    private static void assertColumnValue(int expected, String name, Row row, 
CFMetaData cfm)
 +    {
 +        ColumnDefinition col = cfm.getColumnDefinition(new 
ColumnIdentifier(name, true));
 +        AbstractType<?> type = col.type;
 +        assertEquals(expected, type.compose(row.getCell(col).value()));
 +    }
  
 -        @Override
 -        public void validateOptions() throws ConfigurationException
 -        {
 -        }
 +    /**
 +     * <code>CassandraIndex</code> that blocks during the initialization.
 +     */
 +    public static class IndexBlockingOnInitialization extends 
CustomCassandraIndex
 +    {
 +        private final CountDownLatch latch = new CountDownLatch(1);
  
 -        @Override
 -        public String getIndexName()
 +        public IndexBlockingOnInitialization(ColumnFamilyStore baseCfs, 
IndexMetadata indexDef)
          {
 -            return "testIndex";
 +            super(baseCfs, indexDef);
          }
  
          @Override


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to