[
https://issues.apache.org/jira/browse/CASSANDRA-19278?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17811816#comment-17811816
]
Alex Petrov commented on CASSANDRA-19278:
-----------------------------------------
+1, LGTM (one tiny typo, comment left on trunk patch)
I've ran statics torture test with different configurations locally for quite a
bit. I can also post a separate PR, a follow up to this issue, with a statics
torture test. Or we can include it in a 18275.
> AND queries involving both static and regular columns can hide matches from
> Memtable-attached indexes
> -----------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-19278
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19278
> Project: Cassandra
> Issue Type: Bug
> Components: Feature/SAI
> Reporter: Caleb Rackliffe
> Assignee: Caleb Rackliffe
> Priority: Normal
> Fix For: 5.0-rc, 5.x
>
> Attachments: ci_summary-1.html, ci_summary.html,
> result_details.tar-1.gz, result_details.tar.gz
>
> Time Spent: 4h
> Remaining Estimate: 0h
>
> As part of our ongoing work on CASSANDRA-18275, Harry started surfacing
> errors shortly after we added static columns to the schema of
> {{SingleNodeSAITest}}. After a bit of debugging, I was able to come up with
> the following concrete repro:
> {noformat}
> import org.junit.Test;
> import org.apache.cassandra.cql3.UntypedResultSet;
> import org.apache.cassandra.index.sai.utils.SAIRandomizedTester;
> public class InMemoryIntersectionsTest extends SAIRandomizedTester
> {
> @Test
> public void staticAndRegularIntersection()
> {
> createTable("CREATE TABLE %s (pk int, ck int, v1 int, s1 int static,
> PRIMARY KEY(pk, ck))");
> createIndex("CREATE INDEX ON %s(v1) USING 'sai'");
> createIndex("CREATE INDEX ON %s(s1) USING 'sai'");
> execute("INSERT INTO %s (pk, ck, v1) VALUES (?, ?, ?)", 0, 1, 0);
> execute("INSERT INTO %s (pk, ck, v1) VALUES (?, ?, ?)", 0, 2, 1);
> execute("INSERT INTO %s (pk, ck, v1) VALUES (?, ?, ?)", 0, 3, 2);
> execute("INSERT INTO %s (pk, ck, v1) VALUES (?, ?, ?)", 0, 4, 3);
> execute("INSERT INTO %s (pk, ck, v1) VALUES (?, ?, ?)", 0, 5, 4);
> execute("INSERT INTO %s (pk, ck, v1) VALUES (?, ?, ?)", 0, 6, 5);
> execute("INSERT INTO %s (pk, s1) VALUES (?, ?)", 0, 100);
> // Flushing here passes test
> UntypedResultSet result1 = execute("SELECT * FROM %s WHERE pk = ? AND
> v1 > ?", 0, 2);
> assertRowCount(result1, 3);
> UntypedResultSet result2 = execute("SELECT * FROM %s WHERE pk = ? AND
> v1 > ? AND s1 = ?", 0, 2, 100);
> assertRowCount(result2, 3); // Only returns one result!
> }
> }
> {noformat}
> Flushing memtables immediately before the queries passes the test, but it
> seems we have an issue with how the {{PrimaryKey}} iterators produced by
> static and regular column indexes are intersected when the iterators come
> from Memtable-attached indexes. Once the root cause of this is determined, it
> might make some sense to enhance {{RandomIntersectionTest}} to cover this
> interaction as well, just in case it turns up further problems.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]