Repository: cassandra Updated Branches: refs/heads/trunk 5f0a77b6d -> bcd274f7c
Ninja: add beforeAndAfterFlush to 2i and filtering tests. Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/bcd274f7 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/bcd274f7 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/bcd274f7 Branch: refs/heads/trunk Commit: bcd274f7c04e2cb9fe9a8155428dfa7212fe3a70 Parents: 5f0a77b Author: Alex Petrov <oleksandr.pet...@gmail.com> Authored: Wed Sep 21 17:08:58 2016 +0200 Committer: Tyler Hobbs <tylerlho...@gmail.com> Committed: Wed Sep 21 10:30:18 2016 -0500 ---------------------------------------------------------------------- .../validation/entities/SecondaryIndexTest.java | 143 ++++--- .../cql3/validation/operations/SelectTest.java | 381 ++++++++++--------- 2 files changed, 293 insertions(+), 231 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/bcd274f7/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java b/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java index 05c11a4..5cb76c9 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java @@ -174,10 +174,12 @@ public class SecondaryIndexTest extends CQLTester execute("INSERT INTO %s (userid, firstname, lastname, age) VALUES (?, 'Frodo', 'Baggins', 32)", id1); execute("UPDATE %s SET firstname = 'Samwise', lastname = 'Gamgee', age = 33 WHERE userid = ?", id2); - assertEmpty(execute("SELECT firstname FROM %s WHERE userid = ? AND age = 33", id1)); + beforeAndAfterFlush(() -> { + assertEmpty(execute("SELECT firstname FROM %s WHERE userid = ? AND age = 33", id1)); - assertRows(execute("SELECT firstname FROM %s WHERE userid = ? AND age = 33", id2), - row("Samwise")); + assertRows(execute("SELECT firstname FROM %s WHERE userid = ? AND age = 33", id2), + row("Samwise")); + }); } /** @@ -195,9 +197,11 @@ public class SecondaryIndexTest extends CQLTester execute("INSERT INTO %s (id, birth_year) VALUES ('Paul', 24)"); execute("INSERT INTO %s (id, birth_year) VALUES ('Bob', 42)"); - assertRows(execute("SELECT id FROM %s WHERE birth_year = 42"), - row("Tom"), - row("Bob")); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT id FROM %s WHERE birth_year = 42"), + row("Tom"), + row("Bob")); + }); execute("DROP INDEX %s_birth_year_idx"); @@ -221,8 +225,10 @@ public class SecondaryIndexTest extends CQLTester assertInvalid("SELECT * FROM %s WHERE setid = 0 AND row < 1"); - assertRows(execute("SELECT * FROM %s WHERE setid = 0 AND row < 1 ALLOW FILTERING"), - row(0, 0, 0)); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT * FROM %s WHERE setid = 0 AND row < 1 ALLOW FILTERING"), + row(0, 0, 0)); + }); } /** @@ -267,27 +273,33 @@ public class SecondaryIndexTest extends CQLTester assertTrue(waitForIndex(keyspace(), tableName, "authoridx")); - assertRows(execute("SELECT blog_id, timestamp FROM %s WHERE author = 'bob'"), - row(1, 0), - row(0, 0), - row(0, 2)); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT blog_id, timestamp FROM %s WHERE author = 'bob'"), + row(1, 0), + row(0, 0), + row(0, 2)); + }); execute("INSERT INTO %s (blog_id, timestamp, author, content) VALUES (?, ?, ?, ?)", 1, 1, "tom", "6th post"); execute("INSERT INTO %s (blog_id, timestamp, author, content) VALUES (?, ?, ?, ?)", 1, 2, "tom", "7th post"); execute("INSERT INTO %s (blog_id, timestamp, author, content) VALUES (?, ?, ?, ?)", 1, 3, "bob", "8th post"); - assertRows(execute("SELECT blog_id, timestamp FROM %s WHERE author = 'bob'"), - row(1, 0), - row(1, 3), - row(0, 0), - row(0, 2)); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT blog_id, timestamp FROM %s WHERE author = 'bob'"), + row(1, 0), + row(1, 3), + row(0, 0), + row(0, 2)); + }); execute("DELETE FROM %s WHERE blog_id = 0 AND timestamp = 2"); - assertRows(execute("SELECT blog_id, timestamp FROM %s WHERE author = 'bob'"), - row(1, 0), - row(1, 3), - row(0, 0)); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT blog_id, timestamp FROM %s WHERE author = 'bob'"), + row(1, 0), + row(1, 3), + row(0, 0)); + }); } /** @@ -337,17 +349,19 @@ public class SecondaryIndexTest extends CQLTester execute("INSERT INTO %s (pk0, pk1, ck0, ck1, ck2, value) VALUES (4, 5, 0, 1, 2, 3)"); execute("INSERT INTO %s (pk0, pk1, ck0, ck1, ck2, value) VALUES (5, 0, 1, 2, 3, 4)"); - assertRows(execute("SELECT value FROM %s WHERE pk0 = 2"), - row(1)); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT value FROM %s WHERE pk0 = 2"), + row(1)); - assertRows(execute("SELECT value FROM %s WHERE ck0 = 0"), - row(3)); + assertRows(execute("SELECT value FROM %s WHERE ck0 = 0"), + row(3)); - assertRows(execute("SELECT value FROM %s WHERE pk0 = 3 AND pk1 = 4 AND ck1 = 0"), - row(2)); + assertRows(execute("SELECT value FROM %s WHERE pk0 = 3 AND pk1 = 4 AND ck1 = 0"), + row(2)); - assertRows(execute("SELECT value FROM %s WHERE pk0 = 5 AND pk1 = 0 AND ck0 = 1 AND ck2 = 3 ALLOW FILTERING"), - row(4)); + assertRows(execute("SELECT value FROM %s WHERE pk0 = 5 AND pk1 = 0 AND ck0 = 1 AND ck2 = 3 ALLOW FILTERING"), + row(4)); + }); } /** @@ -370,8 +384,11 @@ public class SecondaryIndexTest extends CQLTester execute("insert into %s (interval, seq, id , severity) values('t',2, 3, 1)"); execute("insert into %s (interval, seq, id , severity) values('t',2, 4, 2)"); - assertRows(execute("select * from %s where severity = 3 and interval = 't' and seq =1"), - row("t", 1, 4, 3)); + beforeAndAfterFlush(() -> { + assertRows(execute("select * from %s where severity = 3 and interval = 't' and seq =1"), + row("t", 1, 4, 3)); + + }); } /** @@ -402,23 +419,25 @@ public class SecondaryIndexTest extends CQLTester execute("INSERT INTO %s (k, v, l, s, m) VALUES (1, 0, [1, 2, 4], {}, {'b' : 1})"); execute("INSERT INTO %s (k, v, l, s, m) VALUES (1, 1, [4, 5], {'d'}, {'a' : 1, 'b' : 3})"); - // lists - assertRows(execute("SELECT k, v FROM %s WHERE l CONTAINS 1"), row(1, 0), row(0, 0), row(0, 2)); - assertRows(execute("SELECT k, v FROM %s WHERE k = 0 AND l CONTAINS 1"), row(0, 0), row(0, 2)); - assertRows(execute("SELECT k, v FROM %s WHERE l CONTAINS 2"), row(1, 0), row(0, 0)); - assertEmpty(execute("SELECT k, v FROM %s WHERE l CONTAINS 6")); - - // sets - assertRows(execute("SELECT k, v FROM %s WHERE s CONTAINS 'a'"), row(0, 0), row(0, 2)); - assertRows(execute("SELECT k, v FROM %s WHERE k = 0 AND s CONTAINS 'a'"), row(0, 0), row(0, 2)); - assertRows(execute("SELECT k, v FROM %s WHERE s CONTAINS 'd'"), row(1, 1)); - assertEmpty(execute("SELECT k, v FROM %s WHERE s CONTAINS 'e'")); - - // maps - assertRows(execute("SELECT k, v FROM %s WHERE m CONTAINS 1"), row(1, 0), row(1, 1), row(0, 0), row(0, 1)); - assertRows(execute("SELECT k, v FROM %s WHERE k = 0 AND m CONTAINS 1"), row(0, 0), row(0, 1)); - assertRows(execute("SELECT k, v FROM %s WHERE m CONTAINS 2"), row(0, 1)); - assertEmpty(execute("SELECT k, v FROM %s WHERE m CONTAINS 4")); + beforeAndAfterFlush(() -> { + // lists + assertRows(execute("SELECT k, v FROM %s WHERE l CONTAINS 1"), row(1, 0), row(0, 0), row(0, 2)); + assertRows(execute("SELECT k, v FROM %s WHERE k = 0 AND l CONTAINS 1"), row(0, 0), row(0, 2)); + assertRows(execute("SELECT k, v FROM %s WHERE l CONTAINS 2"), row(1, 0), row(0, 0)); + assertEmpty(execute("SELECT k, v FROM %s WHERE l CONTAINS 6")); + + // sets + assertRows(execute("SELECT k, v FROM %s WHERE s CONTAINS 'a'"), row(0, 0), row(0, 2)); + assertRows(execute("SELECT k, v FROM %s WHERE k = 0 AND s CONTAINS 'a'"), row(0, 0), row(0, 2)); + assertRows(execute("SELECT k, v FROM %s WHERE s CONTAINS 'd'"), row(1, 1)); + assertEmpty(execute("SELECT k, v FROM %s WHERE s CONTAINS 'e'")); + + // maps + assertRows(execute("SELECT k, v FROM %s WHERE m CONTAINS 1"), row(1, 0), row(1, 1), row(0, 0), row(0, 1)); + assertRows(execute("SELECT k, v FROM %s WHERE k = 0 AND m CONTAINS 1"), row(0, 0), row(0, 1)); + assertRows(execute("SELECT k, v FROM %s WHERE m CONTAINS 2"), row(0, 1)); + assertEmpty(execute("SELECT k, v FROM %s WHERE m CONTAINS 4")); + }); } /** @@ -438,10 +457,12 @@ public class SecondaryIndexTest extends CQLTester execute("INSERT INTO %s (k, v, m) VALUES (1, 1, {'a' : 1, 'b' : 3})"); // maps - assertRows(execute("SELECT k, v FROM %s WHERE m CONTAINS KEY 'a'"), row(1, 1), row(0, 0), row(0, 1)); - assertRows(execute("SELECT k, v FROM %s WHERE k = 0 AND m CONTAINS KEY 'a'"), row(0, 0), row(0, 1)); - assertRows(execute("SELECT k, v FROM %s WHERE m CONTAINS KEY 'c'"), row(0, 2)); - assertEmpty(execute("SELECT k, v FROM %s WHERE m CONTAINS KEY 'd'")); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT k, v FROM %s WHERE m CONTAINS KEY 'a'"), row(1, 1), row(0, 0), row(0, 1)); + assertRows(execute("SELECT k, v FROM %s WHERE k = 0 AND m CONTAINS KEY 'a'"), row(0, 0), row(0, 1)); + assertRows(execute("SELECT k, v FROM %s WHERE m CONTAINS KEY 'c'"), row(0, 2)); + assertEmpty(execute("SELECT k, v FROM %s WHERE m CONTAINS KEY 'd'")); + }); } /** @@ -464,10 +485,12 @@ public class SecondaryIndexTest extends CQLTester execute("INSERT INTO %s (k1, k2, v) VALUES (2, 1, 8)"); execute("INSERT INTO %s (k1, k2, v) VALUES (3, 0, 1)"); - assertRows(execute("SELECT * FROM %s WHERE k2 = 0 AND v >= 2 ALLOW FILTERING"), - row(2, 0, 7), - row(0, 0, 3), - row(1, 0, 4)); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT * FROM %s WHERE k2 = 0 AND v >= 2 ALLOW FILTERING"), + row(2, 0, 7), + row(0, 0, 3), + row(1, 0, 4)); + }); } /** @@ -482,11 +505,15 @@ public class SecondaryIndexTest extends CQLTester createIndex("create index ON %s (app_name)"); createIndex("create index ON %s (last_access)"); - assertRows(execute("select count(*) from %s where app_name='foo' and account='bar' and last_access > 4 allow filtering"), row(0L)); + beforeAndAfterFlush(() -> { + assertRows(execute("select count(*) from %s where app_name='foo' and account='bar' and last_access > 4 allow filtering"), row(0L)); + }); execute("insert into %s (username, session_id, app_name, account, last_access, created_on) values ('toto', 'foo', 'foo', 'bar', 12, 13)"); - assertRows(execute("select count(*) from %s where app_name='foo' and account='bar' and last_access > 4 allow filtering"), row(1L)); + beforeAndAfterFlush(() -> { + assertRows(execute("select count(*) from %s where app_name='foo' and account='bar' and last_access > 4 allow filtering"), row(1L)); + }); } @Test http://git-wip-us.apache.org/repos/asf/cassandra/blob/bcd274f7/test/unit/org/apache/cassandra/cql3/validation/operations/SelectTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/validation/operations/SelectTest.java b/test/unit/org/apache/cassandra/cql3/validation/operations/SelectTest.java index 7d56a14..f167955 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/operations/SelectTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/operations/SelectTest.java @@ -379,29 +379,31 @@ public class SelectTest extends CQLTester execute("INSERT INTO %s (account, id , categories) VALUES (?, ?, ?)", "test", 5, set("lmn")); - assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "xyz", "lmn")); + beforeAndAfterFlush(() -> { + assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "xyz", "lmn")); - assertRows(execute("SELECT * FROM %s WHERE categories CONTAINS ?", "lmn"), - row("test", 5, set("lmn")) - ); + assertRows(execute("SELECT * FROM %s WHERE categories CONTAINS ?", "lmn"), + row("test", 5, set("lmn")) + ); - assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "test", "lmn"), - row("test", 5, set("lmn")) - ); + assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "test", "lmn"), + row("test", 5, set("lmn")) + ); - assertRows(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, "lmn"), - row("test", 5, set("lmn")) - ); + assertRows(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, "lmn"), + row("test", 5, set("lmn")) + ); - assertInvalidMessage("Unsupported null value for column categories", - "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, null); + assertInvalidMessage("Unsupported null value for column categories", + "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, null); - assertInvalidMessage("Unsupported unset value for column categories", - "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, unset()); + assertInvalidMessage("Unsupported unset value for column categories", + "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, unset()); - assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, - "SELECT * FROM %s WHERE account = ? AND categories CONTAINS ? AND categories CONTAINS ?", "xyz", "lmn", "notPresent"); - assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ? AND categories CONTAINS ? ALLOW FILTERING", "xyz", "lmn", "notPresent")); + assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, + "SELECT * FROM %s WHERE account = ? AND categories CONTAINS ? AND categories CONTAINS ?", "xyz", "lmn", "notPresent"); + assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ? AND categories CONTAINS ? ALLOW FILTERING", "xyz", "lmn", "notPresent")); + }); } @Test @@ -411,32 +413,33 @@ public class SelectTest extends CQLTester createIndex("CREATE INDEX ON %s(categories)"); execute("INSERT INTO %s (account, id , categories) VALUES (?, ?, ?)", "test", 5, list("lmn")); + beforeAndAfterFlush(() -> { + assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "xyz", "lmn")); - assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "xyz", "lmn")); - - assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?;", "test", "lmn"), - row("test", 5, list("lmn")) - ); + assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?;", "test", "lmn"), + row("test", 5, list("lmn")) + ); - assertRows(execute("SELECT * FROM %s WHERE categories CONTAINS ?", "lmn"), - row("test", 5, list("lmn")) - ); + assertRows(execute("SELECT * FROM %s WHERE categories CONTAINS ?", "lmn"), + row("test", 5, list("lmn")) + ); - assertRows(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?;", "test", 5, "lmn"), - row("test", 5, list("lmn")) - ); + assertRows(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?;", "test", 5, "lmn"), + row("test", 5, list("lmn")) + ); - assertInvalidMessage("Unsupported null value for column categories", - "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, null); + assertInvalidMessage("Unsupported null value for column categories", + "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, null); - assertInvalidMessage("Unsupported unset value for column categories", - "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, unset()); + assertInvalidMessage("Unsupported unset value for column categories", + "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, unset()); - assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, - "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ? AND categories CONTAINS ?", - "test", 5, "lmn", "notPresent"); - assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ? AND categories CONTAINS ? ALLOW FILTERING", - "test", 5, "lmn", "notPresent")); + assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, + "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ? AND categories CONTAINS ?", + "test", 5, "lmn", "notPresent"); + assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ? AND categories CONTAINS ? ALLOW FILTERING", + "test", 5, "lmn", "notPresent")); + }); } @Test @@ -452,9 +455,12 @@ public class SelectTest extends CQLTester { execute("INSERT INTO %s (e, f, s) VALUES (?, ?, ?)", i, list("Dubai"), 3); } - assertRows(execute("SELECT * FROM %s WHERE f CONTAINS ? AND s=? allow filtering", "Dubai", 3), - row(4, list("Dubai"), 3), - row(3, list("Dubai"), 3)); + + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT * FROM %s WHERE f CONTAINS ? AND s=? allow filtering", "Dubai", 3), + row(4, list("Dubai"), 3), + row(3, list("Dubai"), 3)); + }); } @Test @@ -465,34 +471,36 @@ public class SelectTest extends CQLTester execute("INSERT INTO %s (account, id , categories) VALUES (?, ?, ?)", "test", 5, map("lmn", "foo")); - assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS KEY ?", "xyz", "lmn")); + beforeAndAfterFlush(() -> { + assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS KEY ?", "xyz", "lmn")); - assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS KEY ?", "test", "lmn"), - row("test", 5, map("lmn", "foo")) - ); - assertRows(execute("SELECT * FROM %s WHERE categories CONTAINS KEY ?", "lmn"), - row("test", 5, map("lmn", "foo")) - ); + assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS KEY ?", "test", "lmn"), + row("test", 5, map("lmn", "foo")) + ); + assertRows(execute("SELECT * FROM %s WHERE categories CONTAINS KEY ?", "lmn"), + row("test", 5, map("lmn", "foo")) + ); - assertRows(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS KEY ?", "test", 5, "lmn"), - row("test", 5, map("lmn", "foo")) - ); + assertRows(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS KEY ?", "test", 5, "lmn"), + row("test", 5, map("lmn", "foo")) + ); - assertInvalidMessage("Unsupported null value for column categories", - "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS KEY ?", "test", 5, null); + assertInvalidMessage("Unsupported null value for column categories", + "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS KEY ?", "test", 5, null); - assertInvalidMessage("Unsupported unset value for column categories", - "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS KEY ?", "test", 5, unset()); + assertInvalidMessage("Unsupported unset value for column categories", + "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS KEY ?", "test", 5, unset()); - assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, - "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS KEY ? AND categories CONTAINS KEY ?", - "test", 5, "lmn", "notPresent"); - assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS KEY ? AND categories CONTAINS KEY ? ALLOW FILTERING", - "test", 5, "lmn", "notPresent")); + assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, + "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS KEY ? AND categories CONTAINS KEY ?", + "test", 5, "lmn", "notPresent"); + assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS KEY ? AND categories CONTAINS KEY ? ALLOW FILTERING", + "test", 5, "lmn", "notPresent")); - assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, - "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS KEY ? AND categories CONTAINS ?", - "test", 5, "lmn", "foo"); + assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, + "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS KEY ? AND categories CONTAINS ?", + "test", 5, "lmn", "foo"); + }); } @Test @@ -503,32 +511,34 @@ public class SelectTest extends CQLTester execute("INSERT INTO %s (account, id , categories) VALUES (?, ?, ?)", "test", 5, map("lmn", "foo")); - assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "xyz", "foo")); + beforeAndAfterFlush(() -> { + assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "xyz", "foo")); - assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "test", "foo"), - row("test", 5, map("lmn", "foo")) - ); + assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "test", "foo"), + row("test", 5, map("lmn", "foo")) + ); - assertRows(execute("SELECT * FROM %s WHERE categories CONTAINS ?", "foo"), - row("test", 5, map("lmn", "foo")) - ); + assertRows(execute("SELECT * FROM %s WHERE categories CONTAINS ?", "foo"), + row("test", 5, map("lmn", "foo")) + ); - assertRows(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, "foo"), - row("test", 5, map("lmn", "foo")) - ); + assertRows(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, "foo"), + row("test", 5, map("lmn", "foo")) + ); - assertInvalidMessage("Unsupported null value for column categories", - "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, null); + assertInvalidMessage("Unsupported null value for column categories", + "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, null); - assertInvalidMessage("Unsupported unset value for column categories", - "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, unset()); + assertInvalidMessage("Unsupported unset value for column categories", + "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ?", "test", 5, unset()); - assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, - "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ? AND categories CONTAINS ?" - , "test", 5, "foo", "notPresent"); + assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, + "SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ? AND categories CONTAINS ?", + "test", 5, "foo", "notPresent"); - assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ? AND categories CONTAINS ? ALLOW FILTERING" - , "test", 5, "foo", "notPresent")); + assertEmpty(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories CONTAINS ? AND categories CONTAINS ? ALLOW FILTERING", + "test", 5, "foo", "notPresent")); + }); } // See CASSANDRA-7525 @@ -541,16 +551,16 @@ public class SelectTest extends CQLTester createIndex("CREATE INDEX id_index ON %s(id)"); createIndex("CREATE INDEX categories_values_index ON %s(categories)"); - execute("INSERT INTO %s (account, id , categories) VALUES (?, ?, ?)", "test", 5, map("lmn", "foo")); + beforeAndAfterFlush(() -> { - assertRows(execute("SELECT * FROM %s WHERE categories CONTAINS ? AND id = ? ALLOW FILTERING", "foo", 5), - row("test", 5, map("lmn", "foo")) - ); + execute("INSERT INTO %s (account, id , categories) VALUES (?, ?, ?)", "test", 5, map("lmn", "foo")); - assertRows( - execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ? AND id = ? ALLOW FILTERING", "test", "foo", 5), - row("test", 5, map("lmn", "foo")) - ); + assertRows(execute("SELECT * FROM %s WHERE categories CONTAINS ? AND id = ? ALLOW FILTERING", "foo", 5), + row("test", 5, map("lmn", "foo"))); + + assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ? AND id = ? ALLOW FILTERING", "test", "foo", 5), + row("test", 5, map("lmn", "foo"))); + }); } // See CASSANDRA-8033 @@ -565,16 +575,18 @@ public class SelectTest extends CQLTester execute("INSERT INTO %s (k1, k2, v) VALUES (?, ?, ?)", 1, 0, set(3, 4, 5)); execute("INSERT INTO %s (k1, k2, v) VALUES (?, ?, ?)", 1, 1, set(4, 5, 6)); - assertRows(execute("SELECT * FROM %s WHERE k2 = ?", 1), - row(0, 1, set(2, 3, 4)), - row(1, 1, set(4, 5, 6)) - ); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT * FROM %s WHERE k2 = ?", 1), + row(0, 1, set(2, 3, 4)), + row(1, 1, set(4, 5, 6)) + ); - assertRows(execute("SELECT * FROM %s WHERE k2 = ? AND v CONTAINS ? ALLOW FILTERING", 1, 6), - row(1, 1, set(4, 5, 6)) - ); + assertRows(execute("SELECT * FROM %s WHERE k2 = ? AND v CONTAINS ? ALLOW FILTERING", 1, 6), + row(1, 1, set(4, 5, 6)) + ); - assertEmpty(execute("SELECT * FROM %s WHERE k2 = ? AND v CONTAINS ? ALLOW FILTERING", 1, 7)); + assertEmpty(execute("SELECT * FROM %s WHERE k2 = ? AND v CONTAINS ? ALLOW FILTERING", 1, 7)); + }); } // See CASSANDRA-8073 @@ -583,23 +595,26 @@ public class SelectTest extends CQLTester { createTable("CREATE TABLE %s (a int, b int, c int, d set<int>, PRIMARY KEY (a, b, c))"); createIndex("CREATE INDEX ON %s(d)"); + execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", 0, 0, 0, set(1, 2, 3)); execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", 0, 0, 1, set(3, 4, 5)); execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", 0, 1, 0, set(1, 2, 3)); execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", 0, 1, 1, set(3, 4, 5)); - assertRows(execute("SELECT * FROM %s WHERE a=? AND b=? AND d CONTAINS ?", 0, 1, 3), - row(0, 1, 0, set(1, 2, 3)), - row(0, 1, 1, set(3, 4, 5)) - ); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT * FROM %s WHERE a=? AND b=? AND d CONTAINS ?", 0, 1, 3), + row(0, 1, 0, set(1, 2, 3)), + row(0, 1, 1, set(3, 4, 5)) + ); - assertRows(execute("SELECT * FROM %s WHERE a=? AND b=? AND d CONTAINS ?", 0, 1, 2), - row(0, 1, 0, set(1, 2, 3)) - ); + assertRows(execute("SELECT * FROM %s WHERE a=? AND b=? AND d CONTAINS ?", 0, 1, 2), + row(0, 1, 0, set(1, 2, 3)) + ); - assertRows(execute("SELECT * FROM %s WHERE a=? AND b=? AND d CONTAINS ?", 0, 1, 5), - row(0, 1, 1, set(3, 4, 5)) - ); + assertRows(execute("SELECT * FROM %s WHERE a=? AND b=? AND d CONTAINS ?", 0, 1, 5), + row(0, 1, 1, set(3, 4, 5)) + ); + }); } @Test @@ -611,18 +626,20 @@ public class SelectTest extends CQLTester execute("INSERT INTO %s (account, id , categories) VALUES (?, ?, ?)", "test", 5, map("lmn", "foo")); execute("INSERT INTO %s (account, id , categories) VALUES (?, ?, ?)", "test", 6, map("lmn", "foo2")); - assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, - "SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "test", "foo"); - - assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS KEY ?", "test", "lmn"), - row("test", 5, map("lmn", "foo")), - row("test", 6, map("lmn", "foo2"))); - assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS KEY ? AND categories CONTAINS ? ALLOW FILTERING", - "test", "lmn", "foo"), - row("test", 5, map("lmn", "foo"))); - assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ? AND categories CONTAINS KEY ? ALLOW FILTERING", - "test", "foo", "lmn"), - row("test", 5, map("lmn", "foo"))); + beforeAndAfterFlush(() -> { + assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, + "SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "test", "foo"); + + assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS KEY ?", "test", "lmn"), + row("test", 5, map("lmn", "foo")), + row("test", 6, map("lmn", "foo2"))); + assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS KEY ? AND categories CONTAINS ? ALLOW FILTERING", + "test", "lmn", "foo"), + row("test", 5, map("lmn", "foo"))); + assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ? AND categories CONTAINS KEY ? ALLOW FILTERING", + "test", "foo", "lmn"), + row("test", 5, map("lmn", "foo"))); + }); } @Test @@ -634,18 +651,20 @@ public class SelectTest extends CQLTester execute("INSERT INTO %s (account, id , categories) VALUES (?, ?, ?)", "test", 5, map("lmn", "foo")); execute("INSERT INTO %s (account, id , categories) VALUES (?, ?, ?)", "test", 6, map("lmn2", "foo")); - assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, - "SELECT * FROM %s WHERE account = ? AND categories CONTAINS KEY ?", "test", "lmn"); - - assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "test", "foo"), - row("test", 5, map("lmn", "foo")), - row("test", 6, map("lmn2", "foo"))); - assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS KEY ? AND categories CONTAINS ? ALLOW FILTERING", - "test", "lmn", "foo"), - row("test", 5, map("lmn", "foo"))); - assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ? AND categories CONTAINS KEY ? ALLOW FILTERING", - "test", "foo", "lmn"), - row("test", 5, map("lmn", "foo"))); + beforeAndAfterFlush(() -> { + assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, + "SELECT * FROM %s WHERE account = ? AND categories CONTAINS KEY ?", "test", "lmn"); + + assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ?", "test", "foo"), + row("test", 5, map("lmn", "foo")), + row("test", 6, map("lmn2", "foo"))); + assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS KEY ? AND categories CONTAINS ? ALLOW FILTERING", + "test", "lmn", "foo"), + row("test", 5, map("lmn", "foo"))); + assertRows(execute("SELECT * FROM %s WHERE account = ? AND categories CONTAINS ? AND categories CONTAINS KEY ? ALLOW FILTERING", + "test", "foo", "lmn"), + row("test", 5, map("lmn", "foo"))); + }); } /** @@ -1313,18 +1332,20 @@ public class SelectTest extends CQLTester execute("INSERT INTO %s (k, a, b, s, s1) VALUES (?, ?, ?, ?, ?)", 2, 10, 10, 10, 10); - assertRows(execute("SELECT DISTINCT k, s, s1 FROM %s WHERE s = 90 AND s1 = 90 ALLOW FILTERING"), - row(9, 90, 90)); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT DISTINCT k, s, s1 FROM %s WHERE s = 90 AND s1 = 90 ALLOW FILTERING"), + row(9, 90, 90)); - assertRows(execute("SELECT DISTINCT k, s, s1 FROM %s WHERE s = 90 AND s1 = 90 ALLOW FILTERING"), - row(9, 90, 90)); + assertRows(execute("SELECT DISTINCT k, s, s1 FROM %s WHERE s = 90 AND s1 = 90 ALLOW FILTERING"), + row(9, 90, 90)); - assertRows(execute("SELECT DISTINCT k, s, s1 FROM %s WHERE s = 10 AND s1 = 10 ALLOW FILTERING"), - row(1, 10, 10), - row(2, 10, 10)); + assertRows(execute("SELECT DISTINCT k, s, s1 FROM %s WHERE s = 10 AND s1 = 10 ALLOW FILTERING"), + row(1, 10, 10), + row(2, 10, 10)); - assertRows(execute("SELECT DISTINCT k, s, s1 FROM %s WHERE k = 1 AND s = 10 AND s1 = 10 ALLOW FILTERING"), - row(1, 10, 10)); + assertRows(execute("SELECT DISTINCT k, s, s1 FROM %s WHERE k = 1 AND s = 10 AND s1 = 10 ALLOW FILTERING"), + row(1, 10, 10)); + }); } /** @@ -1425,18 +1446,20 @@ public class SelectTest extends CQLTester execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", i, j, j, i + j); } - assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE a >= 1 AND c = 2 AND s >= 1 ALLOW FILTERING"), - row(1, 2, 1, 2, 3), - row(3, 2, 3, 2, 5), - row(4, 2, 4, 2, 6)); - - assertRows(execute("SELECT * FROM %s WHERE a >= 1 AND c = 2 AND s >= 1 LIMIT 2 ALLOW FILTERING"), - row(1, 2, 1, 2, 3), - row(4, 2, 4, 2, 6)); - - assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE a >= 3 AND c = 2 AND s >= 1 LIMIT 2 ALLOW FILTERING"), - row(4, 2, 4, 2, 6), - row(3, 2, 3, 2, 5)); + beforeAndAfterFlush(() -> { + assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE a >= 1 AND c = 2 AND s >= 1 ALLOW FILTERING"), + row(1, 2, 1, 2, 3), + row(3, 2, 3, 2, 5), + row(4, 2, 4, 2, 6)); + + assertRows(execute("SELECT * FROM %s WHERE a >= 1 AND c = 2 AND s >= 1 LIMIT 2 ALLOW FILTERING"), + row(1, 2, 1, 2, 3), + row(4, 2, 4, 2, 6)); + + assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE a >= 3 AND c = 2 AND s >= 1 LIMIT 2 ALLOW FILTERING"), + row(4, 2, 4, 2, 6), + row(3, 2, 3, 2, 5)); + }); } @Test @@ -1452,9 +1475,11 @@ public class SelectTest extends CQLTester execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", i, j, j, i + j); } - assertRows(execute("SELECT * FROM %s WHERE c = 2 AND s >= 1 LIMIT 2 ALLOW FILTERING"), - row(1, 2, 1, 2, 3), - row(4, 2, 4, 2, 6)); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT * FROM %s WHERE c = 2 AND s >= 1 LIMIT 2 ALLOW FILTERING"), + row(1, 2, 1, 2, 3), + row(4, 2, 4, 2, 6)); + }); } @Test @@ -1477,7 +1502,7 @@ public class SelectTest extends CQLTester execute("DELETE FROM %s WHERE a = 2 AND b = 2"); beforeAndAfterFlush(() -> { - + // Checks filtering assertInvalidMessage(StatementRestrictions.REQUIRES_ALLOW_FILTERING_MESSAGE, "SELECT * FROM %s WHERE c = 4 AND d = 8"); @@ -3925,10 +3950,16 @@ public class SelectTest extends CQLTester execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", "a", 1, "b", 2); execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", "a", 2, "b", 3); execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", "c", 3, "b", 4); + execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", "d", 4, "d", 5); + + beforeAndAfterFlush(() -> { + assertRows(executeFilteringOnly("SELECT * FROM %s WHERE a='a' AND b > 0 AND c = 'b'"), + row("a", 1, "b", 2), + row("a", 2, "b", 3)); - assertRows(executeFilteringOnly("SELECT * FROM %s WHERE a='a' AND b > 0 AND c = 'b'"), - row("a", 1, "b", 2), - row("a", 2, "b", 3)); + assertRows(executeFilteringOnly("SELECT * FROM %s WHERE c = 'b' AND d = 4"), + row("c", 3, "b", 4)); + }); } @Test @@ -4064,22 +4095,24 @@ public class SelectTest extends CQLTester execute("INSERT INTO %s (pk, c1, c2, c3, v) VALUES (?, ?, ?, ?, ?)", 1, i, i, i, i); } - assertRows(execute("SELECT * FROM %s WHERE pk = 1 AND c1 > 0 AND c1 < 5 AND c2 = 1 AND v = 3 ALLOW FILTERING;"), - row(1, 1, 1, 3, 3)); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT * FROM %s WHERE pk = 1 AND c1 > 0 AND c1 < 5 AND c2 = 1 AND v = 3 ALLOW FILTERING;"), + row(1, 1, 1, 3, 3)); - assertEmpty(execute("SELECT * FROM %s WHERE pk = 1 AND c1 > 1 AND c1 < 5 AND c2 = 1 AND v = 3 ALLOW FILTERING;")); + assertEmpty(execute("SELECT * FROM %s WHERE pk = 1 AND c1 > 1 AND c1 < 5 AND c2 = 1 AND v = 3 ALLOW FILTERING;")); - assertRows(execute("SELECT * FROM %s WHERE pk = 1 AND c1 > 1 AND c2 > 2 AND c3 > 2 AND v = 3 ALLOW FILTERING;"), - row(1, 3, 3, 3, 3)); + assertRows(execute("SELECT * FROM %s WHERE pk = 1 AND c1 > 1 AND c2 > 2 AND c3 > 2 AND v = 3 ALLOW FILTERING;"), + row(1, 3, 3, 3, 3)); - assertRows(execute("SELECT * FROM %s WHERE pk = 1 AND c1 > 1 AND c2 > 2 AND c3 = 3 AND v = 3 ALLOW FILTERING;"), - row(1, 3, 3, 3, 3)); + assertRows(execute("SELECT * FROM %s WHERE pk = 1 AND c1 > 1 AND c2 > 2 AND c3 = 3 AND v = 3 ALLOW FILTERING;"), + row(1, 3, 3, 3, 3)); - assertRows(execute("SELECT * FROM %s WHERE pk = 1 AND c1 IN(0,1,2) AND c2 = 1 AND v = 3 ALLOW FILTERING;"), - row(1, 1, 1, 3, 3)); + assertRows(execute("SELECT * FROM %s WHERE pk = 1 AND c1 IN(0,1,2) AND c2 = 1 AND v = 3 ALLOW FILTERING;"), + row(1, 1, 1, 3, 3)); - assertRows(execute("SELECT * FROM %s WHERE pk = 1 AND c1 IN(0,1,2) AND c2 = 1 AND v = 3"), - row(1, 1, 1, 3, 3)); + assertRows(execute("SELECT * FROM %s WHERE pk = 1 AND c1 IN(0,1,2) AND c2 = 1 AND v = 3"), + row(1, 1, 1, 3, 3)); + }); } @Test @@ -4094,9 +4127,11 @@ public class SelectTest extends CQLTester execute("INSERT INTO %s(p1, p2, v) values (?, ?, ?)", 1, 2, 3); execute("INSERT INTO %s(p1, p2, v) values (?, ?, ?)", 2, 1, 3); - assertRows(execute("SELECT * FROM %s WHERE p1 = 1 AND v = 3 ALLOW FILTERING"), - row(1, 2, 3), - row(1, 1, 3)); + beforeAndAfterFlush(() -> { + assertRows(execute("SELECT * FROM %s WHERE p1 = 1 AND v = 3 ALLOW FILTERING"), + row(1, 2, 3), + row(1, 1, 3)); + }); } @Test