[ https://issues.apache.org/jira/browse/CASSANDRA-18994?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mike Adamson reassigned CASSANDRA-18994: ---------------------------------------- Assignee: Mike Adamson > 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: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org