[
https://issues.apache.org/jira/browse/CASSANDRA-18994?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mike Adamson updated CASSANDRA-18994:
-------------------------------------
Bug Category: Parent values: Correctness(12982)
Complexity: Low Hanging Fruit
Discovered By: Adhoc Test
Severity: Low
Status: Open (was: Triage Needed)
> SAI range query does not play together with "IN"
> ------------------------------------------------
>
> Key: CASSANDRA-18994
> URL: https://issues.apache.org/jira/browse/CASSANDRA-18994
> Project: Cassandra
> Issue Type: Bug
> Components: Feature/SAI
> Reporter: Stefan Miklosovic
> Assignee: Mike Adamson
> Priority: Normal
>
> I am using schema from the website's quickstart.
> {code}
> cqlsh> DESCRIBE KEYSPACE cycling ;
> CREATE KEYSPACE cycling WITH replication = {'class': 'SimpleStrategy',
> 'replication_factor': '1'} AND durable_writes = true;
> CREATE TABLE cycling.cyclist_semi_pro (
> id int PRIMARY KEY,
> affiliation text,
> age int,
> country text,
> firstname text,
> lastname text,
> registration date
> ) WITH additional_write_policy = '99p'
> AND allow_auto_snapshot = true
> AND bloom_filter_fp_chance = 0.01
> AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
> AND cdc = false
> AND comment = ''
> AND compaction = {'class':
> 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy',
> 'max_threshold': '32', 'min_threshold': '4'}
> AND compression = {'chunk_length_in_kb': '16', 'class':
> 'org.apache.cassandra.io.compress.LZ4Compressor'}
> AND memtable = 'default'
> AND crc_check_chance = 1.0
> AND default_time_to_live = 0
> AND extensions = {}
> AND gc_grace_seconds = 864000
> AND incremental_backups = true
> AND max_index_interval = 2048
> AND memtable_flush_period_in_ms = 0
> AND min_index_interval = 128
> AND read_repair = 'BLOCKING'
> AND speculative_retry = '99p';
> CREATE CUSTOM INDEX age_sai_idx ON cycling.cyclist_semi_pro (age) USING
> 'StorageAttachedIndex';
> CREATE CUSTOM INDEX country_sai_idx ON cycling.cyclist_semi_pro (country)
> USING 'StorageAttachedIndex' WITH OPTIONS = {'ascii': 'true',
> 'case_sensitive': 'false', 'normalize': 'true'};
> CREATE CUSTOM INDEX lastname_sai_idx ON cycling.cyclist_semi_pro (lastname)
> USING 'StorageAttachedIndex' WITH OPTIONS = {'ascii': 'true',
> 'case_sensitive': 'false', 'normalize': 'true'};
> CREATE CUSTOM INDEX registration_sai_idx ON cycling.cyclist_semi_pro
> (registration) USING 'StorageAttachedIndex';
> {code}
> Then I do:
> {code}
> cqlsh> SELECT * FROM cycling.cyclist_semi_pro WHERE lastname in ('Cantona',
> 'Boyd');
> InvalidRequest: Error from server: code=2200 [Invalid query] message="Cannot
> execute this query as it might involve data filtering and thus may have
> unpredictable performance. If you want to execute this query despite the
> performance unpredictability, use ALLOW FILTERING"
> cqlsh> SELECT * FROM cycling.cyclist_semi_pro WHERE lastname in ('Cantona',
> 'Boyd') ALLOW FILTERING;
> id | affiliation | age | country | firstname | lastname | registration
> ----+-----------------+-----+---------+-----------+----------+--------------
> 5 | Como Velocità | 24 | ITA | Irene | Cantona | 2012-07-22
> 20 | London Cyclists | 18 | GBR | Leslie | Boyd | 2012-12-15
> {code}
> But check this:
> {code}
> cqlsh> SELECT * FROM cycling.cyclist_semi_pro WHERE registration >
> '2010-01-01' AND registration < '2015-12-31' and lastname in ('Cantona',
> 'Boyd') allow filtering;
> ReadFailure: Error from server: code=1300 [Replica(s) failed to execute read]
> message="Operation failed - received 0 responses and 1 failures: UNKNOWN from
> localhost/127.0.0.1:7000" info={'consistency': 'ONE', 'required_responses':
> 1, 'received_responses': 0, 'failures': 1, 'error_code_map': {'127.0.0.1':
> '0x0000'}}
> {code}
> and in the logs:
> {code}
> java.lang.AssertionError: null
> at
> org.apache.cassandra.index.sai.plan.Expression.add(Expression.java:171)
> at
> org.apache.cassandra.index.sai.plan.Operation.buildIndexExpressions(Operation.java:136)
> at
> org.apache.cassandra.index.sai.plan.Operation$AndNode.analyze(Operation.java:303)
> at
> org.apache.cassandra.index.sai.plan.Operation$Node.doTreeAnalysis(Operation.java:266)
> at
> org.apache.cassandra.index.sai.plan.Operation$Node.analyzeTree(Operation.java:251)
> at
> org.apache.cassandra.index.sai.plan.Operation.buildIterator(Operation.java:185)
> at
> org.apache.cassandra.index.sai.plan.StorageAttachedIndexSearcher$ResultRetriever.<init>(StorageAttachedIndexSearcher.java:151)
> at
> org.apache.cassandra.index.sai.plan.StorageAttachedIndexSearcher.search(StorageAttachedIndexSearcher.java:107)
> at
> org.apache.cassandra.db.ReadCommand.executeLocally(ReadCommand.java:431)
> at
> org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:2184)
> at
> org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:2581)
> at
> org.apache.cassandra.concurrent.ExecutionFailure$2.run(ExecutionFailure.java:163)
> at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:143)
> {code}
> If it is not supported it should not throw and it should print appropriate
> message.
> If it is supported I guess this is a bug?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]