[jira] [Updated] (CASSANDRA-11734) Enable partition component index for SASI
[ https://issues.apache.org/jira/browse/CASSANDRA-11734?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jonathan Ellis updated CASSANDRA-11734: --- Status: Open (was: Patch Available) > Enable partition component index for SASI > - > > Key: CASSANDRA-11734 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11734 > Project: Cassandra > Issue Type: Improvement > Components: CQL >Reporter: DOAN DuyHai >Assignee: DOAN DuyHai > Labels: doc-impacting, sasi, secondaryIndex > Fix For: 3.x > > Attachments: patch.txt > > > Enable partition component index for SASI > For the given schema: > {code:sql} > CREATE TABLE test.comp ( > pk1 int, > pk2 text, > val text, > PRIMARY KEY ((pk1, pk2)) > ); > CREATE CUSTOM INDEX comp_val_idx ON test.comp (val) USING > 'org.apache.cassandra.index.sasi.SASIIndex'; > CREATE CUSTOM INDEX comp_pk2_idx ON test.comp (pk2) USING > 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = {'mode': 'PREFIX', > 'analyzer_class': > 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer', > 'case_sensitive': 'false'}; > CREATE CUSTOM INDEX comp_pk1_idx ON test.comp (pk1) USING > 'org.apache.cassandra.index.sasi.SASIIndex'; > {code} > The following queries are possible: > {code:sql} > SELECT * FROM test.comp WHERE pk1=1; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5; > SELECT * FROM test.comp WHERE pk1=1 AND val='xxx' ALLOW FILTERING; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5 AND val='xxx' ALLOW FILTERING; > SELECT * FROM test.comp WHERE pk2='some text'; > SELECT * FROM test.comp WHERE pk2 LIKE 'prefix%'; > SELECT * FROM test.comp WHERE pk2='some text' AND val='xxx' ALLOW FILTERING; > SELECT * FROM test.comp WHERE pk2 LIKE 'prefix%' AND val='xxx' ALLOW > FILTERING; > //Without using SASI > SELECT * FROM test.comp WHERE pk1 = 1 AND pk2='some text'; > SELECT * FROM test.comp WHERE pk1 IN(1,2,3) AND pk2='some text'; > SELECT * FROM test.comp WHERE pk1 = 1 AND pk2 IN ('text1','text2'); > SELECT * FROM test.comp WHERE pk1 IN(1,2,3) AND pk2 IN ('text1','text2'); > {code} > However, the following queries *are not possible* > {code:sql} > SELECT * FROM test.comp WHERE pk1=1 AND pk2 LIKE 'prefix%'; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5 AND pk2 = 'some text'; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5 AND pk2 LIKE 'prefix%'; > {code} > All of them are throwing the following exception > {noformat} > ava.lang.UnsupportedOperationException: null > at > org.apache.cassandra.cql3.restrictions.SingleColumnRestriction$LikeRestriction.appendTo(SingleColumnRestriction.java:715) > ~[main/:na] > at > org.apache.cassandra.cql3.restrictions.PartitionKeySingleRestrictionSet.values(PartitionKeySingleRestrictionSet.java:86) > ~[main/:na] > at > org.apache.cassandra.cql3.restrictions.StatementRestrictions.getPartitionKeys(StatementRestrictions.java:585) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.getSliceCommands(SelectStatement.java:473) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.getQuery(SelectStatement.java:265) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:230) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:79) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) > [main/:na] > at > io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:32) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:283) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > [na:1.8.0_45] > at >
[jira] [Updated] (CASSANDRA-11734) Enable partition component index for SASI
[ https://issues.apache.org/jira/browse/CASSANDRA-11734?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Aleksey Yeschenko updated CASSANDRA-11734: -- Fix Version/s: (was: 3.8) 3.x > Enable partition component index for SASI > - > > Key: CASSANDRA-11734 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11734 > Project: Cassandra > Issue Type: Improvement > Components: CQL >Reporter: DOAN DuyHai >Assignee: DOAN DuyHai > Labels: doc-impacting, sasi, secondaryIndex > Fix For: 3.x > > Attachments: patch.txt > > > Enable partition component index for SASI > For the given schema: > {code:sql} > CREATE TABLE test.comp ( > pk1 int, > pk2 text, > val text, > PRIMARY KEY ((pk1, pk2)) > ); > CREATE CUSTOM INDEX comp_val_idx ON test.comp (val) USING > 'org.apache.cassandra.index.sasi.SASIIndex'; > CREATE CUSTOM INDEX comp_pk2_idx ON test.comp (pk2) USING > 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = {'mode': 'PREFIX', > 'analyzer_class': > 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer', > 'case_sensitive': 'false'}; > CREATE CUSTOM INDEX comp_pk1_idx ON test.comp (pk1) USING > 'org.apache.cassandra.index.sasi.SASIIndex'; > {code} > The following queries are possible: > {code:sql} > SELECT * FROM test.comp WHERE pk1=1; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5; > SELECT * FROM test.comp WHERE pk1=1 AND val='xxx' ALLOW FILTERING; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5 AND val='xxx' ALLOW FILTERING; > SELECT * FROM test.comp WHERE pk2='some text'; > SELECT * FROM test.comp WHERE pk2 LIKE 'prefix%'; > SELECT * FROM test.comp WHERE pk2='some text' AND val='xxx' ALLOW FILTERING; > SELECT * FROM test.comp WHERE pk2 LIKE 'prefix%' AND val='xxx' ALLOW > FILTERING; > //Without using SASI > SELECT * FROM test.comp WHERE pk1 = 1 AND pk2='some text'; > SELECT * FROM test.comp WHERE pk1 IN(1,2,3) AND pk2='some text'; > SELECT * FROM test.comp WHERE pk1 = 1 AND pk2 IN ('text1','text2'); > SELECT * FROM test.comp WHERE pk1 IN(1,2,3) AND pk2 IN ('text1','text2'); > {code} > However, the following queries *are not possible* > {code:sql} > SELECT * FROM test.comp WHERE pk1=1 AND pk2 LIKE 'prefix%'; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5 AND pk2 = 'some text'; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5 AND pk2 LIKE 'prefix%'; > {code} > All of them are throwing the following exception > {noformat} > ava.lang.UnsupportedOperationException: null > at > org.apache.cassandra.cql3.restrictions.SingleColumnRestriction$LikeRestriction.appendTo(SingleColumnRestriction.java:715) > ~[main/:na] > at > org.apache.cassandra.cql3.restrictions.PartitionKeySingleRestrictionSet.values(PartitionKeySingleRestrictionSet.java:86) > ~[main/:na] > at > org.apache.cassandra.cql3.restrictions.StatementRestrictions.getPartitionKeys(StatementRestrictions.java:585) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.getSliceCommands(SelectStatement.java:473) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.getQuery(SelectStatement.java:265) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:230) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:79) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) > [main/:na] > at > io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:32) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:283) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > [na:1.8.0_45]
[jira] [Updated] (CASSANDRA-11734) Enable partition component index for SASI
[ https://issues.apache.org/jira/browse/CASSANDRA-11734?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Joshua McKenzie updated CASSANDRA-11734: Reviewer: Pavel Yaskevich > Enable partition component index for SASI > - > > Key: CASSANDRA-11734 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11734 > Project: Cassandra > Issue Type: Improvement > Components: CQL >Reporter: DOAN DuyHai >Assignee: DOAN DuyHai > Labels: doc-impacting, sasi, secondaryIndex > Fix For: 3.8 > > Attachments: patch.txt > > > Enable partition component index for SASI > For the given schema: > {code:sql} > CREATE TABLE test.comp ( > pk1 int, > pk2 text, > val text, > PRIMARY KEY ((pk1, pk2)) > ); > CREATE CUSTOM INDEX comp_val_idx ON test.comp (val) USING > 'org.apache.cassandra.index.sasi.SASIIndex'; > CREATE CUSTOM INDEX comp_pk2_idx ON test.comp (pk2) USING > 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = {'mode': 'PREFIX', > 'analyzer_class': > 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer', > 'case_sensitive': 'false'}; > CREATE CUSTOM INDEX comp_pk1_idx ON test.comp (pk1) USING > 'org.apache.cassandra.index.sasi.SASIIndex'; > {code} > The following queries are possible: > {code:sql} > SELECT * FROM test.comp WHERE pk1=1; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5; > SELECT * FROM test.comp WHERE pk1=1 AND val='xxx' ALLOW FILTERING; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5 AND val='xxx' ALLOW FILTERING; > SELECT * FROM test.comp WHERE pk2='some text'; > SELECT * FROM test.comp WHERE pk2 LIKE 'prefix%'; > SELECT * FROM test.comp WHERE pk2='some text' AND val='xxx' ALLOW FILTERING; > SELECT * FROM test.comp WHERE pk2 LIKE 'prefix%' AND val='xxx' ALLOW > FILTERING; > //Without using SASI > SELECT * FROM test.comp WHERE pk1 = 1 AND pk2='some text'; > SELECT * FROM test.comp WHERE pk1 IN(1,2,3) AND pk2='some text'; > SELECT * FROM test.comp WHERE pk1 = 1 AND pk2 IN ('text1','text2'); > SELECT * FROM test.comp WHERE pk1 IN(1,2,3) AND pk2 IN ('text1','text2'); > {code} > However, the following queries *are not possible* > {code:sql} > SELECT * FROM test.comp WHERE pk1=1 AND pk2 LIKE 'prefix%'; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5 AND pk2 = 'some text'; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5 AND pk2 LIKE 'prefix%'; > {code} > All of them are throwing the following exception > {noformat} > ava.lang.UnsupportedOperationException: null > at > org.apache.cassandra.cql3.restrictions.SingleColumnRestriction$LikeRestriction.appendTo(SingleColumnRestriction.java:715) > ~[main/:na] > at > org.apache.cassandra.cql3.restrictions.PartitionKeySingleRestrictionSet.values(PartitionKeySingleRestrictionSet.java:86) > ~[main/:na] > at > org.apache.cassandra.cql3.restrictions.StatementRestrictions.getPartitionKeys(StatementRestrictions.java:585) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.getSliceCommands(SelectStatement.java:473) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.getQuery(SelectStatement.java:265) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:230) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:79) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) > [main/:na] > at > io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:32) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:283) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > [na:1.8.0_45] > at >
[jira] [Updated] (CASSANDRA-11734) Enable partition component index for SASI
[ https://issues.apache.org/jira/browse/CASSANDRA-11734?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] DOAN DuyHai updated CASSANDRA-11734: Status: Patch Available (was: Open) > Enable partition component index for SASI > - > > Key: CASSANDRA-11734 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11734 > Project: Cassandra > Issue Type: Improvement > Components: CQL >Reporter: DOAN DuyHai >Assignee: DOAN DuyHai > Labels: doc-impacting, sasi, secondaryIndex > Fix For: 3.8 > > Attachments: patch.txt > > > Enable partition component index for SASI > For the given schema: > {code:sql} > CREATE TABLE test.comp ( > pk1 int, > pk2 text, > val text, > PRIMARY KEY ((pk1, pk2)) > ); > CREATE CUSTOM INDEX comp_val_idx ON test.comp (val) USING > 'org.apache.cassandra.index.sasi.SASIIndex'; > CREATE CUSTOM INDEX comp_pk2_idx ON test.comp (pk2) USING > 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = {'mode': 'PREFIX', > 'analyzer_class': > 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer', > 'case_sensitive': 'false'}; > CREATE CUSTOM INDEX comp_pk1_idx ON test.comp (pk1) USING > 'org.apache.cassandra.index.sasi.SASIIndex'; > {code} > The following queries are possible: > {code:sql} > SELECT * FROM test.comp WHERE pk1=1; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5; > SELECT * FROM test.comp WHERE pk1=1 AND val='xxx' ALLOW FILTERING; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5 AND val='xxx' ALLOW FILTERING; > SELECT * FROM test.comp WHERE pk2='some text'; > SELECT * FROM test.comp WHERE pk2 LIKE 'prefix%'; > SELECT * FROM test.comp WHERE pk2='some text' AND val='xxx' ALLOW FILTERING; > SELECT * FROM test.comp WHERE pk2 LIKE 'prefix%' AND val='xxx' ALLOW > FILTERING; > //Without using SASI > SELECT * FROM test.comp WHERE pk1 = 1 AND pk2='some text'; > SELECT * FROM test.comp WHERE pk1 IN(1,2,3) AND pk2='some text'; > SELECT * FROM test.comp WHERE pk1 = 1 AND pk2 IN ('text1','text2'); > SELECT * FROM test.comp WHERE pk1 IN(1,2,3) AND pk2 IN ('text1','text2'); > {code} > However, the following queries *are not possible* > {code:sql} > SELECT * FROM test.comp WHERE pk1=1 AND pk2 LIKE 'prefix%'; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5 AND pk2 = 'some text'; > SELECT * FROM test.comp WHERE pk1>=1 AND pk1<=5 AND pk2 LIKE 'prefix%'; > {code} > All of them are throwing the following exception > {noformat} > ava.lang.UnsupportedOperationException: null > at > org.apache.cassandra.cql3.restrictions.SingleColumnRestriction$LikeRestriction.appendTo(SingleColumnRestriction.java:715) > ~[main/:na] > at > org.apache.cassandra.cql3.restrictions.PartitionKeySingleRestrictionSet.values(PartitionKeySingleRestrictionSet.java:86) > ~[main/:na] > at > org.apache.cassandra.cql3.restrictions.StatementRestrictions.getPartitionKeys(StatementRestrictions.java:585) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.getSliceCommands(SelectStatement.java:473) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.getQuery(SelectStatement.java:265) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:230) > ~[main/:na] > at > org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:79) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:208) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:239) > ~[main/:na] > at > org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:224) > ~[main/:na] > at > org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115) > ~[main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507) > [main/:na] > at > org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401) > [main/:na] > at > io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:32) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:283) > [netty-all-4.0.36.Final.jar:4.0.36.Final] > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > [na:1.8.0_45] > at >