Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
Correctness - API / Semantic Implementation
-
Normal
-
Normal
-
Unit Test
-
All
-
None
-
Description
As reported by CASSANDRA-19034, SelectTest#testContainsKeyAndContainsWithIndexOnMapValue fails when the default config uses SAI:
[junit-timeout] Testcase: testContainsKeyAndContainsWithIndexOnMapValue(org.apache.cassandra.cql3.validation.operations.SelectTest)-_jdk11: FAILED [junit-timeout] Got less rows than expected. Expected 1 but got 0 [junit-timeout] junit.framework.AssertionFailedError: Got less rows than expected. Expected 1 but got 0 [junit-timeout] at org.apache.cassandra.cql3.CQLTester.assertRows(CQLTester.java:1849) [junit-timeout] at org.apache.cassandra.cql3.validation.operations.SelectTest.lambda$testContainsKeyAndContainsWithIndexOnMapValue$9(SelectTest.java:625) [junit-timeout] at org.apache.cassandra.cql3.CQLTester.beforeAndAfterFlush(CQLTester.java:2238) [junit-timeout] at org.apache.cassandra.cql3.validation.operations.SelectTest.testContainsKeyAndContainsWithIndexOnMapValue(SelectTest.java:618) [junit-timeout] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [junit-timeout] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [junit-timeout] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [junit-timeout] [junit-timeout]
This can also be reproduced with this simple test:
createTable("CREATE TABLE %s (k int PRIMARY KEY, v int, m map<int,int>)"); createIndex("CREATE INDEX ON %s(v) USING 'SAI'"); execute("INSERT INTO %s (k, v, m) VALUES (?, ?, ?)", 0, 1, map(2, 3)); assertRows(execute("SELECT k, v, m FROM %s WHERE v = 1 AND m CONTAINS KEY 2 ALLOW FILTERING"), row(0, 1, map(2, 3)));
I think the problem is that the index context created by the query planner for an unindexed column always has a VALUES index target type, here. This is problematic when there is a CONTAINS KEY expression that isn't backed by an index, since we'll be comparing the searched map key to scanned map values.
Attachments
Issue Links
- is a child of
-
CASSANDRA-19034 SelectTest fails when run with SAI index
- Resolved
- links to